无法启动从 hyper-v 导出的 vhd

无法启动从 hyper-v 导出的 vhd

我有一台虚拟机,运行 Windows 2008 R2 x64 作为客户机,并运行 Hyper-V R2 x64 作为主机。

我已经克隆了虚拟机的 vhd 文件,现在,我想在我的笔记本电脑上直接从它启动,我的笔记本电脑是 Windows 7 Enterprise X64 SP1(具有硬件虚拟化)。

为此,我设置了一个 BCD 条目:

bcdedit /copy {current} /d "Boot_From_VHD"

该条目已成功复制到 {1230b942-0833-11e1-abb2-d1169c7203ba}

bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} device vhd=[E:]\vhd\myvhd.vhd
bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} osdevice vhd=[E:]\vhd\myvhd.vhd
bcdedit /set {1230b942-0833-11e1-abb2-d1169c7203ba} detecthal on

运行后bcdedit /enum,我可以看到我的条目:

Windows Boot Loader
-------------------
identifier              {1230b942-0833-11e1-abb2-d1169c7203ba}
device                  vhd=[E:]\vhd\myvhd.vhd
path                    \Windows\system32\winload.exe
description             Boot_From_VHD
locale                  en-us
inherit                 {bootloadersettings}
osdevice                vhd=[E:]\vhd\myvhd.vhd
systemroot              \Windows
resumeobject            {1230b940-0833-11e1-abb2-d1169c7203ba}
nx                      OptIn
detecthal               Yes

重新启动后,我可以在启动菜单中看到该条目。如果我选​​择新创建的条目,我可以看到几秒钟的 Windows 徽标,然后是 BSOD。

这个 BSOD 没什么用,因为它只建议运行chkdsk。还放了一堆 64 位十六进制数字,但没有错误消息。

知道如何解决这个问题吗?

附言:除了潜在的硬件更改外,我希望保持系统完好无损。我没有运行,sysprep /generalize因为它会重置所有用户、主机名等。

答案1

我终于解决了我的问题。

BSOD 显示错误STOP: 0x0000007B,这意味着inaccessible boot device

这让我陷入了缺少驱动程序的境地。实际上,Hyper-V 机器使用 IDE 仿真,我猜想映像中只有 IDE 驱动程序可用,而我的笔记本电脑使用 eSata 驱动器。

为了解决这个问题,我使用DISM /add-driver 命令使用以下步骤,运行操作系统的笔记本电脑

  1. 在磁盘管理中挂载 VHD(diskpart 也可以)-->在我的计算机上,添加两个驱动器,F:用于保留的系统分区,G:用于 Windows 分区

  2. 通过键入以下内容将笔记本电脑的所有驱动程序添加到图像中:

    dism /image:g: /add-driver /driver:c:\windows\inf /recurse

  3. 还添加最新下载的驱动程序:

    dism /image:g: /add-driver /driver:c:\somewhere\drivers /recurse

这花了几分钟,但操作后,我的 vhd 包含所有驱动程序。我认为在目标笔记本电脑上运行该命令很重要,以确保添加了所有实际硬件的驱动程序。

最后,我重新启动,选择了正确的启动项,然后它就启动了:)

由于检测到新的硬件,我不得不重新启动几次,但最终我的系统已从虚拟迁移到物理。

相关内容