Migrate old development system to Hyper-V

No Comments September 17, 2014

The time has come to migrate my work development system to a brand new shiny machine; larger spinning rust drives, SSD for the OS and faster processor - lovely. Most of the work I've got will check out of source control and build without issue, but some legacy projects have dependencies that I don't really want to install on a new environment - things like Commerce Server 2007 and SQL Server 2005 - but I will need to be able to work on the legacy projects from time to time.

Given that my new development system more than satisfies the requirements for Hyper-V, I thought I'd try and see how difficult it would be to virtualize my old system so that I could drop back to my legacy development projects if necessary without having to pollute my new system with old dependencies.

The steps taken here are from a "works on my system" perspective; it might (or might not) work for you


On the old system, I did some last minute housekeeping operations in preparation for the migration - removing cruft, emptying the recycle bin, clearing temporary folders and so on.

Once I was happy with the state of the system, I ran the SysInternals Disk2VHD utility and used it to image the drives directly to a network share on the new computer. A couple of cups of coffee later the process was complete, so the machine was powered off.


Moving over to the new machine, I enabled the Hyper-V features in Windows 8.1 (the BIOS in my system had virtualization disabled at first, but a quick reboot later it was ready to go).

Windows Features dialog

In the Hyper-V Manager, I created a new Generation 2 Virtual Machine and attached the hard drive images that had been created by Disk2VHD. Even though the source system was running Windows 8.1, when the virtual machine was initiated it couldn't find an OS to start.

Undeterred, I created a new Generation 1 Virtual Machine and attached the hard drive images. This virtual machine was then started, and much to my surprise Windows 8.1 immediately started booting with a message that it was preparing devices. A few minutes later, the guest OS rebooted and presented me with the Windows 8.1 login.


Although it appears that Hyper-V doesn't ship with any utilities to migrate Generation 1 to Generation 2 Virtual Machines, a quick online search located the Convert-VMGeneration PowerShell script.

On execution the script warned that "this will take some time..." - and boy, it wasn't kidding. Several jugs of coffee later, the process was complete - this new VM started without a problem.

So, I've now got a system that I can start when necessary to work on legacy development tasks - the process wasn't particularly quick, but it was relatively painless.

No Comments