Windows VM 可通过 QEMU CLI 运行,但通过 virt-manager 产生 BSOD

Windows VM 可通过 QEMU CLI 运行,但通过 virt-manager 产生 BSOD

概述

qemu我有一个 Windows 7 虚拟映像,可以使用终端中的以下命令成功启动它:

qemu-system-x86_64 -m 4096 -boot d -enable-kvm -smp 2 -net nic -net user -hda /home/jimjamz/vm/qemu/win7_enterprise.img

但是,当我通过导入现有磁盘映像在 virt-manager 中创建新的 VM 时,尝试启动客户操作系统后立即收到 BSOD: 客户操作系统 BSOD 截图。

附加信息

在将虚拟磁盘映像导入 virt-manager 时,我使用了 virt-manager 设置的默认配置。我没有做任何更改。

我可以启动客户操作系统中的 Windows 错误恢复控制台,但它无法找到或解决问题。 Windows 错误恢复报告

dmesg -wH主机上没有报告任何异常:

[  +0.155447] audit: type=1400 audit(1669065509.580:83): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="libvirt-9e0d5e45-b501-44d2-8aad-cf2120ef7065" pid=8911 comm="apparmor_parser"
[  +1.845672] virbr0: port 2(vnet0) entered learning state
[  +2.015921] virbr0: port 2(vnet0) entered forwarding state
[  +0.000001] virbr0: topology change detected, propagating

然后,我在 virt-manager 中更改了一些虚拟机硬件配置,从双核 CPU 改为单核 CPU,删除了所有非优先级模拟硬件设备(USB 控制器、音频以及 NIC 和虚拟网络),但是仍然我收到了 BSOD。

我可以看到,每次使用 virt-manager 启动操作系统时,它都会设置root:root虚拟映像的权限。如果我将用户和组权限更改回本地用户(就像仅使用 CLI 时一样qemu),我可以像以前一样从 QEMU CLI 命令启动映像,但不能从 virt-manager 启动。我以 root 用户身份启动了 virt-manager,并尝试启动虚拟机,但仍然收到相同的 BSOD,因此我无法断定它是否与文件权限有关。

虚拟机管理程序详细信息(来自 virt-manager):

  • 虚拟机管理程序:KVM
  • 架构:x86_64
  • 模拟器:/usr/bin/qemu-system-x86_64
  • 芯片组: Q35
  • 固件: BIOS
  • 客户操作系统:Windows 7 Enterprise x64
  • 主机操作系统:Debian Buster 变体
  • QEMU 模拟器版本 3.1.0(Debian 1:3.1+dfsg-8+deb10u9)
  • virt-manager 2.0.0

答案1

当您使用时-hda,QEMU 会创建一个虚拟 IDE(PATA)控制器并将虚拟 IDE 驱动器作为第一个通道上的第一个设备连接。虚拟管理器可能默认使用虚拟 SCSI,因为它更高效/更快。

您可以将虚拟机更改为具有 IDE 控制器,并将虚拟硬盘驱动器连接到那里。然后它应该可以正常启动。

如果你想转换,除了你的虚拟硬盘,使用虚拟 SCSI 添加一个小的虚拟驱动器。虚拟SCSI 应该提供最佳性能。启动并安装所有驱动程序后,您可以将系统驱动器切换到虚拟 SCSI(或任何其他)控制器。

Windows 无法启动尚未知晓和启用的存储控制器,这一点是出了名的。当 AHCI(SATA 控制器标准)刚出现时,您也遇到了同样的问题,尤其是在 BIOS/UEFI 设置中,您可以在 IDE 和 AHCI 甚至 RAID 模式之间切换 SATA 控制器。

相关内容