Introduction to kvm-unit-test
1. Introduction
kvm-unit-tests是kvm的unit tests。kvm-unit-tests是小型的guest操作系统,通常仅执行数十行C和汇编程序测试代码就能获得测试结果。
kvm-unit-tests可以用来测试开发,同时,对于初学者,例如根据vmx的测试,去kvm源码中仔细研究这部分功能的实现,有助于找到入口点。
2. 编译
1 | git clone https://gitlab.com/kvm-unit-tests/kvm-unit-tests.git |
编译成功后,会发现x86 目录中有很多* .elf文件,每个文件都是在特定环境下进行测试的测试用例。假设我们用x86/apic.elf作为测试用例。
3. 运行kvm-unit-tests
软件安装:
1 | sudo apt-get install grub-pc-bin xorriso |
构建image
1 | mkdir -p iso/boot/grub/bin |
edit iso/boot/grub/grub.cfg
:
1 | set default=0 |
1 | grub-mkrescue -o test.img iso |
4. result
1 | qemu-system-x86_64 -machine q35,kernel_irqchip=split,accel=kvm \ |
当需要enable vnc时,qemu无需
-display none
项。当需要在qemu中运行hypervisor时,qemu需要添加
-cpu host
。- 如果出现问题,则
cat /sys/module/kvm_intel/parameters/nested
。如果显示N,则需要modprobe kvm_intel nested=1
。
- 如果出现问题,则
5. new method
运行kvm unit test的另一种方法是:1
2
3
4
5
6sudo qemu-system-x86_64 -machine q35,kernel_irqchip=split,accel=kvm \
-m 4G -smp cpus=4 -enable-kvm \
-serial stdio \
-device isa-debug-exit -device intel-iommu,intremap=on,caching-mode=on,device-iotlb=on \
-cpu host \
-kernel ./x86/vmx.flat
or1
2
3
4
5
6
7
8
9
10
11 ! /bin/bash -x
qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-smp 2 \
-cpu host \
-serial stdio \
-device pc-testdev \
-display none \
-device isa-debug-exit,iobase=0xf4,iosize=0x4 \
-kernel ./x86/xsave.flat
参考资料: