Fedora atomic desktops are f41 onwards using a static GRUB config rather than the previously used grub2-mkconfig
-generated dynamic config.
It is apparently to transition to the new composefs
-based system using bootc+dnf5_plugins
ditching ostree
and rpm-ostree
[I don’t understand the motive, sorry… the current seems to work excellent; And simple].
In f41, grub2-mkconfig
just overwrites the static config, and still there aren’t issues. [/etc/grub.d/15_ostree
takes care of the ostree boot menu]
In the new static config, theming isn’t supported without overwriting the config.
/boot/grub2/user.cfg
file sourced by the static config doesn’t support including themes well. [You have to manually snip off many parts to get a non-conflicting config, and still there is spectacular failure of a ASCII undersized windows-only GRUB menu]
Additionally, you have to use insmod
, and many unknown commands and variables in /boot/grub2/user.cfg
rather than the well-known /etc/default/grub
. For trivial changes like the timeout, resolution, etc…
- systemd-boot has a decent theme which doesn’t look like a hacker’s console.
- It even has more stability, which is the main point of atomic distros.
- It automatically detects Windows, other distros etc…
- It is easier to maintain
/boot
of systemd-boot than grub. [No permissions etc… as FAT32 is supported; No superfluous config]
Some myths:
- It doesn’t support shim: It does support being called as
grub${ARCH}.efi
, chainloaded by shim, and all this is fully integrated intobootctl
… except the installation part. - It is complicated: It is dead simple
- It is only about UKIs: While UKIs are better, systemd-boot does support traditional kernels and initrds
- It uses a new systemd-specific standard: It uses the standard BLS scheme.
I would recommend it be manually copied as the grub executable, or use shim’s config [the EFI cmdline to shim is what it executes if it exists and works]. And skip boot${ARCH}.efi
if it already exists.
Why not make bootc use systemd-boot instead of GRUB, on UEFI systems?
It is much better.
GRUB is needed anyway on BIOS systems their limited MBR partition support means the kernel can’t usually have a separate partition.
On UEFI, anyways everything is embedded into the executable, and systemd-boot supports things more breakproof and better.
It’s config too is much simpler, and you don’t need to write a pseudo-shscript or use commands to “generate” a config[script-code /boot/grub2/grub.cfg
] based on config[/etc/default/grub
] and scripts[/etc/grub.d
] [“generate” = grub2-mkconfig
].
Yes, it is better for traditional workstation systems too, but those anyways can switch. Immutable distros need support from the maintainer for such low-level changes.