Stratovirt安装及使用

文章目录

安装

硬件要求

处理器架构:仅支持AArch64和x86_64处理器架构。AArch64需要ARMv8及更高版本且支持虚拟化扩展;x86_64支持VT-x。

软件要求

操作系统:openEuler 20.09及更高版本

我当前安装的stratovirt版本是2.1.0,不同版本的命令可能有些许改动,但是流程都一样

bash 复制代码
yum install stratovirt
# 安装nmap
yum install -y nmap
yum install rust
yum install cargo
# 检查设备是否存在
ls /dev/vhost-vsock
# 如果不存在,加载内核模块
modprobe vhost_vsock
# 安装qemu和libvirt
yum install -y qemu libvirt

创建虚拟机

使用Stratovirt创建一个openEuler-21.03的虚拟机,并且网络模式设置为桥接模式

1、宿主机配置网络桥接模式

bash 复制代码
# 配置网络桥接模式,安装网桥管理工具
yum install -y bridge-utils iproute
# 创建网桥
brctl addbr qbr0
# 将宿主机的物理网卡(如 eth18)加入网桥
# 注意:这会断开当前 SSH 连接,建议通过 console 操作或提前配置
brctl addif qbr0 ens18
# 成功如下图
bash 复制代码
# 启动网桥和tap设备
ip link set qbr0 up
ip tuntap add tap0 mode tap
brctl addif qbr0 tap0
ip link set tap0 up
bash 复制代码
# 这个时候宿主机原来的网卡就不能用了,已经被当成网桥设备了,所以要重新配置
# 1、清除ens18上的ip
ip addr flush dev ens18
# 2. 将 IP 配置到 qbr0 网桥
sudo ip addr add 192.168.101.99/24 dev qbr0
# 3. 添加默认网关(如果原来有)
sudo ip route add default via 192.168.101.1

永久配置网桥

bash 复制代码
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens18
# 写入如下内容
DEVICE=ens18
TYPE=Ethernet
ONBOOT=yes
BRIDGE=qbr0
bash 复制代码
sudo vi /etc/sysconfig/network-scripts/ifcfg-qbr0
# 写入如下内容
DEVICE=qbr0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.101.99
NETMASK=255.255.255.0
GATEWAY=192.168.101.1
DNS1=8.8.8.8
DNS2=114.114.114.114
bash 复制代码
# 重启网络服务
sudo systemctl restart NetworkManager

2、启动虚拟机

bash 复制代码
# 宿主机创建虚拟机文件存放地址
mkdir /var/lib/stratovirt & cd /var/lib/stratovirt
# 获取欧拉官网的rootfs镜像和linux内核镜像
wget https://archives.openeuler.openatom.cn/openEuler-21.03/stratovirt_img/x86_64/vmlinux.bin   # linux内核镜像
wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/openEuler-21.03-stratovirt-x86_64.img.xz												# rootfs镜像
# 解压内核镜像
xz -d openEuler-21.03-stratovirt-x86_64.img.xz
# 扩容到20G
yum install qemu-img
qemu-img resize /var/lib/stratovirt_euler_vm/openEuler-21.03-stratovirt-x86_64.img 20G

# 清理可能存在的 socket 文件
rm -f /tmp/stratovirt.socket
# 用stratovirt启动虚拟机,启动就用这个命令,停止就查询stratovirt进程,杀死就行,重启就继续这个命令
/usr/bin/stratovirt \
    -machine microvm \
    -kernel /var/lib/stratovirt/vmlinux.bin \
    -append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
    -smp cpus=2 \
    -m 4G \
    -drive file=/var/lib/stratovirt/openEuler-21.03-stratovirt-x86_64.img,id=rootfs,readonly=off,direct=off \
    -device virtio-blk-device,drive=rootfs,id=rootfs \
    -netdev tap,id=net0,ifname=tap0 \
    -device virtio-net-device,netdev=net0 \
    -qmp unix:/tmp/stratovirt.socket,server,nowait \
    -serial stdio
# 默认密码是root,openEuler12#$

启动参数说明

参数 说明
-kernel 内核镜像路径
-machine microvm 轻量级虚拟机模式,使用 MMIO 总线
-initrd initramfs 镜像路径
-append 内核启动参数,root=/dev/vda3 需根据实际分区调整
-drive file=...img,id=rootfs,readonly=off,direct=off 磁盘后端:指定镜像文件,id 供 device 引用,direct=off 使用缓存模式
-netdev tap,id=net0,ifname=tap0 网络后端:使用宿主机 tap0 网卡,id 供 device 引用
-device virtio-net-device,netdev=net0 创建 virtio 网卡,挂载到 MMIO 总线,虚拟机内看到的是 eth0
-qmp unix:/tmp/stratovirt.socket,server,nowait 开启 QMP 管理接口,通过 socket 控制虚拟机生命周期
-serial stdio 表示创建完虚拟机立刻就进入虚拟机控制台

4、虚拟机配置ip地址

bash 复制代码
# 查看网卡名称(我这里是eth0)
ip addr

# 配置静态 IP(选一个和宿主机同网段的空闲 IP)
ip addr add 192.168.101.100/24 dev eth0
ip link set eth0 up
ip route add default via 192.168.101.1

# 配置 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf

# 测试网络
ping 192.168.101.1

永久配置

bash 复制代码
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF'
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.101.100
NETMASK=255.255.255.0
GATEWAY=192.168.101.1
DNS1=8.8.8.8
EOF

systemctl restart network

虚拟机配置虚拟机yum源,21.03版本yum源不可用

bash 复制代码
# 备份原有源
mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak

# 换成归档源
cat > /etc/yum.repos.d/openEuler.repo << 'EOF'
[OS]
name=OS
baseurl=https://archives.openeuler.openatom.cn/openEuler-21.03/OS/x86_64/
enabled=1
gpgcheck=0

[everything]
name=everything
baseurl=https://archives.openeuler.openatom.cn/openEuler-21.03/everything/x86_64/
enabled=1
gpgcheck=0
EOF

# 清理缓存并测试
yum clean all
yum makecache

为虚拟机扩容

bash 复制代码
lsblk
fdisk -l /dev/vda
resize2fs /dev/vda

虚拟机安装ssh服务,scp_clinet

bash 复制代码
yum install -y openssh-server
systemctl start sshd
systemctl enable sshd
yum install -y openssh-clients

然后就可以正常使用了

相关推荐
寺中人3 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
V哥AI增长3 小时前
Schema.org 结构化数据与GEO技术落地:AI引擎引用机制与JSON-LD部署实证研究
大数据·运维·人工智能
小张成长计划..4 小时前
【Linux】18:基础IO
linux·运维·服务器
东东最爱敲键盘5 小时前
二阶段总结
运维
Benszen5 小时前
云计算基础-13:Linux网络管理实战-1
linux·运维·云计算
扬帆破浪5 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
zt1985q6 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
具身智能进化论6 小时前
协作机器人产业进入规模化部署期,未来几年的增长从何而来
大数据·运维·人工智能·机器人·自动化·工厂方法模式
yunyi8 小时前
改个 SSH 端口,我把自己锁在了服务器外面
运维·后端
九硕智慧建筑一体化厂家10 小时前
从电费支出到碳资产收益,直流照明如何让商业楼宇实现柔性用能
运维·人工智能·智慧城市