Saturday, October 19, 2013 #

Upgrading Windows 8 boot to VHD to Windows 8.1–Step by step guide

UPDATE : I believe (I have not tested this scenario yet) you can use your existing Windows 8 partition to create a recovery USB drive that can be used to do the repair without the ISO, see http://howto.cnet.com/8301-11310_39-57601638-285/how-to-create-a-windows-8-usb-recovery-drive/, and here is how to mount that USB as a drive for Hyper-V to see, http://www.petri.co.il/boot-hyper-v-virtual-machine-usb-drive.htm#

Boot to VHD – dual booting Windows 7 and Windows 8 became easy

When Windows 8 arrived, quite a few people decided that they would still dual boot their machines, and instead of mucking about with resizing disk partitions to free up space for Windows 8 they decided to use the boot from VHD feature to create a huge hard disc image into which Windows 8 could be installed.  Scott Hanselman wrote this installation guide, while I myself used the installation guide from Ed Bott of ZD net fame.

Boot to VHD is a great solution, it achieves a dual boot, can be backed up easily and had virtually no effect on the original Windows 7 partition. As a developer who has dual booted Windows operating systems for years, hacking boot.ini files, the boot to VHD was a much easier solution.

Upgrade to Windows 8.1 – ah, you can’t do that on a virtual disk installation (boot to VHD)

Last week the final version of Windows 8.1 arrived, and I went into the Windows Store to upgrade.  Luckily I’m on a fast download service, and use an SSD, because once the upgrade was downloaded and prepared Windows informed that This PC can’t run Windows 8.1, and provided the reason, You can’t install Windows on a virtual drive.  You can see an image of the message and discussion that sparked my search for a solution in this Microsoft Technet forum post.

I was determined not to have to resize partitions yet again and fiddle with VHD to disk utilities and back again, and in the end I did succeed in upgrading to a Windows 8.1 boot to VHD partition.  It takes quite a bit of effort though …

tldr; Simple steps of how you upgrade

  • 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

Things you’ll need

  • A system that can run Hyper-V under Windows 8 (Intel i5, i7 class CPU)
  • Enough space to have your original Windows 8 boot to VHD and a copy at the same time
  • An ISO or DVD for Windows 8 to create a bootable Windows 8 partition

Step by step guide

  1. Boot to your base o/s, the real one, Windows 7.
  2. Make a copy of the Windows 8 VHD file that you use to boot Windows 8 (via boot from VHD) – I copied it from a folder on C: called VHD-Win8 to VHD-Win8.1 on my N: drive.
  3. Reboot your system into Windows 8, and enable Hyper-V if not already present (this may require reboot)
  4. Use the Hyper-V manager , create a new Hyper-V machine, using half your system memory, and use the option to attach an existing VHD on the main IDE controller – this will be the new copy you made in Step 2.
  5. Start the virtual machine, use Connect to view it, and you’ll probably discover it cannot boot as there is no boot record
  6. If this is the case, go to Hyper-V manager, edit the Settings for the virtual machine to attach an ISO of a Windows 8 DVD to the second IDE controller.
  7. Start the virtual machine, use Connect to view it, and it should now attempt a fresh installation of Windows 8.  You should select Advanced Options and choose Repair - this will make VHD bootable
  8. When the setup reboots your virtual machine, turn off the virtual machine, and remove the ISO of the Windows 8 DVD from the virtual machine settings.
  9. Start virtual machine, use Connect to view it.  You will see the devices to be re-discovered (including your quad CPU becoming single CPU).  Eventually you should see the Windows Login screen.
  10. You may notice that your desktop background (Win+D) will have turned black as your Windows installation has become deactivate due to the hardware changes between your real PC and Hyper-V.
  11. Fortunately becoming deactivated, does not stop you using the Windows Store, where you can select the update to Windows 8.1.
  12. You can now watch the progress joy of the Windows 8 update;
    1. downloading,
    2. preparing to update,
    3. checking compatibility,
    4. gathering info,
    5. preparing to restart, and finally,
    6. confirm restart - remember that you are restarting your virtual machine sitting on the copy of the VHD, not the Windows 8 boot to VHD you are currently using to run Hyper-V (confused yet?)
  13. After the reboot you get the real upgrade messages;
    1. setting up x%, xx%, (quite slow)
    2. After a while, Getting ready
    3. Applying PC Settings x%, xx% (really slow)
    4. Updating your system (fast)
    5. Setting up a few more things x%, (quite slow)
    6. Getting ready, again
    7. Accept license terms
    8. Express settings
    9. Confirmed previous password
    10. Next, I had to set up a Microsoft account – which is possibly now required, and not optional
    11. Using the Microsoft account required a 2 factor authorization, via text message, a 7 digit code for me
    12. Finalising settings
    13. Blank screen, HI .. We're setting up things for you (similar to original Windows 8 install)
    14. 'You can get new apps from the Store', below which is ’Installing your apps’ - I had Windows Media Center which is counts as an app from the Store
    15. ‘Taking care of a few things’, below which is ‘Installing your apps’
    16. ‘Taking care of a few things’, below ‘Don't turn off your PC’
    17. ‘Getting your apps ready’, below ‘Don't turn off your PC’
    18. ‘Almost ready’, below ‘Don't turn off your PC’
  14. … finally, we get the Windows 8.1 start menu, and a quick Win+D to check the desktop confirmed all the application icons I expected, pinned items on the taskbar, and one app moaning about a missing drive
  15. At this point the upgrade is complete – you can shutdown the virtual machine
  16. Reboot from the original Windows 8 and return to Windows 7 to configure booting to the Windows 8.1 copy of the VHD
  17. In an administrator command prompt do following use the bcdedit tool (from an MSDN blog about configuring VHD to boot in Windows 7)
    1. Type bcedit to list the current boot options, so you can copy the GUID (complete with brackets/braces) for the original Windows 8 boot to VHD
    2. Create a new menu option, copy of the Windows 8 option; bcdedit /copy {originalguid} /d "Windows 8.1"
    3. Point the new Windows 8.1 option to the copy of the VHD; bcdedit /set {newguid} device vhd=[D:]\Image.vhd
    4. Point the new Windows 8.1 option to the copy of the VHD; bcdedit /set {newguid} osdevice vhd=[D:]\Image.vhd
    5. Set autodetection of the HAL (may already be set); bcdedit /set {newguid} detecthal on
  18. Reboot from Windows 7 and select the new option 'Windows 8.1' on the boot menu, and you’ll have some messages to look at, as your hardware is redetected (as you are back from 1 CPU to 4 CPUs)
    1. ‘Getting devices ready, blank then %xx, with occasional blank screen, for the graphics driver, (fast-ish)
    2. Getting Ready message (fast)
  19. You will have to suffer one final reboots, choose 'Windows 8.1' and you can now login to a lovely Windows 8.1 start screen running on non virtualized hardware via boot to VHD
  20. After checking everything is running fine, you can now choose to Activate Windows, which for me was a toll free phone call to the automated system where you type in lots of numbers to be given a whole bunch of new activation codes.

Once you’re happy with your new Windows 8.1 boot to VHD, and no longer need the Windows 8 boot to VHD, feel free to delete the old one.  I do believe once you upgrade, you are no longer licensed to use it anyway.

There, that was simple wasn’t it?

Looking at the huge list of steps it took to perform this upgrade, you may wonder whether I think this is worth it.  Well, I think it is worth booting to VHD.  It makes backups a snap (go to Windows 7, copy the VHD, you backed up the o/s) and helps with disk management – want to move the o/s, you can move the VHD and repoint the boot menu to the new location.

The downside is that Microsoft has complete neglected to support boot to VHD as an upgradable option.  Quite a poor decision in my opinion, and if you read twitter and the forums quite a few people agree with that view.  It’s a shame this got missed in the work on creating the upgrade packages for Windows 8.1.

Posted On Saturday, October 19, 2013 8:56 AM | Comments (18)