Enable automatic updates of the bootloader for Bootable Container systems
Summary
We will enable automatic updates of the bootloader (GRUB) and shim for Bootable Container systems (bootc base images, Fedora CoreOS).
Owner
- Name/Email: Huijing Hei, hhei@fedoraproject.org
- Name/Email: Timothée Ravier, siosm@fedoraproject.org
- Name/Email: Colin Walters, walters@fedoraproject.org
Current status
- Targeted release: Fedora Linux 43
- Last updated: 2025-09-25
- Announced
- Discussion thread
- FESCo issue: #3450
- Tracker bug: #2375567
- Release notes tracker: #254
Detailed Description
Currently, Bootable Container systems (bootc base images, Fedora CoreOS) do not perform bootloader updates automatically during OS upgrades. This means the GRUB and shim binaries on disk may become outdated even after a user performs a upgrade. Instead, the user is responsible for manually updating the bootloader using bootupctl update or systemctl start bootloader-update.service.
With this change, users do not need to manually update the bootloader - it is handled automatically after upgrades. When a new deployment is created (e.g., via bootc update or rpm-ostree upgrade), and if the new image contains updated bootloader artifacts (shim, grub, etc.), a systemd unit (bootloader-update.service) runs on the next boot to apply the update.
This feature has been enabled by default at boot for both UEFI and BIOS systems on Fedora Atomic Desktops starting since Fedora 41. For details, see the approved change proposal: FedoraSilverblueBootupd, and the configuration in bootupd.yaml.
While bootupd updates are generally safe across both UEFI and BIOS systems, UEFI is the modern and preferred boot mechanism. On UEFI systems, the EFI System Partition (ESP) is updated safely using a temporary directory and an atomic RENAME_EXCHANGE operation, as implemented in PR #669 and discussed in issue #454.
BIOS (MBR) updates are also supported and have been reliable in practice, but they lack the atomic guarantees and robustness of UEFI. For this reason, UEFI is recommended for systems that rely on automatic bootloader updates.
See more discussions in issue #1468 and bootupd's README for details about the safety of updates.
Feedback
None so far.
Benefit to Fedora
Bootloader updates generally bring security and other fixes. Applying them automatically will make sure that all systems are running the latest versions without any special intervention from users/admins.
Scope
- Proposal owners: Enable automatic bootloader updates for Bootable Container systems
- Other developers: N/A
- Release engineering: N/A
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with the Fedora Strategy: N/A
Upgrade/compatibility impact
Existing installations will have their bootloader updated as part of this change. This change should not require any manual action.
Users that do not want to have their bootloaders updated automatically for any reason can mask the systemd unit before the Fedora 43 release to disable this functionality.
Early Testing (Optional)
Do you require 'QA Blueprint' support? N
How To Test
- Download an older Fedora CoreOS version, and start it.
- Enable
bootloader-update.service. - Let the system update to the lastest version automatically via Zincati.
- Once rebooted, verify that the bootloader components have been updated automatically using bootupd:
$ sudo systemctl status bootloader-update.service $ journalctl -u bootloader-update.service $ sudo bootupctl status
User Experience
Bootloader updates will be automatically applied in the background on boot. There are no user actions required. User can check the status of their bootloader with the bootupctl status command.
Dependencies
N/A
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) Revert the change
- Contingency deadline: Beta/Final freeze
- Blocks release? No
Documentation
Mostly already written on the bootc and CoreOS side, will need some small updates:
- https://docs.fedoraproject.org/en-US/bootc/bootloader-updates/
- https://docs.fedoraproject.org/en-US/fedora-coreos/bootloader-updates/
Release Notes
To be written
