Windows – How to boot directly into Vista and Windows 8 from Grub without the Microsoft boot manager

bootloadergrub2multi-bootwindows-8-preview

I have Vista and Windows 8 installed each on a primary partition and use Grub as boot manager. The problem is that Grub can no longer directly boot into Vista after the installation of Windows 8, as Windows 8 overwrites the Vista boot manager with it's own, which on top has the nasty habit of requiring an additional reboot before going into Vista (i.e. Grub -> WindowsBoot -> reboot -> Grub again -> Vista). Restoring the Vista boot manager isn't hard, but it wouldn't help, as the Windows 8 partition itself isn't bootable on it's own.

How can I configure it so that I can boot right into Vista and Windows 8 from Grub without having to use the Windows boot manager?

Edit: To clarify it a bit, what I want is simply: Vista bootmgr on the Vista partition, Windows 8 bootmgr on the Windows 8 partition and Grub in the MBR to select which one to boot.

Edit2: A partial answer can be found at:

With that I managed to get a somewhat working configuration (copied c:\boot over to drive e:, fudged around with bcdedit.exe to set some drives from c: to e:). Still have some remaining trouble such as Vista refusing to skip the boot menu automatically and Vista booting from the Windows 8 BCD and vice versa for some reason.

Best Answer

First step, install Vista, Windows 8 and Linux as usual. Windows 8 will install it's boot manager on the Vista partition, thus destroying the Vista bootloader.

Second step, copy the C:\Boot\ directory from the Vista to the Windows 8 partition, so the Windows 8 boot loader is where it belongs. This might need to be done from within Linux or the Windows recovery console, as Windows keeps a lock on some of the files.

Third step, use bcdedit to let the Windows 8 boot manager point to the Windows 8 partition, instead of the Vista one:

bcdedit.exe /store E:\boot\bcd /set {bootmgr} device partition=E:

This might need to be done from a Windows Installation disc in recovery mode.

Fourth step, boot with the Windows recovery disc and let it repair the Windows Vista boot or do it manually with:

bootrec /fixboot

The Windows Vista and Windows 8 boot loaders should now be each on their own partition where they belong.

To get rid of the boot menu one has to delete the Windows 8 menu entries from the Vista BCD and the Vista entry from the Windows 8 BCD, as timeout 0 and displaybootmenu No don't seem to work on their own. This can be done easily with EasyBCD.

Another thing to keep in mind, most of the Windows boot fix tools will work only on the partition with the boot flag set and do not allow to operate on a different partition. Thus one needs to ensure with cfdisk that the boot flag is set for the proper partition. This caused most of my confusion in the process, as even tools like EasyBCD would constantly try to operate on the wrong drive (i.e. the Windows 8 partition was marked bootable, needed to reset that to the first partition).

If everything is done update-grub should properly detect both Windows partitions and be able to boot into each directly without the Windows boot menu.