As previously stated, I started a new job recently and with that came the acclimation of the consultant culture (lots of traveling); new job responsibilities (no more free time) and the fact that the laptop I was given really wasn’t going to cut it running Microsoft Business Vista SP1…
So my first task was to rebuild the laptop with an OS that would assist me in my day-to-day work responsibilities: Windows Server 2008 R2
I won’t go into the details on how to do this as it is all published here.
What I will share is how not to migrate several virtual machines that normally would have run on Virtual Server 2005 R2 SP1 onto Windows Server 2008 R2 w/ Hyper-V.
What is the big deal about moving / using VMs that were setup to run on Virtual Server 2005 R2 Sp1 and then running them under Hyper-V?
Well really nothing if you take the time to uninstall the Virtual Machine Additions from each of the VMs and then export those VMs to then be imported into Hyper-V.
Sounds like a lot of work right?
And eww… I should have paid attention to that more closely, it would have made my life a lot little easier…
Hopefully this blog post will help a few of you out there and save you some time.
After I rebuilt my laptop with Windows Server 2008 R2 (w/ Hyper-V role) and tweaked it to run as a workstation, I created empty Virtual Machines with the intention of using the VHDs I had copied over to my external hard drive.
Here is where the fun began…
Two things went drastically wrong and it was more of – “oh okay I know how to resolve this…” then “Eww… now what?”
I was worried for a short while as I didn’t have a whole lot of time to do any research nor revert back to (gulp) Vista SP1!
First let’s tackle the issue I had when trying to import the copied VHDs (not exported from Virtual Server 2005 R2 SP1).
You cannot use any VMs (VHDs) running under Virtual PC or Virtual Server into Hyper-V.
In short “both Virtual PC and Virtual Server use VMC files to store the hardware and other properties of a VM.” And thus will not run under Hyper-V.
So what do we do about migrating from our VMs from Virtual PC or Virtual Server?
Waste a bunch of time exporting the VMs and then import them into Hyper-V?
Download a free tool named VMC 2 Hyper-V and let it handle the heavy lifting of importing the VM configuration before creating the VM in Hyper-V.
This is not a new tool by any means, but it saved me a ton of time.
With VMC 2 HV you can do the following:
- Import of VMC files of both VS2005 and VPC2007
- Creation of VM on local Hyper-V host
- Creation of VM on remote Hyper-V host
- Validation of virtual disk and ISO files in local scenario
- Editing of virtual drive image paths (vhd, vfd, iso)
- Swapping of the first SCSI disk with the first IDE disk
- Specification of static MAC addresses
- Specification of either legacy (emulated) or enhanced network adapter
- Specification of # of virtual processors and resource control
- Specification of management settings
- Specification of COM ports
- Specification of device boot order
- Specification of alternate Virtual Machine path
- Built-in help in CHM file
- Support for both x86 and x64 Windows 7 and Server 2008
There are several short cut keys to help speed along the process if you only need to import and create a large number of VMC files.
So wow – that was a huge relieve and hurdle to overcome…
Now to create the VMs in Hyper-V, attach the VHDs and I’m all set…
Except for one minor thing I forgot about: Virtual Machine Additions
Virtual Machine Additions improve the integration and performance of a virtual machine running certain Windows operating systems.
Sounds just about accurate – right?
No problem, I’ll just launch the VM and uninstall them — yeah right…
Unfortunately I cannot do this because when uninstalling Virtual Machine Additions, Windows Installer loads the corresponding MSI from %windir%\Installer\xxx.msi.
Here is what I did:
- Launch Windows Explorer: Goto Tools | Options –> uncheck hide protected operation system files.
- Navigate to %windir%\Installs and performed a search for *.msi files with the word Virtual in the file. Mine came back with one result.
- Downloaded the InstEd – an MSI editor.
- Created an ISO of the InstEd install file and installed on my Hyper-V guest machine.
- Inside the table InstallExecuteSequence deleted the entries CA_CheckForRunningInsideAVirtualMachine and Error_CheckForRunningInsideAVirtualMachine
- Saved the MSI
- Uninstalled the Virtual Machine Additions from the Hyper-V guest machine
Worked like a charm and I did this for each of the 7 VMs that I needed too.
The final step was to install the Hyper-V Integration Services for each VM.
Seems like a lot of work just to get some older VMs running inside Hyper-V right?
Are there other ways to go about this? You bet.
Would I have done things differently looking back? Yep…