共计 1892 个字符,预计需要花费 5 分钟才能阅读完成。
1. 简介
StratoVirt介绍 (openeuler.org)
已有Qemu了,为什么还要StratoVirt? – 知乎 (zhihu.com)
2. 安装
yum -y install stratovirt
2.1. 源码安装
$ git clone https://gitee.com/openeuler/stratovirt.git
$ cd stratovirt
$ make build
3. KVM支持
获取/dev/kvm设备的读写权限
sudo setfacl -m u:${USER}:rw /dev/kvm
4. 测试
4.1. 生成rootfs
Rootfs是操作系统的根文件系统,包含了操作系统的完整目录结构、文件和配置信息。它是操作系统的基础,提供了文件系统的框架和环境,使得操作系统能够正常启动和运行。
Rootfs通常位于存储介质(如硬盘、闪存等)上,可以是一个完整的文件系统镜像文件(如ext4、NTFS等),也可以是一个挂载的目录。Rootfs包含了操作系统所需的核心组件,如库文件、可执行文件、配置文件、设备节点等。
与Initramfs不同,Rootfs是系统正常运行时使用的持久文件系统,用于提供操作系统的完整功能和服务。它包含了用户空间程序、系统工具和应用程序,以及用户数据和配置文件。
dd if=/dev/zero of=./rootfs.ext4 bs=1G count=10 //新建设备10G
mkfs.ext4 ./rootfs.ext4 //格式化文件系统
mount ./rotfs.ext4 /mnt/rootfs //挂载到目录
wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/aarch64/alpine-minirootfs-3.18.0-aarch64.tar.gz //下载最新的rootfs并解压

4.2. 生成内核镜像
编译内核用时太长,我们现在直接使用stratovirt官方提供的一个可执行的内核压缩镜像,具体的内核编译详见:[[Linux/Linux内核/Linux 内核调试/内核调试与分析工具|内核调试与分析工具]]
下载地址为:https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/
此地址下也有rootfs;则可以路过步骤4.1
4.3. 启动
stratovirt \
-machine microvm \
-smp 4 \
-m 2048 \
-kernel ./vmlinux.bin \
-append "console=ttyS0 root=/dev/vda reboot=k panic=1" \
-drive file=./openEuler-22.03-LTS-stratovirt-aarch64.img,id=rootfs,readonly=off \
-device virtio-blk-device,drive=rootfs,id=rootfs \
-qmp unix:/tmp/stratvirt.socket,server,nowait \
-serial stdio

4.3.1. 连接虚拟机
ncat -U /tmp/stratvirt.socket //此soket通信使用的是QMP协议(QEMU Machine Protocol)
QMP(QEMU Machine Protocol)是一种用于与QEMU(Quick Emulator)虚拟化软件交互的协议。QMP允许客户端应用程序通过发送命令和查询来与运行QEMU的虚拟机或虚拟化实例进行通信。它提供了一种机制,通过该机制,客户端可以控制虚拟机的行为、查询虚拟机的状态以及监视虚拟机的事件。
QMP基于JSON-RPC(JavaScript Object Notation Remote Procedure Call)协议,使用JSON格式进行数据交换。它提供了一组命令和事件,用于执行各种管理任务,例如启动和停止虚拟机、创建和删除设备、管理网络和存储等。
通过QMP,客户端可以与QEMU实例进行实时交互,并进行复杂的配置和管理操作。它提供了与QEMU的高级集成和自动化的能力,使得可以通过编程方式控制和管理虚拟化环境。

5. 参考资料
docs/quickstart.md · openEuler/stratovirt – Gitee.com
Index of /alpine/latest-stable/releases/aarch64/ (alpinelinux.org)
docs/zh/docs/StratoVirt · openEuler/docs – 码云 – 开源中国 (gitee.com)
正文完
2023-10-12