经测试,合并了rockos驱动的opencloudos内核的KVM工作正常。具体而言,内核源码树中的tools/testing/selftests/kvm 被交叉编译,其产物被发送到Megrez上以进行基础功能测试。通过后又进行了QEMU启动Ubuntu镜像的测试。QEMU测试可参考:https://milkv.io/zh/docs/megrez/development-guide/kvm。
基础功能测试显示linux 6.6下,kvm没有实现部分指令集扩展,但似乎不影响基本功能。
QEMU测试与参考示例的区别在于,opencloudos的riscv64软件源里面并没有efi格式的uboot(只有bin格式的)。需要从rockos的软件源下载u-boot-qemu_2024.01+dfsg-5_all.deb并提取其中的uboot.efi,然后:
sudo qemu-system-riscv64 --enable-kvm -M virt -cpu host -m 16384 -smp 4 -nographic -kernel ./uboot.elf -drive file=ubuntu-25.04-preinstalled-server-riscv64.img,format=raw,if=virtio,snapshot=on
充分利用megrez的大内存和KVM来启动虚拟机,并且能够将磁盘镜像作为快照打开,这样一来img镜像就不会被修改。
由此,在将来,Megrez也许可以用于助力opencloudos软件包的测试开发,在通过kvm保持性能的同时,避免构建依赖对rootfs的污染(每次重启,对磁盘的变更均被还原)。
更多内容,参考:
https://gitee.com/OpenCloudOS/Document/blob/master/docs/riscv/比对不同平台构建产物行为是否一致.md
以上成果来自开发者 Malachite