2

I've converted a VMWare VMDK to a VHDX. The guest is a Windows 8.1 VM.

When this is attached to a generation-1 Hyper-V VM as an IDE drive, it boots up fine.

When the same VHDX is attached to a generation 2 Hyper-V VM (forced to use SCSI), it fails to boot off the same disk (checked boot order, it fails disk and hits CDROM and network).

The Hyper-V host is a Windows Server 2012 R2 (+updates/patches).

Does anyone know how to get this working as a generation 2 Hyper-V VM. I'm hoping it's not a limitation that I must use IDE (flashback 90s) in order to order to do something as basic as ... boot!

DeepSpace101
  • 698
  • 5
  • 12
  • 25
  • Despite age, this is one of first results for this task. It is doable, and is actually tied to BIOS vs (U)EFI. While MS offered scripts for Windows guests, only way to do it for Linux guests is to do it manually. For more info please see this question: https://serverfault.com/questions/654828/convert-hyper-v-linux-machine-to-gen-2 – LuxZg Dec 24 '20 at 23:34

1 Answers1

3

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
Rex
  • 7,815
  • 3
  • 28
  • 44