Drop GRUB and use Limine by default #47
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
/bootencrypted, 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