Hyper-V Gen 2 VM Won't Boot from ISO – Fixed
Gen 2 VMs need UEFI boot, not BIOS. If the ISO isn't UEFI-compatible or boot order's wrong, it just hangs. Here's the fix.
Check the Boot Order First (30 seconds)
This is the culprit 8 times out of 10. Gen 2 VMs use UEFI firmware, and the default boot order often puts the virtual DVD drive after the virtual hard disk. If there's any OS on the disk, even a broken one, the VM boots that instead of your ISO.
- Shut down the VM – can't change boot order while it's running.
- Right-click the VM, go to Settings.
- Under Firmware, look at the Boot order list. You'll see entries like Hard Drive, DVD Drive, Network Adapter.
- Select DVD Drive and use the Move Up button to make it the very first entry. No exceptions – if it's not first, it won't work for Gen 2.
- Click OK, start the VM, and watch it boot from the ISO.
Still stuck? Move to the next step.
Check the ISO Itself – UEFI vs Legacy (5 minutes)
Gen 2 VMs only boot UEFI-compatible ISOs. If your ISO was built for legacy BIOS mode (common with older Linux distros or some custom images), it won't even show up as bootable. You'll get a black screen or an error like No bootable device found.
Here's how to tell if your ISO is UEFI-ready:
- Windows ISOs from Microsoft (Windows 8 and later) are UEFI-compatible. If you're using a custom slipstreamed ISO, it may not be.
- Ubuntu 20.04+ and most modern Linux distros support UEFI. Old ones like CentOS 6 or Debian 8 don't.
- Check the ISO contents: Mount the ISO in Windows or Linux. Look for a folder called
EFIat the root. If it's missing, the ISO won't boot on Gen 2.
Fix it: Download a UEFI-compatible ISO. Or switch to a Gen 1 VM (right-click VM → Settings → Change Generation – but you'll need to recreate it, can't convert).
Disable Secure Boot if Needed (5 minutes)
Secure Boot is enabled by default on Gen 2 VMs. It blocks unsigned bootloaders. If you're booting Linux (especially non-Ubuntu distros like Fedora or Arch) or a custom Windows ISO, Secure Boot can silently fail.
- Shut down the VM.
- Settings → Firmware → Secure Boot section.
- Change from Microsoft UEFI Certificate Authority to Disabled.
- Start the VM again. If it boots, Secure Boot was the problem.
I disable Secure Boot on nearly every Gen 2 Linux VM – saves headaches later.
Verify the Virtual DVD Drive is Connected (30 seconds)
This one's stupid but I've seen it a hundred times. The DVD drive is present in settings but the ISO isn't actually inserted.
- Settings → DVD Drive.
- Make sure Image file is selected and the path to your ISO is correct.
- Click OK and boot.
Also check the ISO file isn't corrupted – right-click it, Properties, see if size matches what you expect. A 0-byte ISO won't help.
Advanced: Check Hyper-V Integration Services (15+ minutes)
This is rare but I've seen it. If Integration Services are somehow broken, the VM might not recognize the virtual DVD drive. You'll see the VM start but the DVD won't show up in the firmware boot list.
- Open PowerShell as admin on the Hyper-V host.
- Run
Get-VMIntegrationService -VMName "YourVMName" - Check that Guest Service Interface and Heartbeat are enabled. If any are disabled, run:
Enable-VMIntegrationService -VMName "YourVMName" -Name "Guest Service Interface" - Restart the VM and try the ISO again.
If that doesn't work, try a different ISO – sometimes the ISO itself is the problem. I've seen a dd command produce a non-bootable ISO even though it looked fine.
When All Else Fails – Recreate the VM
If you've checked boot order, used a UEFI ISO, disabled Secure Boot, and verified the DVD drive – and it still won't boot – something's hosed in the VM config. Don't waste time hunting for ghosts. Create a new Gen 2 VM, attach the same ISO, and boot. Takes 5 minutes.
One last tip: Make sure your ISO isn't in a folder the Hyper-V host can't access. Don't put it on a network share that requires authentication – Hyper-V runs under the SYSTEM account, not your user profile. Move the ISO to C:\ISOs or similar local path.
Was this solution helpful?