Dual-Booting Two Linux Distributions

GRUB & Multibooting

Chapter 7 · Dual-Booting Two Linux Distributions

A genuinely different problem from grub1-6, not just an easier version of it. Windows and GRUB are two entirely separate bootloaders with a clean handoff between them. Two Linux distros both install the same bootloader family, each with its own package manager convinced it alone is responsible for keeping the boot configuration current.

Why This Is a Genuinely Different Problem

With Windows, GRUB chainloads to a completely foreign bootloader it doesn't understand or manage — clean separation, no conflict of ownership. With two Linux distros, both typically install their own copy of GRUB, and each distro's own package manager — apt on a Debian-based system, dnf on a Fedora-based one, pacman on Arch — considers itself responsible for regenerating "the" grub.cfg every time its own kernel updates. A genuine conflict of ownership, not a clean handoff.

What Actually Happens When You Install a Second Distro

The second distro's installer typically detects that GRUB is already installed, and either offers to install its own alongside it or asks directly which distro's GRUB should actually control the boot process. This matters structurally: only one GRUB installation can actually be the one occupying the MBR's boot sector or holding the primary EFI boot entry (grub1-5's own material). That one installation's own os-prober is what scans for and lists every other distro's kernels as additional menu entries.

os-prober Finding Multiple Kernels — Not Just Multiple OSes

grub1-2 distinguished 10_linux (lists every kernel for the current distro) from 30_os-prober (finds other operating systems entirely). For a second Linux distro specifically, os-prober generates entries that chainload directly to that other distro's own kernel and initramfs — a different kind of chainload target than grub1-6's own bootloader-level handoff to Windows. This arrangement is more efficient, but genuinely more fragile: it can break if the other distro's own kernel file gets renamed or removed by its own package updates without the authoritative distro's grub.cfg ever being regenerated to notice.

Choosing an Authoritative GRUB

Practical guidance: settle on one distro's GRUB installation as authoritative — commonly whichever was installed last, since it's naturally the one left controlling the boot sector or EFI entry — and let its own os-prober manage the real, in-use grub.cfg, rather than fighting over which one "should" be in charge. The other distro's own GRUB installation, once superseded, becomes effectively redundant for actual booting — though its own package manager has no idea, and will keep dutifully regenerating its own grub.cfg on every kernel update: a file that firmware simply never reads. This is exactly the "competing package managers each wanting to own the boot process" tension this chapter opened with.

The os-prober Update Timing Problem

A genuine, real gotcha: the authoritative distro's own grub.cfg only picks up a new kernel from the other distro once the authoritative distro's own update-grub is manually re-run. The other distro's own package manager updating its own kernel does not automatically trigger the authoritative distro's own regeneration — they're two entirely separate systems, with no coordination between them at all. This can leave a stale, "phantom" menu entry pointing at a kernel that's since been replaced or removed, until update-grub is deliberately re-run on the authoritative side.

What's being handed off toThe real conflict
Linux + Windows (grub1-6)A completely separate, foreign bootloaderNone — a clean, one-directional handoff
Linux + Linux (this chapter)The other distro's own kernel/initramfs directlyTwo package managers each assuming ownership of the boot config
Re-run update-grub from the authoritative side after any change
After installing or updating either distro in a Linux/Linux dual-boot, deliberately re-run update-grub (or the local equivalent) from the authoritative distro specifically — never assume it happens automatically. This closes the update-timing gotcha directly.
Letting both distros fight over the boot sector is a real, common complaint
Allowing both package managers to regularly reinstall or update their own GRUB into the actual boot sector — rather than settling on one authoritative installation — is a real, avoidable source of "my dual-boot menu keeps changing or disappearing" confusion, and traces directly back to this chapter's own root cause: two systems, each convinced it alone owns the boot configuration.

Hands-On Exercises

Exercise 1

Explain, using this chapter's own compare-table, why a Linux/Linux dual-boot has a real ownership conflict that a Linux/Windows dual-boot structurally does not.

📄 View solution
Exercise 2

Distro B (not the authoritative one) receives a kernel update. Explain exactly what does and doesn't happen to the boot menu as a result, and the specific command needed to fix it.

📄 View solution
Exercise 3

A user notices their dual-boot menu occasionally changes ordering or loses an entry with no obvious cause. Using this chapter's own warn-box, propose the most likely root cause and how to confirm it.

📄 View solution

Chapter 7 Quick Reference

  • Linux/Linux is genuinely different from Linux/Windows: both distros install the same bootloader family, each package manager assuming ownership
  • Only one GRUB installation can actually control the boot sector/EFI entry — that one is authoritative, usually whichever was installed last
  • os-prober for a second Linux distro chainloads directly to that distro's own kernel/initramfs, not to a separate bootloader
  • The non-authoritative distro's own GRUB keeps regenerating its own unused grub.cfg — never actually read by firmware
  • The authoritative distro's grub.cfg only picks up the other distro's new kernel after its own update-grub is manually re-run
  • A dual-boot menu that changes or loses entries with no obvious cause traces directly back to two package managers fighting over ownership