文章目录
安装
硬件要求
处理器架构:仅支持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
然后就可以正常使用了