Wiki - https://fedoraproject.org/wiki/Changes/AutomaticBootloaderUpdatesBootc Discussion thread - https://discussion.fedoraproject.org/t/f43-change-proposal-enable-automatic-updates-of-the-bootloader-for-bootable-container-systems-self-contained/158039
This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == We will enable automatic updates of the bootloader (GRUB) and shim for Bootable Container systems (bootc base images, Fedora CoreOS). == Owner == * Name/Email: [[User:hhei| Huijing Hei]], h...@fedoraproject.org * Name/Email: [[User:Siosm| Timothée Ravier]], si...@fedoraproject.org * Name/Email: [[User:Walters| Colin Walters]], walt...@fedoraproject.org == 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 an 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: [https://fedoraproject.org/wiki/Changes/FedoraSilverblueBootupd FedoraSilverblueBootupd], and the configuration in [https://pagure.io/workstation-ostree-config/blob/f41/f/bootupd.yaml 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 [https://github.com/coreos/bootupd/pull/669 #669] and discussed in issue [https://github.com/coreos/bootupd/issues/454 #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 [https://github.com/coreos/fedora-coreos-tracker/issues/1468 #1468] and [https://github.com/coreos/bootupd#status 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: <pre> $ sudo systemctl status bootloader-update.service $ journalctl -u bootloader-update.service $ sudo bootupctl status </pre> == 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 -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-annou...@lists.fedoraproject.org To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel-annou...@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue