Last week I was given the opportunity to perform my first ever VMware to Hyper-V migration. This was primarily done to get the Exchange 2003 virtual machine on a supported platform so Microsoft’s PSS would support it. VMDK to VHD conversion takes a while, but was very straightforward. Everything else is documented here. 

  1. On VMware virtual machine, set Exchange and SMTP services to manual
  2. Shut down virtual machine
  3. Create a backup of the VMDK and related files for OS (C:) partition
  4. Add and IDE disk to the virtual machine to enable IDE drivers in Windows and make the Hyper-V converted disk easier to boot.
  5. Remove Exchange’s mail store VMDK disk (E:) from the virtual machine’s configuration to ensure no data is changed on that partition.
  6. Disable networking in VMware console so that any changes made are confined to the local machine.
  7. Boot working copy of Exchange OS partition
  8. Log on as local admin
  9. Uninstall VMware tools and reboot VM when prompted
  10. Cancel “Found new hardware wizard” and do not reboot when asked
  11. Verify IDE drive is present & drivers loaded
  12. Append C:windowssystem32hal.dll and ntoskrnl.exe with .bak extensions and copy versions from C:windowsservicepackfilesi386 to replace the versions in the system32 folder.
  13. Run prepvm.vbs created by Chris Wolf
  14. Shut down the server
  15. Copy modified VMDK files for OS partition (one 20GB and one 1KB) to LUN on IBM SAN for Hyper-V server (arch-host-09) to use
  16. Convert VMDK file to VHD file using the VMDK to VHD converter from vmtoolkit.com
  17. Link VHD to VM in Hyper-V and boot the file. The following steps were used for troubleshooting.
    1. Booted to Windows 2003 server OS CD to run recovery console
    2. Added a line in boot.ini with arguments “/bootlog /sos /safeboot:minimal” which enabled the system to boot into safe mode.
    3. Rebooted server and chose normal boot-up
    4. Copied halaacpi.dll from C:windowsservicepackfilesi386 to overwrite C:windowssystem32hal.dll
    5. Reboot server normally
    6. Opened “System” in Control Panel to remove reference to the old hal.dll in the Computer properties.
    7. Rebooted system
  18. Installed Hyper-V add-ons and rebooted.

Surprisingly, that’s all it took.  Step 17.4 took a little while to figure out because I kept getting an error message about ACPI-compatible hal.dll when trying to install the Hyper-V add-ons.