Skip to content

Conversation

@ventureoo
Copy link
Member

@ventureoo ventureoo commented May 20, 2025

This has already been discussed in Discord. In brief, the main motivation for it:

  • GRUB has no active maintenance, has very large security issues [1][2][3] that have been popping up in waves for the last few years. All this time we left it only as a fallback option and for systems with BIOS due to lack of alternatives. Now there is Limine, which generally works much better: it already has a good set of tools to work with in the form of limine-entry-tool/limine-mkinitcpio-hook, supports loading Btrfs snapshots, searching for other systems for dual-booting via limine-scan from limine-entry-tool, has a codebase 14 times smaller than GRUB.

  • The only advantage of GRUB that is still relevant is the ability to keep /boot encrypted, since it is the only boot loader with ability to decrypt root partition itself without initramfs. That said, GRUB still doesn't have strong LUKS 2 support, and we have always used LUKS1 in calamares for GRUB. An alternative approach to hardening could be to use Secure Boot + checksum verification of kernel and initramfs files in Limine (see https://wiki.archlinux.org/title/Limine#Configuration).

  • The reason for changing the default from systemd-boot to Limine is simple - loading Btrfs snapshots is extremely useful for fast system recovery among ordinary users. Not everyone has the knowledge to figure out a breakdown, besides it is also time consuming to explain the solution to some breakdowns and issues, so a simple rollback from boot snapshot via Limine looks like the easiest and most reliable solution.

[1] - https://www.openwall.com/lists/oss-security/2025/02/18/3
[2] - https://lists.gnu.org/archive/html/grub-devel/2022-11/msg00059.html
[3] - https://lists.gnu.org/archive/html/grub-devel/2022-06/msg00035.html

Signed-off-by: Vasiliy Stelmachenok <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants