I was recently asked if I could help move a virtual machine that had been setup and running in VirtualPC and move it to run under Hyper-V. 

The answer is yes it can be done.  Movement from Hyper-V to VirtualPC is not as easy (and many times not possible) but there are a number of blog posts on this topic already so I won’t cover that here.  One of the reasons that it is easier to move from VirtualPC to Hyper-V is that VirtualPC is only 32 bit. 

There are a number of steps that must be occur for a successful move.

First, start by uninstalling the integration components while the virtual machine is running in VirtualPC.  You can do this through the Add/Remove programs feature in Windows in the Virtual Machine.  The Hyper-V drivers and additions will not install over the VirtualPC additions and that is why you must remove them first.

Next, move the vhd file to a location where it can be accessed by your Hyper-V instance.  Walk through the wizard to create a new virtual machine but when prompted to create a new drive or select and existing drive, pick select an existing drive and point it to your .vhd file.

Finally, once you have the virtual machine configured in your Hyper-V instance then start the machine.  Go through the Settings Menu and install the Hyper-V additions.  Once you do this, the Hyper-V additions installs a new HAL as well as new drivers for network, video and sound devices.  The process of installing the new HAL is one of the reasons that a Hyper-V image is no longer portable back to VirtualPC.

However, at this point, you might think that everything is done and you are ready to use the virtual machine.  Most of the time this is correct, however, there are situations that require additional steps.  You will know that you have additional steps if your integration components aren’t working – you can tell really quickly if your mouse doesn’t move outside of the virtual machine.

You are more likely to have this occur if your virtual machine is running versions of Windows prior to Vista or if you are running Windows Server 2008 as these do not have the ability to dynamically detect the HAL at boot time.

So, to fix this run MSConfig.exe – by clicking the Start menu, selecting Run and typing msconfig.  Once the utility launches, click on the Boot tab and click the Advanced Options Button.  When the BOOT Advanced Options dialog appears, click the Detect HAL checkbox and hit ok.  Restart the virtual machine and you should be good to go!