There were a bunch of solutions outlined here on Microsoft Technet discussions and I dont wish for people to miss out on these options, so I am posting the link.
There some options around Hyper-V and others around V2P2V.
I hope this helps someone who comes here, so please dont give me negative. Thanks.
I found a few solutions here -
https://social.technet.microsoft.com/forums/windows/en-US/b9ca72ab-cdc3-4ae8-be6f-1ce9cb18ffb6/upgrading-windows-8-to-81-native-vhd-boot
Quoted as per David's comment request.
I've written up a step by step guide (20 steps!) over on my blog,
Link,
but if you want the short version it's this,
- Boot into Windows 7 – make a copy of your Windows 8 VHD, to become Windows 8.1
- Enable Hyper-V in your Windows 8 (the original boot to VHD partition)
- Create a new virtual machine, attaching the copy of your Windows 8 VHD
- Start the virtual machine, upgrade it via the Windows Store to Windows 8.1
- Shutdown the virtual machine Boot into Windows 7 – use the bcedit tool to create a new Windows 8.1 boot to VHD option
(pointing at the copy)
- Boot into the new Windows 8.1 option
- Reactivate Windows 8.1 (it will have become deactivated by running under Hyper-V)
- Remove the original Windows 8 VHD, and in Windows 7 use bcedit to remove it from the boot menu
Some other Options:
V2P2V is quick and easy. See post by skunk123punk and my post. Once
you get it down, it is fast and painless. Hyper-V is not the only
working way. I have upgraded from 8 to 8.1 using hyper-v per Liam
Westley's blog and upgraded from one version of Windows 10 Tech
Preview to another using V2P2V. V2P2V is MUCH easier.
Another:
Additional possible workaround:
- Remove Hyper-V feature from your current native boot configuration.
- Make a WIM image of your current native boot config using Windows 8.1 ADK.
- Add the Hyper-V feature back.
- Deploy the WIM to a new VHD file attached to a virtual machine.
- Upgrade the created virtual machine.
- Attach the VHD from the virtual machine to the physical boot manager using bootcfg. Looks clumsy but kind of feasible.
Another way:
Agree with skunk123punk above. Go from VHD native boot to physical
boot, do the upgrade, then go back to VHD native boot. Here is how I
did it:
- Create a partition on a local disk matching the size of your original vhdx file. This local disk should not be the disk containing
the original vhd or vhdx boot file. The process fails when a
partition on the disk containing the vhd or vhdx boot file is used
(booting in step 4. below will fail, in my experience).
- Use Macrium Reflect (free version, if you are on a home computer) to clone the vhdx volume to the physical partition.
- Add the installation in the physical partition to your boot menu using Bcdboot T:\Windows, where T is the drive letter of the physical
partition
- Boot from the physical partition, and do the upgrade.
- Go from physical boot back to VHD native boot. Create a vhdx file with the size matching the physical partition. Mount the vhdx file
and use Macrium Reflect to clone the physical partition to the new
virtual drive.
- Delete the original (VHD native boot) boot entry.
- Mount the vhdx file from step 5., and give it a drive letter, say U
- Add a boot entry for the upgraded installation using Bcdboot U:\Windows
- Delete the boot entry created in step 3.
- Boot into the upgraded vhdx, and you are done! With fast drives (ssd drives) this goes very quickly. AZona1