Linux – How to install reliable/flexible GRUB for multi-boot (Windows, Linux)


This question must've been asked a billion times, but I haven't found a real GRUB-related solution.

I need to install GRUB on a machine that'll have both Windows and Linux (Fedora) installed. It must always work, even after an update.

There are tons of howtos that describe how to install Windows first, then Linux, which is of course the easiest thing to do. Windows could be on /dev/sda1, Linux in one /dev/sda2 partition (including /boot) only (no swap in this example). The GRUB installer will detect Windows and add it to its menu. So GRUB is installed on /dev/sda2. Then, after a major update, maybe a full upgrade of that Linux, the GRUB menu is rebuilt and Windows isn't added automatically (yes, it should be, that's what I thought). Something similar happened to me in a Windows/Fedora/Debian configuration (can't remember which OS was gone, but doesn't matter). This GRUB is not independent from both systems.

So I thought I'd create a small boot partition /dev/sda1 where I would install GRUB myself (manually), have Windows in /dev/sda2, Linux in /dev/sda3 (/dev/sda1 is NOT mounted anywhere). The first GRUB would either load Windows, or Linux (I'd basically copy the current GRUB config of the Linux system). That works well (and no matter what, Windows won't automatically disappear from the boot menu), but the Linux entry would point to one specific sda3/boot/vmlinuz-3… / initrd sda3/boot/initramfs-3… Kernel file so a Kernel update wouldn't automatically boot the new Kernel (even worse, if the update removes the old Kernel, Linux won't boot at all anymore, until the Kernel file name is adjusted in the first GRUB menu).

So how do those people who have to be able to boot Windows solve that problem, so both operating systems will always be bootable, no matter what (without ever having to change the boot configuration in /dev/sda1)?

Best Answer

Related Question