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
参考资料: