Hyper-V VM doesn't boot off SCSI hard drive

You can't just take a boot disk from a generation 1 guest and have it boot in a generation 2 guest. Your generation 1 disk is likely still using the MBR, your generation 2 disk requires an GPT/EFI partition or converted to GPT/UEFI to boot.

There are some documented manual and scripted methods to convert the virtual machine from generation 1 to generation 2, however these methods would be used at your own risk.

The first link from the manual method is actually from a series of articles on generation 1/generation 2 virtual machines and is a good read.

There is no way in Hyper-V to change the generation of a virtual machine. Neither is there a means to migrate a generation 1 virtual machine to a generation 2 virtual machine.

However, there is a longer answer which is supported in certain circumstances, due to the use of standard inbox tools and capabilities for deployment. Let’s rule out first what definitely cannot be migrated. The obvious categories are any virtual machine running a 32-bit guest operating system; any virtual machine not running Windows (although there may be other solutions I’m not aware of); any virtual machine running a version of Windows prior to Windows 8/Windows Server 2012.

At a high level, the steps I’m going to follow are:

  • Disable the recovery environment
  • Make a copy of the Windows image as installed
  • Create a new VHDX
  • Partition it in GPT format and make it bootable
  • Put the copy of Windows we previously made onto the new disk
  • Create a new generation 2 virtual machine and attach the new VHDX
  • Fix up the recovery environment