= Proposed System Wide Change: Make BootLoaderSpec the default = https://fedoraproject.org/wiki/Changes/BootLoaderSpecByDefault
Owner(s): * Javier Martinez Canillas <javierm at redhat dot com> * Peter Jones <pjones at redhat dot com>
Use BootLoaderSpec fragment files by default to populate the bootloaders boot menu entries.
== Detailed description == The [https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/ Boot Loader Specification (BLS)] defines a scheme and file format to manage boot loader configuration for each boot option in a drop-in directory, without the need to manipulate bootloader configuration files. These drop-in directories are the standard on Linux nowadays, so the goal is to also extend this concept for boot menu entries. This is especially important in Fedora because the same bootloader is not used in all architectures. GRUB 2 is used in most of them, but there are others such as zipl for s390x and Petitboot for ppc64le. Not all bootloaders have the same configuration file format, so there is a need for an indirection level and per bootloader specific logic to edit these configuration files, when adding or removing a boot entry. The current component that does this work is grubby, that has support for all the different bootloader configuration file formats and manipulates them on kernel installation or uninstallation. Besides manipulating the bootloader configuration files, grubby also does other things like running dracut to create an initial ramdisk image. Fedora already has a lot of infrastructure in place to not require modifying bootloader configuration files for boot menu entries. The BootLoaderSpec and drop-in BLS fragments can be used instead, and the kernel-install script can do any additional task that is currently done by grubby. The kernel-install script has a pluggable design that uses a drop-in directory for scripts to extend its functionality. So if needed, any bootloader specific logic can be implemented as kernel-install scripts. With this setup the bootloader configuration could be static and not modified after installation. The missing piece was the lack of BLS support on all the supported bootloaders, but all of them have support to parse BLS fragments now. So we can default to install BLS files on kernel installation and drop grubby.
== Scope == * Proposal owners: ** Generate BLS snippets at kernel build time and ship in the kernel packages. ** Make kernel-install scripts to copy the BLS, kernel and initramfs images and do any architecture specific task. ** Make GRUB 2, zipl and Petitboot bootloaders to populate their boot menu entries from the information in BLS files. ** Have a grubby wrapper for backward compatbility that manipulates BLS files. ** Modify packages that use grubby to instead install BLS fragments (memtest86+, tuned). ** Make sure this is all properly documented in release-notes, etc.
* Other developers: ** The anaconda developers will need to review and merge the patches to change the default to BLS. ** Test and watch for regressions.
* Release engineering: RelEng review ticket: https://pagure.io/releng/issue/7572
** List of deliverables: N/A
* Policies and guidelines: The policies and guidelines do not need to be updated.
* Trademark approval: No changes needed.
devel-announce@lists.fedoraproject.org