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·运维·服务器
s19134838482d3 小时前
vlan实验报告
运维·服务器·网络
想唱rap4 小时前
线程的同步与互斥
linux·运维·服务器·数据库·mysql
格林威4 小时前
SSD 写入速度测试命令(Linux)(基于工业相机高速存储)
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
勇闯逆流河4 小时前
【LInux】linux控制(进程替换,自主shell的实现详解)
linux·运维·服务器
IMPYLH5 小时前
Linux 的 ls 命令
linux·运维·服务器·bash
Agent产品评测局5 小时前
企业发票管理自动化落地,验真归档全流程实现方法:2026企业级智能体选型与实测指南
运维·网络·人工智能·ai·chatgpt·自动化
wwj888wwj5 小时前
Ansible基础(复习1)
linux·运维·ansible
DYuW5gBmH5 小时前
Anthropic 开源 Bloom:基于 LLM 的自动化行为评估框架
运维·microsoft·自动化