3

I have a virtual machine running Windows 2008 R2 x64 as guest, and Hyper-V R2 x64 as host.

I have cloned the vhd file of the virtual machine, and now, I want to boot from it directly on my laptop computer, which a Windows 7 Enterprise X64 SP1 (with hardware virtualization).

For that, I've set up a BCD entry :

bcdedit /copy {current} /d "Boot_From_VHD"

The entry was successfully copied to {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

Running bcdedit /enum, I can see my entry :

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

When I reboot, I can see the entry in the boot menu. If I select the newly created entry, I can see for a few seconds the windows logo, then a BSOD.

This BSOD is not very useful as it's only suggesting to run a chkdsk. A bunch of 64 bits hexadecimal numbers are also put, but with no error message.

Any idea how to solve the problem ?

PS: I want to keep my system intact except the potential hardware changes. I have not run sysprep /generalize as it will reset all users, hostname, etc.

Steve B
  • 2,252

1 Answers1

1

I finally solved my problem.

The BSOD states error STOP: 0x0000007B, which means inaccessible boot device.

This puts me on the way of missing drivers. Actually Hyper-V machines use IDE emulation, and I suppose only IDE drivers are available in the image, while my laptop use a eSata drive.

To solve the problem, I use DISM /add-driver command using the following procedure, on the laptop that will run the OS :

  1. Mount the VHD in the disk managment (diskpart can too) --> on my computer, that add two drives, F: for the reserved system partition, G: for the windows partition

  2. add all drivers of the laptop to the image by typing :

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

  3. Add also the latest downloaded drivers :

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

This took some minutes, but after the operation, my vhd contains all drivers. I think it's important to run the command on the target laptop to ensure all actual hardware's driver is added.

Finally, I rebooted, selected the correct boot entry, and it's boot :)

I had to reboot several times, because of the new hardware detection, but finally my system has been migrated from Virtual to Physical.

Steve B
  • 2,252