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

然后就可以正常使用了

相关推荐
Ruiery4 小时前
Linux 6.6内核 CPU 深度解析(七):调度器启动 — 从单核到多核,调度器分阶段点亮
linux·运维·服务器
50万马克的面包4 小时前
CSDN-栈队列数组-知识点整理
linux·运维·服务器
MicrosoftCloud4 小时前
用户权限 04|/etc/sudoers 安全配置:从最小授权到「别把 ALL 随便给人」
运维·安全·ubuntu·sudo·sudoers
꯭自꯭闭꯭5 小时前
达梦事物特性及MVCC
linux·运维·数据库
亚川楼宇自控系统数据中心厂家7 小时前
实验室智能化管理系统|人环物智一体化管控平台
运维
zmsup8 小时前
Agent 上下文调优:结合 OpsArk 运维智能体,设计模型每一步真正需要的信息
运维·agent·上下文压缩·运维智能体·上下文调优
吴声子夜歌11 小时前
Nginx应用与运维——Nginx负载均衡应用实战(二)
运维·nginx·负载均衡
lisanmengmeng11 小时前
NRPE 添加命令(一)
linux·运维·服务器
pt104311 小时前
CML网络仿真入门-2:使用CML模拟网络实验环境
运维·网络协议
沫璃染墨12 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理