On my computer, I have two hard drives: one that contains Windows 7, and another that has Ubuntu, Windows 8.1, and Windows 10 Technical Preview. When I turn on my computer, Grub prompts me to select Ubuntu, Windows 8, or Windows 7. If I click Windows 8, it loads Windows and then prompts me to select the Windows 10 Technical Preview or Windows 8.1. If I select the one that wasn't just loaded (I think it loads whichever I used last), it restarts my computer and again shows Grub. Once I click Windows 8 again, it loads the option I actually wanted.

Given that I have this many operating systems on my computer, I likely will want to switch between them frequently, but when I have to go through multiple boot loaders and sometimes load an OS so that I can select another, which then forces me to shut down and go through a boot loader again to load the OS I actually want to use.

My point is that this is a pain. I would like Grub to prompt me for Windows 8 and Windows 10 separately. How could I achieve this? I was looking at bcdedit and it appears that I could delete boot entries, but I don't know enough about this to know if that will allow them to be separate and have Grub detect them separately, achieving what I want or if that will just break stuff.

Update: I found some information that I could use the legacy boot loader to at least avoid loading an operating system before I choose the one I want by calling "bcdedit /set "{current}" bootmenupolicy legacy" which I set and was messing around with for a while. I saw it happen once, but when I restarted my computer again it didn't work. When I check with bcdedit, it showed that the bootmenupolicy is set to legacy, but it doesn't actually do what I thought it should.


i think ur best option is to install windows to diffrent harddisks insted of diffrent partitions and then install ubunto to one of the two harddisks to a seprate partition and be shure to select the partition ur installing ubuntu to for the bootloader installation do that by not installing along side the detected os or os's but by selecting something else

i for understand the difficulty multi booting and how im set up was much harder to get mmy pc setup the way i was t i multi boot win xp pro win 7 home preimum win 8.1 pro win 10 enterprise android x86 4.4 r2 ubuntu 15.10

pc pc start up first ubuntu grub boots with 3 entrys for windows all 3 takes me to a windows boot loader grub and there i have a entry to boot android

to do this i had to use easyBCD.exe and grub2win.exe both are for windows i installed win xp 1st on disk 1 par 1 then android to disk 1 par 3 then win8.1 to disk 1 par 2 then win 7 to disk 2 par 1 but became par 2 due to system resurved thad was disk 2 par 1 anyways then win 10 installed to disk 2 par 3 last i installed ubunto to disk 3 i added no partitions to disk 3

hopefully you find this helpfull at least enoph to get ur multi boot up and running if u need more help my email is shootnoobsdaily@gmail.com

  • Welcome to Super User. Please put some effort into the presentation of your answer. Compare it to existing highly-upvoted posts on the site, and emulate their formatting and style. You should edit your answer.
    – Ben N
    Mar 1 '16 at 23:52

Apparently your issue is due to the fact that the two Windows on the same drive (Win 8.1 and Win 10) shares a boot partition/manager. I am not sure if this could happen for BIOS installations (shared "System Reserved" partition?), but that's almost definitely the case for UEFI installations (shared EFI System Partition, ESP).

Anyway, grub is not capable of passing any parameter or so to the Windows bootloader, so the (only?) solution would be using a separate one for each Windows installation. This can be done by bcdboot.exe (https://technet.microsoft.com/en-us/library/dd744347%28v=ws.10%29.aspx).

For example, if they are UEFI installations, create an extra FAT32 partition of the drive (well yeah you probably need to do some shrinking in Disk Management as well), then use bcdboot.exe to install a copy of UEFI bootloader from the system partition of Windows 10 (assuming the existing ESP has is made by Win 8 and you've deleted the Win 10 boot entry from the BCD). You might need to make sure that the new bootloader does not have Win 8 entry added to it as well (with bcdedit.exe or so).

For BIOS instllations, these can probably be done in similar way. It's just the partition should probably be NTFS instead. Pay attention to the /f swtich of bcdboot.exe.

P.S. I have no idea about what the trick/hack you mentioned about legacy bootloader in your post is. In any case, grub is not capable of switching from UEFI boot to legacy boot. That is, if it's grub x86_64-efi, there's no ntldr for you to load bootmgr; Similarly, if it's grub i386-pc, there's no chainloader for you to load bootmgfw.efi. Though I heard that refind is capable of switching to legacy boot, I don't see how it's gonna help you.

P.S.2 The method I mentioned may not necessarily make update-grub/grub-mkconfig/os-prober detect the two Windows bootloaders. The bottom line is it gives you a way to point to a specific Windows directly (search for the corresponding boot partition) in custom entries or grub.cfg.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.