coreos / coreos/bootupd

grub.cfg and bootuuid.cfg not synced to secondary ESPs on multi-device setups

Open
#1,076 3 comments 0 reactions 0 assignees View on GitHub

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

  1. 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)
  2. Run bootupctl install (or let bootc perform the install)
  3. 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

  • #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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.