GRUB, systemd-boot, and Other Bootloaders
GRUB, systemd-boot, and Other Bootloaders
The bootloader bridges firmware and the Linux kernel. When engineering a distribution, you must choose a bootloader that matches your system architecture and hardware compatibility requirements.
+-------------------------------------------------------------+
| Bootloader Comparison |
| |
| Feature GRUB 2 systemd-boot |
| ----------------------------------------------------------- |
| Architecture Modular Mini-OS Minimal UEFI stub |
| Firmware Support BIOS + UEFI UEFI Only |
| Filesystem Drivers ext4, btrfs, zfs FAT32 / ESP only |
| Config Complexity Complex (grub.cfg) Trivial drop-in .conf|
| Binary Size ~10 MB ~100 KB |
| Scripting Engine Full POSIX-like sh None |
+-------------------------------------------------------------+
GRUB 2 (Grand Unified Bootloader)
GRUB 2 is the most powerful and versatile bootloader in the Linux ecosystem.
Key Capabilities:
- Operates as a mini-operating system with its own memory management, terminal emulator, graphics engine, and dynamic modules (
.mod). - Understands complex filesystems directly. GRUB can load a kernel located inside a software RAID (
mdadm), LVM volume group, encrypted LUKS container, or Btrfs subvolume. - Supports both legacy BIOS (
i386-pc) and 32/64-bit UEFI (x86_64-efi,i386-efi,arm64-efi).
GRUB Configuration (grub.cfg)
# /boot/grub/grub.cfg
set timeout=5
set default=0
menuentry "BYOL Linux (Rolling)" {
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root a4b2-8c11-deadbeef
linux /boot/vmlinuz-byol root=UUID=a4b2-8c11-deadbeef rw quiet console=tty0
initrd /boot/initramfs-byol.img
}systemd-boot (Formerly Gummiboot)
If your distribution targets modern UEFI systems exclusively, systemd-boot offers clean, minimalist elegance: - It relies entirely on the UEFI firmware’s built-in FAT32 filesystem driver. - It contains no filesystem drivers or scripting engines. It simply presents a menu of boot entries and invokes the kernel using the UEFI EFISTUB protocol.
Boot Loader Specification (BLS)
systemd-boot complies with the standard Boot Loader Specification. Adding a new kernel requires dropping a small .conf file into /boot/loader/entries/:
# /boot/loader/entries/byol-6.10.conf
title BYOL Linux
version 6.10.2
linux /vmlinuz-6.10.2
initrd /initramfs-6.10.2.img
options root=UUID=23b49e8a-1209 rw quietOther Notable Bootloaders
- Syslinux / Isolinux: Extremely popular for generating bootable live CDs and hybrid ISO images due to its tiny footprint and robust El Torito emulation.
- Limine: A modern, high-performance, open-source bootloader supporting BIOS, UEFI, and advanced protocols.
- U-Boot (Universal Boot Loader): The undisputed standard bootloader for embedded ARM boards, Raspberry Pi, and RISC-V development platforms.