4. Testing on QEMU
x86_64 QEMU
Place loadvmm.efi and bitvisor.elf in a directory (e.g. ~/x86_test/) and run:
qemu-system-x86_64 \
-cpu host -enable-kvm \
-bios /path/to/OVMF.fd \
-drive file=fat:rw:~/x86_test/,format=raw \
-cdrom /path/to/bootable.iso \
-nic user,model=e1000e \
-M q35 -m 4096
-bios /path/to/OVMF.fd— UEFI firmware (OVMF)-nic user,model=e1000e— emulates an Intel NIC; enableNET_PRO1000in Kconfig- Add
-boot menu=onto give more time to press ESC for the setup menu
After the VM starts, press ESC repeatedly to enter the setup menu and launch the EFI Shell.
Switch to the filesystem containing BitVisor and run loadvmm.efi.
KVM and APICv
On recent Intel CPUs, having KVM’s APICv enabled while running BitVisor can cause timer check panics or SMP bring-up stalls.
Check current value:
cat /sys/module/kvm_intel/parameters/enable_apicv
Disable temporarily:
sudo modprobe -r kvm-intel && sudo modprobe kvm-intel enable_apicv=N
To make the setting permanent, add options kvm-intel enable_apicv=N to a file under /etc/modprobe.d/.
SMP Note
Linux guest SMP bring-up can be unstable due to INIT/SIPI timing issues under KVM.
Setting .localapic_intercept = 1 in defconfig enables BitVisor’s INIT-SIPI and APIC access emulation, which stabilizes operation under QEMU + KVM.
AArch64 QEMU
Place the AArch64 builds of bitvisor.elf and loadvmm.efi in the same directory, then run:
qemu-system-aarch64 \
-m 8G \
-M virt,gic-version=3,virtualization=true \
-cpu neoverse-n1 \
-bios /path/to/aarch64/qemu_efi.fd \
-drive file=fat:rw:/path/to/bitvisor_dir/,format=raw \
-cdrom /path/to/aarch64/linux.iso \
-nic user,model=e1000e \
-serial vc:1024x768 \
-smp 4
- Tested CPUs:
-cpu neoverse-n1or-cpu a64fx - Avoid
-cpu max— it enables optional features not yet supported - For devicetree-based device discovery, add
acpi=offto-Mand enableCONFIG_DEVICETREE=yin Kconfig
Boot procedure is the same as x86_64: press ESC to enter setup, then launch the EFI Shell and run loadvmm.efi.
AArch64 BitVisor is experimental. Booting Linux with virtio_net networking has been verified.