我正在尝试在我的笔记本电脑 ARM Chromebook 上虚拟化适用于 ARM 32 位的 FreeBSD 13.2,其中 qemu 版本为 5.1,启用了 KVM,从源代码安装了 libvirt 和 virt-manager,一切正常。主机操作系统是 Devuan 5。事实上,使用这些参数,FreeBSD 能够完全启动:
UEFICODE=/usr/share/AAVMF/AAVMF32_CODE.fd
UEFIVARS=/usr/share/AAVMF/AAVMF32_VARS.fd
DISK=/Dati/img/FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img
qemu-system-arm -enable-kvm -serial stdio -m 1024 -M virt -cpu cortex-a15
-drive if=pflash,format=raw,unit=0,file=$UEFICODE
-drive if=pflash,format=raw,unit=1,file=$UEFIVARS
-drive file=$DISK,media=disk,format=raw
-device i82559b,netdev=net0,mac="52:54:00:12:34:55"
-netdev type=user,id=net0 -device virtio-gpu-pci -usb
-device nec-usb-xhci -device usb-kbd -device usb-mouse
-device vmware-svga,id=video0,vgamem_mb=16
正如您可以从此启动日志消息中看到的:
https://pastebin.ubuntu.com/p/VBtJ5bTTCz/
所以,这个论点是好的,因为 qemu 可以识别 virtio 磁盘:
-drive file=$DISK,media=disk,format=raw \
但是 libvirt 使用的这些参数无法启动 FreeBSD,因为附加的 virtio 磁盘无法识别(我也尝试使用 SATA 磁盘,但也无法识别):
<disk type="file" device="disk">
<driver name="qemu" type="raw"/>
<source file="/Dati/img/FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</disk>
在这里您可以看到 libirt 使用的完整 XML 代码:
https://pastebin.ubuntu.com/p/hpGmgp2773/
这是与 virtio 磁盘(FreeBSD 映像文件)对应的代码部分
qemu 和 libvirt 参数有什么区别?您对原因有一些模糊的了解吗?我认为问题是由 qemu 和/或 libvirt 引起的。
我尝试在 BIOS 设置中启动映像并尝试直接启动映像磁盘,但我看到了此错误:
如果你想看整个启动顺序,你可以看一下我录制的这个短视频:
https://drive.google.com/file/d/1kRoAFH_6DH-vNEmNmg4PEQ8lQmKZnUi2/view