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.
- On VMware virtual machine, set Exchange and SMTP services to manual
- Shut down virtual machine
- Create a backup of the VMDK and related files for OS (C:) partition
- Add and IDE disk to the virtual machine to enable IDE drivers in Windows and make the Hyper-V converted disk easier to boot.
- Remove Exchange’s mail store VMDK disk (E:) from the virtual machine’s configuration to ensure no data is changed on that partition.
- Disable networking in VMware console so that any changes made are confined to the local machine.
- Boot working copy of Exchange OS partition
- Log on as local admin
- Uninstall VMware tools and reboot VM when prompted
- Cancel “Found new hardware wizard” and do not reboot when asked
- Verify IDE drive is present & drivers loaded
- Append C:windowssystem32hal.dll and ntoskrnl.exe with .bak extensions and copy versions from C:windowsservicepackfilesi386 to replace the versions in the system32 folder.
- Run prepvm.vbs created by Chris Wolf
- Shut down the server
- 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
- Convert VMDK file to VHD file using the VMDK to VHD converter from vmtoolkit.com
- Link VHD to VM in Hyper-V and boot the file. The following steps were used for troubleshooting.
- Booted to Windows 2003 server OS CD to run recovery console
- Added a line in boot.ini with arguments “/bootlog /sos /safeboot:minimal” which enabled the system to boot into safe mode.
- Rebooted server and chose normal boot-up
- Copied halaacpi.dll from C:windowsservicepackfilesi386 to overwrite C:windowssystem32hal.dll
- Reboot server normally
- Opened “System” in Control Panel to remove reference to the old hal.dll in the Computer properties.
- Rebooted system
- 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.
Did you mean vmtoolkit.com? (Step 16) vmtools.com is a spam site…
Good catch! I updated that post. Thanks for the comment.
I’m mirgating 5 VM guests to Hyper-V now. The two Server 2003 VMs migrated just fine. I actually used VMWare Converter 4 and the VMDK to VHD converter tool. Then, I installed the HV components and manually uninstalled the VMTools and VMWare Converter. It worked well on those. This process has not worked so well on teh three Windows 2000 VMs. Everything seems ok, except about 12-15 services will not start automatically. I can manually start them, but that’s not really an option. In hopes of solving the issue, I downloaded the evaluation version of SCVMM (which IS really awesome, BTW). It converts the machines much faster, but gives me the same issue. If anyone has any ideas, I would love to hear them! I may try something more along the lines of your process next. Thanks!
http://social.technet.microsoft.com/Forums/en-US/virtualmachinemgrp2vv2v/threads
Found it in the forums… After uninstalling the Backup Exec agent, everything works just fine!
Thanks.
Nice find! Thanks for the feedback.
This is a great guide. Let me add a couple of things I came across. I could not install the Hyper-V add-ons because only acpi multiprocessor pc is supported, however I had made the changes on the hal as directed above. I came across and article that said to remove Standard PC under Computer in devise manager and then I could install the addons. I also recomment adding the boot.ini option before converting yr machine.
This sounds good, will it work if the vmware host uses amd and the new server is intel? I’d assume yes as the hal is being replaced but it would be nice to have confirmation.
I have not tested this, so I can’t say for sure, but I’m with you. I believe replacing the HAL will take care of this. Additionally, the hypervisor (VMware, Xen, Hyper-V, etc.) abstracts the CPU architecture from the VM. If the VM relies on IO APIC, PAE/NX, VT-x/AMD-V, or nested paging, then make sure you don’t go backwards on technology (ex: from a Intel X5500 proc to an Intel Penium4, or from 64bit to 32bit).