首先,一些背景知识:
我想我发现了 KVM 的一个错误,至少在我的系统上是这样。
当我尝试通过 virt-manager 安装 Windows XP 时,安装程序中止/重新启动。
但是如果我运行原始 qemu-system-i386
命令(见下文),它就会成功。
通过查看 /var/log/libvirt/qemu/...
中的日志,关键区别在于“accel=kvm”参数(相当于 -enable-kvm
)。
因此,缩小范围,此命令成功:
qemu-system-i386 \
-m 512 \
-usb \
-cdrom path/to/WinXP_CD.iso \
-boot d \
"$image"
但是下一个命令会导致无数次重新启动。 XP 安装程序启动,但在扫描系统后,只是重新启动而不是继续:
qemu-system-i386 \
-enable-kvm \
-m 512 \
-usb \
-cdrom path/to/WinXP_CD.iso \
-boot d \
"$image"
也许您不相信我的系统上 KVM 正常工作。 但是,我可以使用 KVM 安装其他操作系统(例如:FreeBSD)。这似乎是 XP 特定的。
现在,我的问题是:
如何强制 libvirt 不对所选虚拟机使用 KVM?理想情况下通过 virt-manager 进行,但我也可以使用 virsh 。 我想象在困惑的 XML 中的某个地方有一些设置,但我不是很熟悉。
旁白:知道我应该在哪里记录这个错误吗?反对KVM?利维尔特? QEMU?
最佳答案
好吧,我设法解决了这个问题,但我确信还有更漂亮的方法。
基本上,-enable-kvm
选项对应于域 XML 文件中的 type="kvm"
值。请参阅libvirt documentation .
但是似乎没有办法从virt-manager
改变这一点。我对 virsh 还不够熟悉,还没有这样做。所以,我只是手动编辑了我的 XML 文件,如下所示:
$ sudoedit /etc/libvirt/qemu/myxp.xml
我是在 virt-manager 关闭时执行此操作的。 当我打开它时,该设置似乎没有保留。由于某种原因,我似乎需要运行:
$ sudo virsh define /etc/libvirt/qemu/myxp.xml
让它粘住。
无论如何,在那段小舞蹈之后,然后在virt-manager
中,在我的虚拟机的“概述”选项卡中,它显示“Hypervisor:QEMU TCG”,之前有“KVM”。
现在,XP 安装程序可以运行了!
同样,这可能是一个更好的方法,但目前已经足够好了。
据推测,禁用 KVM 时性能会较差。我仍然不知道该向谁发送错误,也不知道这是否是 QEMU 还是 KVM 问题的核心。
关于qemu - libvirt:如何防止 "accel=kvm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499661/