在 Debian 10 中的 KVM 中模拟 IDE

在 Debian 10 中的 KVM 中模拟 IDE

我们有一台装有 Windows Server 2008(不是 R2)的旧机架服务器

我们的目标是将其虚拟化并转移到新的硬件中。

新PC以Debian10为主要操作系统,并启用了KVM。

我已经使用 disk2vhd(由 MS 提供)将整个 Windows 系统转换为映像。

问题是,一旦我在 KVM 中设置虚拟机,Windows 就会在启动时出现 BSOD。
我开始调查导致这种情况的原因,结果发现,这个 vhd 需要 IDE 仿真。

我将 vhd 放入安装了 VirtualBox 的另一台 Windows 机器中,发现了这个问题。起初它也会 BSOD,但我注意到 VirtualBox 使用了 SATA 控制器。删除它,添加 IDE 控制器,分配 vhd 磁盘,它就可以正常工作了。系统正常启动。

然后我尝试找到在 KVM 中启用 IDE 控制器的方法,但没有成功。
控制器下拉菜单中没有 IDE 选择。
有人建议更改虚拟机配置文件并写入“bus=ide”而不是其中的内容,但这也不起作用。

所以我需要一些帮助来弄清楚这一切。我还有什么其他选择?我如何强制 KVM 为这台机器使用 IDE?

我甚至不确定为什么它需要 IDE 控制器。据我所知,它使用 SAS HDD,因此它应该可以作为 SCSI 驱动器工作(?),但将 SCSI 设置为 KVM 内的控制器并不能解决问题。

答案1

不要惊慌——有一种方法可以解决这个问题,但它有点复杂。

安装 virtualbox,在那里设置一个临时 VM,其中包含要移动到 KVM 的客户启动盘、IDE 控制器,以及额外的 sata 控制器上的另一个小的空白磁盘映像。

它应该可以正常启动(如果您配置了正确类型的控制器,YMMV),因为 Windows 期望存在这种类型的控制器,并且出现蓝屏,因为所有其他磁盘控制器驱动程序都未启用(实际上是故意禁用)。

然后,它会注意到现在还有一个 SATA 驱动器和控制器,并且它也会使用一些通用驱动程序自动启用它们。关机并重启几次,确保它能看到两个虚拟磁盘。无需格式化虚拟驱动器)。

现在,您可以关机并将要“保存”的启动磁盘映像移动到两个控制器之间。重新启动,您会发现 Windows 无论如何都会继续启动它(我猜他们从未想过这是可能的 - 否则他们显然会添加一些措施使其失败)。

最后,一旦您满意,请关闭 VM 导出/转换磁盘映像(现在在 SATA 控制器上启动)为 KVM 需要的格式(qcow2),然后在那里进行设置:它将起作用。

KVM 没有虚拟 IDE 控制器,而 Hyper-V 有并默认使用该控制器。VirtualBox 有这两种控制器,并且像 KVM 一样默认使用 SATA。因此(对于一些转换图像的游戏,最好使用qemu-img,它似乎可以正确支持所有内容),您可以暂时使用 VirtualBox 来完成此 windows-bsod-7B-on-boot-avoidance 舞蹈。

我认为某些 VMWare VM 默认为 SCSI,每个人都在不同程度上支持它。我能够在不使用 VMWare 的情况下移动这样的客户 Windows VM,但我记不清哪种控制器组合最终起作用了。

您总是希望最终在需要 Windows 托管的 Hyper-V 上运行 Windows 托管的虚拟机,并在 KVM 上运行所有其他虚拟机,理想情况下使用“virtio”类型的磁盘控制器(使用签名的驱动程序)。

Hyper-V 上的旧窗口永远无法运行“增强模式”——没有客户驱动程序(你可以在 KVM 上使用,因为有——甚至是签名的)。

但是,如果您从 vmc​​onnect 启动虚拟机,您将获得类似客户机驱动程序的视频体验(例如,只需在客户机中设置分辨率即可获得更高的分辨率)。此外,检测和生成 RDP 连接虚拟连接的软件无法播放。如果您使用 vmconnect 启动并连接到正在运行的虚拟机,它会向客户机注册为 RDP 连接,并产生所有后果。

答案2

嗨,我遇到了完全相同的问题。似乎新添加的 VM 有一次(仅一次)机会更改芯片组。Q35 芯片组似乎不支持任何 IDE 总线。为了启动 Windows XP 或未打补丁的 Windows 7,您必须使用旧的 i440fx 芯片组。

这个 serverfault 问题中有更好的解释如何更改 qemu KVM 机器架构

我知道有点晚了,希望它能帮助其他人。 (这个问题似乎是唯一提到 Debian 10 的问题)

相关内容