Today I took on the task of converting one of our last VMWare Server-based VMs to Hyper-V. This was an XP VM that is used for accounting, and with lots of software and configuration the idea of reinstalling Windows did not appeal.
So I used vmdk2vhd to convert the disk to Hyper-V format, making sure that I followed the initial preparation steps as noted in various blogs.
No joy, ended up with the dreaded “A disk read error occurred. Press ctrl+alt+del to restart” error. with some research found sites that suggested using FIXBOOT, FIXMBR and CHKDSK in the XP Recovery Console, but I didn’t expect much success with this route and I didn’t get any.
As a side note, I could not remember the local Administrator password for the box, and ended up using Petter Nordahl-Hagen’s excellent offline password editor.
Finally, found a blog that explains how to resolve the problem using TestDisk by CGSecurity. Ran that, went through the various steps, and finally ended up with a VM that would at least boot to Safe Mode. After a few minutes of churn, Windows installed various drivers and I could boot to normal Windows and complete Hyper-V Integration Services install.
Or could I? Nope. Windows wanted to be reactivated before I could login — but I no longer had network drivers. As I was not willing to spend the time on the phone with a Microsoft operator when at home late at night, I booted back into Safe Mode, and ran the Integration Services install from there.
No! Another error: “Setup cannot upgrade the HAL in this virtual machine”. Yet another blog post (and comment thereunder) to the rescue. I ended up having to copy HALACPI.DLL from %windows%\servicepackfiles\i386 into %system%. Rinse, reboot. And now follow the primary steps in that same blog post – deleting the “Standard PC” entry, and now finally it’s installing.
Wait, no, it failed. “An Error has occurred: One of the update processes returned error code 1601.” Google again. Wow, a Technet discussion thread returns a possible solution. So booting into Recovery Console again to delete some VMWare drivers (VMWare Tools would not uninstall because it had a Windows Installer reference to a network drive on a machine that had been decomissioned… Yuck.)
No way, Jose. A bit more research and eventlog spelunking and I realised that Integration Services setup was trying to start Windows Installer — which doesn’t run in Safe Mode. Yay! Now what: can’t install network drivers in Safe Mode, can’t login in normal mode because I have no network drivers for boot. Ah! Turns out adding a legacy network adapter may give me a way forward here. Gosh, that actually worked. Reactivated Windows successfully. Now I am booted in normal Windows mode, should be able to install Integration Services, right?
Well, I could now use Remote Desktop to connect to the machine — great, now I had a mouse again – and am now installing Integration Services. We’ll see how it goes — but I’m not waiting around for it any longer tonight.
Was it worth all the pain? Probably not. At least I collected a few useful Hyper-V resources. Perhaps a rebuild would have been smarter but I really like to understand the hows and whys of these problems. And perhaps this may help someone else.