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.cfg present
- Defeats the purpose of redundant boot disk configurations
Related
Summary
On multi-device setups (e.g. RAID 1 with an ESP per disk, or multi-disk installs via
--device),grubconfigs::install()only writesgrub.cfgandbootuuid.cfgto 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
bootupctl install --device /dev/sda --device /dev/sdb)bootupctl install(or let bootc perform the install)Expected Behavior
All ESPs should contain
EFI/<vendor>/grub.cfgandEFI/<vendor>/bootuuid.cfgso the system can boot from any disk.Actual Behavior
Only the ESP mounted at
/boot/efireceives 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 EFIgrub.cfgandbootuuid.cfginto thetarget_root's/boot/efi/EFI/<vendor>/directory. It has no awareness of additional ESP partitions on other devices. Whileefi::install()handles installing EFI binaries to all ESPs viafind_colocated_esps(), the GRUB config writing step was not extended with the same multi-device logic.Impact
grub.cfgpresentRelated