KVM现在非常流行,多家主流云计算提供商已经用KVM取代了XEN作为云计算的默认hypervisor,所以我们有必要学习KVM的原理,特别是使用QEMU模拟的硬件来调试KVM,能达到事半功倍的效果。现在arm64的生态也越来越完善,对云计算提供商越来越有吸引力,特别是arm64 v8.1加入的VHE特性,虚拟化硬件架构上理论上比X86优越,以后前景看好。
下面我们介绍一下怎么使用QEMU来搭建KVM on ARM64的学习、调试环境。
主要思路是在X86主机上,使用QEMU来模拟(通过tcg方式)arm64的硬件(模拟实现了EL2),然后在主机上交叉编译linux内核,此内核打开KVM功能,然后在arm64硬件上安装新内核,此时KVM已经运行起来,然后就可以在arm64硬件上进行调试了。
-
参考基于QEMU搭建XEN on ARM64的开发环境,搭建基本的arm64 ubuntu环境。
-
备份ubuntu.qcow2。后续arm64虚拟机中会用到这个文件。
cp ubuntu.qcow2 ubuntu.qcow2.bak
-
扩大磁盘空间,将扩大的空间加入文件系统中
a. 利用qemu-img命令扩大虚拟磁盘空间qemu-img resize ubuntu.qcow2 +150G
b. 启动arm64虚拟机
qemu-system-aarch64 \ -M virt,gic_version=3,virtualization=true,type=virt \ -cpu cortex-a57 -nographic -smp 8 -m 8800 -bios QEMU_EFI.fd \ -drive if=none,file=ubuntu.qcow2,format=qcow2,id=hd0 -device virtio-blk-device