qemu - libvirt:如何防止 "accel=kvm"

标签 qemu kvm libvirt

首先,一些背景知识:

我想我发现了 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 特定的。

现在,我的问题是:

  1. 如何强制 libvirt 对所选虚拟机使用 KVM?理想情况下通过 virt-manager 进行,但我也可以使用 virsh 。 我想象在困惑的 XML 中的某个地方有一些设置,但我不是很熟悉。

  2. 旁白:知道我应该在哪里记录这个错误吗?反对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/

相关文章:

linux - 在微不足道的 `sleep 1` 的情况下,是什么导致 QEMU 的开销?

android-studio - Vagrant 安装Android Emulator和Minikube后机器处于 'gurumeditation'状态

virtual-machine - 虚拟机安装错误

windows-10 - qemu:无法加载 PC BIOS 'bios-256k.bin'

linux - qemu makefile错误找不到我知道的库

android - 在 Android Studio 2.3.3 中为 AVD 提供额外的命令行选项?

kvm - DomainEventRegisterAny() 未注册用于磁盘更改的 Libvirt 事件

Python libvirt API - 创建虚拟机

ubuntu - QEMU 未安装在 Ubuntu 中