bootc-dev / bootc-dev/bootc

Switching from RHEL 10 to Fedora 43 breaks boot loader due to missing grub.cfg

Open
#1,734 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
2.3k
Forks
230
Avg merge
3d 12h
Merged PRs (30d)
38

Description

I originally installed a machine from a RHEL 10 bootc image, which places the boot loader under `EFI/redhat/` on the EFI partition. Booting a Fedora 42 bootc image does not touch the RHEL 10 boot loader, but booting a Fedora 43 bootc image the first time does:

```
bootupctl[1646]: Previous EFI: grub2-efi-x64-1:2.12-29.el10_1.x86_64,shim-x64-15.8-5.el10_0.x86_64
bootupctl[1646]: Updated EFI: grub2-efi-x64-1:2.12-40.fc43.x86_64,shim-x64-15.8-3.x86_64
systemd[1]: Finished bootloader-update.service - Update bootloader on boot.
```

`bootupctl update` replaces the boot loader such that loader and configuration are now in separate directories:

```
# mount /dev/nvme0n1p1 /boot/efi/
# ll -R /boot/efi/
/boot/efi/:
total 4
drwxr-xr-x. 5 root root 4096 Oct 17 13:14 EFI/

/boot/efi/EFI:
total 12
drwxr-xr-x. 2 root root 4096 Oct 17 13:14 BOOT/
drwxr-xr-x. 2 root root 4096 Oct 17 13:14 fedora/
drwxr-xr-x. 2 root root 4096 Oct 17 13:14 redhat/

/boot/efi/EFI/BOOT:
total 1016
-rwxr-xr-x. 1 root root 949424 Oct 17 13:14 BOOTX64.EFI
-rwxr-xr-x. 1 root root 87816 Oct 17 13:14 fbx64.efi

/boot/efi/EFI/fedora:
total 6644
-rwxr-xr-x. 1 root root 110 Oct 17 13:14 BOOTX64.CSV
-rwxr-xr-x. 1 root root 4046144 Oct 17 13:14 grubx64.efi
-rwxr-xr-x. 1 root root 848080 Oct 17 13:14 mmx64.efi
-rwxr-xr-x. 1 root root 949424 Oct 17 13:14 shim.efi
-rwxr-xr-x. 1 root root 949424 Oct 17 13:14 shimx64.efi

/boot/efi/EFI/redhat:
total 8
-rwxr-xr-x. 1 root root 53 Oct 7 19:15 bootuuid.cfg
-rwxr-xr-x. 1 root root 657 Oct 7 19:15 grub.cfg
```

In this state, the machine fails to boot a second time since `grub.cfg` cannot be found.

The issue may be worked around by copying the configuration manually to both `EFI/fedora/` and `EFI/redhat/`, after which the machine is guaranteed to boot regardless of which boot loader was installed by `bootupctl update`.

```
mira:/boot/efi/EFI/redhat# cp -avi bootuuid.cfg grub.cfg ../fedora
'bootuuid.cfg' -> '../fedora/bootuuid.cfg'
'grub.cfg' -> '../fedora/grub.cfg'
```

Could `bootupd` be extended with some kind of hook which ensures that `grub.cfg` and `bootuuid.cfg` are always placed beside the updated boot loader, in the same directory?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.