Boot loaders

From ParabolaWiki
Jump to: navigation, search

A boot loader is a piece of software started by the firmware (BIOS or UEFI). It is responsible for loading the kernel with the wanted kernel parameters and any external initramfs images. In the case of UEFI, the kernel itself can be directly launched by the UEFI using the EFI boot stub. A separate boot loader or boot manager can still be used for the purpose of editing kernel parameters before booting.

Warning: To successfully boot Parabola, the boot loader needs access to the kernel and initramfs image(s) which typically reside in the /boot directory. That means the boot loader must have support for everything starting from the block devices, stacked block devices (LVM, RAID, dm-crypt, LUKS, etc.) and ending with the file system on which the kernel(s) and initramfs image(s) reside.

Since almost no boot loader supports such stacked block devices and since file systems can introduce new features which may not yet be supported by any boot loader, using a separate /boot partition with a universally supported file system, such as FAT32, is oftentimes more feasible.


Feature comparison

Note:
  • As GPT is part of the UEFI specification, all UEFI boot loaders support GPT disks. GPT on BIOS systems is possible, using either "hybrid booting" with Hybrid MBR, or the new GPT-only protocol. This protocol may however cause issues with certain BIOS implementations; see rodsbooks for details. The easiest way is to use MBR.
  • As Secure Boot is part of the UEFI specification, all UEFI boot loaders support it, although some have limitations.
Name Firmware Partition table Multi-boot File systems Notes
BIOS UEFI MBR GPT
EFISTUB Yes1 Yes Yes Inherited from firmware2 The kernel is a valid EFI executable which can be directly launched from UEFI or from another UEFI boot loader.
Unified kernel image Yes3 Yes Yes Inherited from firmware2 systemd-stub(7), a kernel, initramfs and kernel command line packed into EFI executable to be loaded directly from UEFI firmware or another boot loader.
GRUB Yes Yes Yes Yes Yes Built-in Supports RAID, LUKS1 and LVM (but not thin provisioned volumes). See GRUB for setup-specific limitations.
Limine Yes Yes Yes Yes Yes Limited
rEFInd No Yes Yes Yes Yes4 Extensible2,5 Supports auto-detecting kernels and parameters without explicit configuration, and supports fastboot [1].
Syslinux Yes Partial1 Yes Yes Partial Limited No support for certain file system features.
Can only access the file system it was installed to.
systemd-boot No Yes3 Manual Yes Yes4 Extensible2,5 Can only launch binaries from the ESP it is installed to or from the Extended Boot Loader Partition (XBOOTLDR partition) on the same disk.
Automatically detects unified kernel images placed in esp/EFI/Linux/.
GRUB Legacy Yes No Yes No Yes Limited Discontinued in favor of GRUB.
LILO Yes No Yes Partial Yes Limited Discontinued due to limitations (e.g. with Btrfs, GPT, RAID, encryption).
  1. While the binary can be signed for Secure Boot, it does no following verification, thus breaking the chain of trust.
  2. File system support is inherited from the firmware. The UEFI specification mandates support for the FAT12, FAT16 and FAT32 file systems[2], but vendors can optionally add support for additional file systems; for example, the firmware in Apple Macs supports the HFS+ file system. If the firmware provides an interface for loading UEFI drivers on startup, then support for additional file systems can be added by loading (independently acquired) file system drivers.
  3. Supports mixed mode booting. I.e. it can boot a 64-bit x86_64 Linux kernel on 32-bit IA32 UEFI.
  4. A boot manager. It can only launch other EFI applications, for example, Linux kernel images built with CONFIG_EFI_STUB=y and Windows Boot Manager (bootmgfw.efi).
  5. Supports loading UEFI file system drivers.

See also Wikipedia:Comparison of boot loaders.