So you’re trying to convert a physical computer into a virtual machine. This physical computer probably has a RAID card, like a Dell PowerEdge Server or a Precision Workstation. You may have used Disk2VHD or another conversion tool, everything goes great — you may have even confirmed it’s not the bootloader — a boot menu does appear, and Macrium Reflect’s “Fix Boot Problems” tool identifies you’ve got the right OS selected. Normal, safe mode, whatever — on trying to boot, you get a Blue Screen of Death (BSoD) and it auto-restarts, and nothing seems to fix it. If you’re really, really fast, and screen capture your VM at 60fps with something like OBS or FRAPS, you see the glitched out error: 0x0000007B… What could it mean? Google provides a million potential reasons, most are wrong…
The root issue, is Windows is hard-coded in the registry to expect a specific value what for disk driver to load. You’ve just made a massive change, from expecting a vendor specific storage driver, to a new generic virtual-hardware driver from a different vendor. Have to point it back on track.
If you’ve got a VHD, make it accessible by either the HyperV host, or a Windows workstation, and right-click the VHD > Mount. Go to “This PC”, and look for the drive. In my case, it’s a 2008 R2 VM. But I’ve had this same issue occur with Win7, Win2012, or Win2019 servers, so, it’s pretty common.
Solution: Mount the virtual disk, use RegEdit on another machine to remove the bad entry, unmount, reboot, pray for the best on the next boot.
Start + R = Run > regedit.exe
Select: HKEY_LOCAL_MACHINE > File > Load Hive > Browse to the mounted VHD: X:\Windows\System32\Config\SYSTEM > Keyname: ComputerName_SYSTEM
Depending on the type of Physical machine you came from, new virtualization host (HyperV, VMWare, Virtualbox, etc) and generation of new VM (Gen1 = IDE, Gen2 = SCSI, typically). You will need to change the “Start” values below, customized to your situation.
DISABLE the old controller by changing its Start value to: 3
ENABLE the new controller, by changing its Start value to: 0
aliide (ALI / Acer RAID Controller)
amdide (AMD IDE RAID Controller)
ahci (SATA AHCI Controller)
atapi (ATA / SCSI Controller)
iaStorV (Intel RAID Controller)
intelide (HyperV IDE RAID Controller)
pciide (Old school PCI IDE Adapter)
msahci (VMWare VMDK > VirtualBox)
lsi_sas or lsi_sas2 (Physical to ESXi)
viaide (VIA RAID Controller)
In my case, I’m going from a Dell PowerEdge PERC RAID Controller, to a HyperV IDE (Gen1) Controller. So I will edit intelide\Start from 3 (disabled) to be 0 (enabled). I also set atapi\Start to 0 to be safe, since HyperV often expects SCSI. In my case, I did not need to disable the old controller, just enabling the new ones to run was enough.
Once your changes are made, go back to HKLM, select the Key, File > Unload Hive. Eject your VHD. Cross your fingers, pray, and hope for the best — boot the VM. If it doesn’t instantly BSoD — it just stays black… wait. it. out…. it may take anywhere from 2 minutes to 20, just let it think and be patient.
If you get to a logon (Ctrl+Alt+Del) screen, well, the scope of this article is done. If you’ve got a Server 2008 R2 / SBS2011 VM, after logging in, there is a chance you will only have a solid blue screen. Task Manager can open with (Ctrl+Shift+Escape), you may need to boot into Safe Mode, log in, let it sit on the blue screen for 10 minutes while it loads in drivers (don’t hard reboot and interrupt it immediately), then reboot in normal mood and everything should load up. Once you’re fully in, recommend installing the integration tools.
Well that was fun…. Another day in the life of a sysadmin =].