Dual Boot on Windows 8.1


WinDualBoot

I remember the old days of spending hours trying to finger out how to dual boot Windows. With Windows 7 and 8 it is as simple as running a few commands from the command prompt. Follow along, out loud if you like, to create an entry in your current boot manager to allow choosing an OS to boot from, whether it be Windows, *nix or even 2 or 3 different physical HDDs.

Create a new boot loader using BCDEDIT

  1. In Windows 8, run command prompt as administrator (Right-click -> Run as Administrator)
    • Powershell will not work for this task.
  2. Open DISKPART:
    • diskpart
  3. Display a list of all volumes:
    • list volume
  4. Determine which disk is the volume containing your Windows 7 OS and make a note of its Ltr (drive letter).
  5. Type EXIT to close DISKPART.
  6. Make a backup of your current boot manager:
    • bcdedit /export d:\bootmgrbak
      • To restore your original config, run the following:
        • bcdedit /import d:\bootmgrbak
  7. Run the below command to list your current boot configuration:
    • bcdedit
      • The first section is your bootmgr
      • The second is the 8.1 boot loader. We’ll make a copy of this section and modify it.
  8. Run the below to copy the {current} boot loader and create a second entry. Type or copy the below exactly as it appears… no need to modify any part of it unless you want a name other than ‘Windows 7’.
    • bcdedit /copy {current} /d “Windows 7”
      • /d sets the name for the copied config to what is in quotes and sets it as a boot menu choice.
  9. Now let’s modify the config to point to our other volume/drive:
    • bcdedit
      • Note that you now have a 3rd entry with its description set to ‘Windows 7’.
      • Copy the ‘identifier’ string including the brackets {} and replace the bracket section in each command below and replace the partition value with your volume letter:
        • bcdedit /set {xxx} device partition=e:
        • bcdedit /set {xxx} osdevice partition=e:
        • bcdedit /set {xxx} systemroot \Windows
          • This should be the same whether 8 or 7 and you shouldn’t need to change it, but I’ve included it just in case.
        • bcdedit /set {xxx} path \windows\system32\boot\winload.exe
          • This should be the same whether 8 or 7 and you shouldn’t need to change it, but I’ve included it just in case.

That’s it. Reboot and you should see the fancy new Windows 8 bootloader screen with a choice between Windows 8.1 or Windows 7.

Avoid rebooting twice when you load the Windows 7 boot loader

If you choose Windows 7, your machine will reboot again to load the 7 boot loader. If you want to be able to make a choice without rebooting, run the following to change to the legacy boot screen… that old, familiar black and white, text-only screen. Once this is set to legacy, either choice will throw you straight into the selected OS without having to wait out another reboot and POST.

  • bcdedit /set “{current}” bootmenupolicy legacy
    • To reverse this, run the above, but replace ‘legacy’ with ‘standard’

Edit the timeout for the menu selection screen

  • From within Windows
    • Run msconfig from the command prompt or open Administrative Tools -> System Configuration.
    • Click on the Boot tab and set a timeout in seconds.
  • From an administrative command prompt:
    • bcdedit /timeout X
      • Substitue a time in seconds for X