ostree/docs/bootloaders.md
2023-12-14 07:34:41 -05:00

1.8 KiB

nav_order
11

Bootloaders

{: .no_toc }

  1. TOC {:toc}

OSTree and bootloaders

The intended design of OSTree is that it just writes new files into /boot/loader/entries. There is a legacy GRUB script (shipped on Fedora as ostree-grub2) that is intended only for the cases where the system GRUB does not support the blscfg verb.

In the happy path then, the flow of an OS update is just:

  • ostree writes a new set of files in /boot/loader/entries (during ostree-finalize-staged.service on system shutdown)
  • On system start, GRUB reads those files

And that's it.

OSTree and grub

For historical reasons, OSTree defaults to detecting the bootloader; if some GRUB files are present then OSTree will default to executing grub2-mkconfig.

GRUB and os-prober

A specific component of GRUB that can significantly impede the reliability of OS updates is the os-prober aspect, which scans all system block devices. If one doesn't care about dual booting, avoiding this is a good idea.

Anaconda

Until very recently, the Anaconda project only supported setting up the bootloader (e.g. GRUB) on its own, which requires grub2-mkconfig etc. As of recently, Anaconda now supports bootupd.

bootupd

As of recently, the bootupd project ships static grub configs and in this case, the sysroot.bootloader should be set to none (except on s390x). And assuming that the system grub has the blscfg support, which it does on Fedora derivatives per above.