Windows XP 虚拟机在 VirtualBox 中挂起

Windows XP 虚拟机在 VirtualBox 中挂起

我想做的事:

我正在尝试将两个不同的物理 Windows XP 系统(分别位于一个硬盘上)虚拟化到 Windows 7 下的 VirtualBox 中。

我做了什么(每个驱动器一次):

从 Linux 系统:

dd if=/dev/sd(disk) of=d1.img conv=noerror,sync bs=64k

从 Windows 7 系统

vboxmanage convertfromraw d1.img d1.vdi

我所在的位置:

在启动任一虚拟机时,Windows 似乎在加载时挂起(在安全模式下)mup.sys。在正常启动时,它只是一个空白屏幕。我真的没有太多可以继续的东西,所以任何可以获得更多调试输出的点也是很好的。

我确信我之前曾将此方法用于 Linux 和类似系统,我这样做是不是太愚蠢了?与 Xen 或 KVM 相比,我对 VirtualBox 的了解非常有限。

答案1

修复选项有效,但这是因为您使用巨石而不是更快的锤子作为钉子,具体问题在于 hal.dll(硬件抽象层),它是为您的原始物理盒设计的,无法解释新的 VM。

简短版本,如果您很着急,请从相同或相似的工作 VM 中将工作的 hal.dll 复制到您的非启动程序,这样就无需执行安装/修复过程。

通过完成整个修复过程,您将成功安装一个可用的 HAL,但这是最耗时且耗时最长的方法。最快的方法是利用其他可用的 VM,其 SP 和补丁修订版本尽可能接近/相同,因为某些 Microsoft 补丁将替换关键系统 dll(如 HAL),并在您将有缺陷的 dll 重命名为您想要的任何名称后,将可用的 HAL.dll 复制到故障 VM 的 %systemrootn%\system32 中。

如果您没有可运行的 VM 库,您仍然可以使用之前使用的安装 CD 进行完整恢复方法,并通过启动到(交互式)恢复控制台(这是 Microsoft 在单用户模式方面的最佳尝试之一)来节省大量时间。

您应该有一个检测到的操作系统文件夹的编号列表,即使是单启动系统仍然会有一个标记为 (1) 的 Windows 目录,选择损坏的版本,系统会提示您输入密码,并进入 c:\windows 根目录下的 shell 或任何您唯一的驱动器号和目录 (%systemroot%)

将损坏的 Hal.dll 归档,以防我们因为暂时想不起来的原因再次需要它。ren system32\hal.dll hal.dllBROKE

从安装 CD 中,找到 halacpi.dl_(通常为 i386\halacpi.dl_)并在重命名故障的 HAL 后使用 expand 命令,环境变量的可用性将根据操作系统和修订版本而有所不同,因此请准备好使用明确的路径,例如:

扩展 halacpi.dl_ c:\windows\system32\hal.dll 或者尝试环境变量(如果可用)以确保扩展 halacpi.dl_ %systemroot%\system32\hal.dll

某些版本的 XP、2003 server /2003R2 在安装介质上也有一个原始的 HAL.dl_,当我们的 halacpi.dll 扩展失败时,您可以继续扩展它以确保安全:

展开 hal.dl_ c:\windows\system32\hal2.dll

退出修复菜单并重新启动,您的启动过程很可能会成功,或者至少会越过之前的 mup.sys / 挂起点。但是,由于您一直在反复重新启动此 VM,因此如果您的磁盘很脏,需要对 NTFS 卷进行五阶段 chkdsk,对 Fat32/Fat16 卷进行三阶段 chkdsk,请不要感到惊讶。根据磁盘损坏的严重程度,它可能无法成功修复自身,并冻结在黑色 DOS 窗口上的“检查磁盘 C”默认白色文本处。

这时你应该决定是否要恢复你原来的未安装但无法启动的 VHD 并将其 HAL 起来,或者你是否必须恢复这个无法自我修复的有问题的 VM,将其作为数据驱动器安装在一个正在运行的 VM 或系统中,然后作为数据驱动器执行 chkddsk 或使用无数的修复 BOOT CD

您还可以在有缺陷的虚拟机上放松该 boot.ini 文件,现在您可能已成为使用引导日志进行调试的尖刺复仇者,没有 GUI 和 SOS 标志,并且只添加默认启动项,因为不当的修改(例如无意的自动换行和智能引号)似乎总是侵入 boot.ini 文件,而这些文件在您亵渎沮丧期间不断被篡改和测试。,

微软虚拟 PC、虚拟服务器(早期添加)管理员多年来一直被这个问题困扰,因为尽管微软推出了 disk2vhd 实用程序,但他们并没有公开 HAL 问题,解决方法既迷信又耗时,例如在转换为 VM 之前强制将物理分区的大小调整为希望的 VHD,并使用完整的修复方法。

答案2

仅将其作为答案发布,因为它似乎已经起作用了。

我尝试修复并重新安装 Windows XP 磁盘。似乎问题已经得到解决,现在可以正常启动。

答案3

您可能想要卸载控制面板中“添加删除程序”菜单中的所有驱动程序。

除此之外,转到设备管理器,找到“硬盘控制器”或“存储控制器”或“IDE 控制器”或类似类别,右键单击每个控制器,然后单击卸载。

只有完成这些步骤后,才能继续制作图像。

将现有操作系统移至新主板(或虚拟机)时,Windows XP 不如 Windows 7 灵活。如果此操作失败,请尝试 @Sirex 建议的修复选项。

答案4

检查虚拟机的 APIC 设置,它必须与安装 Windows 时 APIC 的存在与否相匹配。

相关内容