grub.cfg and bootuuid.cfg not synced to secondary ESPs on multi-device setups
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 196
- Forks
- 55
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 14
Description
Summary
On multi-device setups (e.g. RAID 1 with an ESP per disk, or multi-disk installs via --device), grubconfigs::install() only writes grub.cfg and bootuuid.cfg to the single ESP currently mounted at /boot/efi. Secondary ESPs on other disks are left without these files. If the system boots from a disk whose ESP was not the one mounted during install, GRUB drops to a rescue shell because it cannot find its configuration.
Steps to Reproduce
- Set up a multi-device configuration with an ESP on each disk (e.g. RAID 1, or install with
bootupctl install --device /dev/sda --device /dev/sdb) - Run
bootupctl install(or let bootc perform the install) - Inspect the ESPs on each disk
Expected Behavior
All ESPs should contain EFI/<vendor>/grub.cfg and EFI/<vendor>/bootuuid.cfg so the system can boot from any disk.
Actual Behavior
Only the ESP mounted at /boot/efi receives these files. The other ESPs have the EFI binaries (shim, grub) but are missing the GRUB configuration files, making them unable to complete the boot process.
Root Cause
grubconfigs::install() writes the static EFI grub.cfg and bootuuid.cfg into the target_root's /boot/efi/EFI/<vendor>/ directory. It has no awareness of additional ESP partitions on other devices. While efi::install() handles installing EFI binaries to all ESPs via find_colocated_esps(), the GRUB config writing step was not extended with the same multi-device logic.
Impact
- Systems with redundant boot disks cannot boot from the secondary disk if the primary fails
- GRUB drops to a rescue shell with no
grub.cfgpresent - Defeats the purpose of redundant boot disk configurations
Related
- #1059 — RAID 1 bootloader update failure (covers the ESP mount issue on RAID members, fixed separately in 2bf2dfb)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with grubconfigs::install() and compare its ESP handling with efi::install() and find_colocated_esps(). Review the related RAID mount fix in #1059, then reproduce the multi-device setup and inspect each ESP. Done means every ESP contains EFI//grub.cfg and bootuuid.cfg and can complete boot without a rescue shell.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 58/100