以StratoVirt为VMM的虚拟机启动

107次阅读
没有评论

共计 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并解压
以StratoVirt为VMM的虚拟机启动

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
以StratoVirt为VMM的虚拟机启动

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的高级集成和自动化的能力,使得可以通过编程方式控制和管理虚拟化环境。
以StratoVirt为VMM的虚拟机启动

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)

正文完
 
honghai
版权声明:本站原创文章,由 honghai 2023-10-12发表,共计1892字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)