
Bootloaders in Linux
In this wiki, you will learn, what is bootloader, why is bootloader exists and what bootloaders exists and how to install bootloader in Linux.
1. 🚀 ~ What Is a Bootloader?
A bootloader is a low-level program responsible for starting the Linux operating system. It is executed immediately after the system firmware (BIOS or UEFI) finishes hardware initialization. The bootloader loads the Linux kernel into memory, passes boot parameters, and transfers control to the kernel.
Simply put: a bootloader is the bridge between firmware and the operating system.
2. ❓ ~ Why Do Bootloaders Exist?
Bootloaders exist because system firmware is intentionally minimal and generic. They solve several critical problems:
Firmware limitations – BIOS and UEFI cannot directly boot complex operating systems
Filesystem awareness – Bootloaders understand filesystems and can load kernels from disk
Multi-boot support – Selecting between multiple operating systems or kernels
Kernel flexibility – Booting different kernel versions or recovery modes
Hardware abstraction – Unified boot process across different hardware
Security – Support for Secure Boot and cryptographic verification
Without bootloaders, modern operating systems like Linux would not be practical.
3. ⚙️ ~ High-Level Linux Boot Process
Power on – CPU starts execution
Firmware (BIOS/UEFI) – Hardware initialization and boot device selection
Bootloader – Loads kernel and initramfs
Linux kernel – Initializes drivers and mounts root filesystem
Init system – Starts system services and user sessions
4. 🧩 ~ Major Linux Bootloaders
GRUB (GRand Unified Bootloader)
Created by: GNU Project
Overview: GRUB is the most widely used Linux bootloader and has been the default choice for most Linux distributions for many years.
Key features:
Supports both BIOS and UEFI systems
Can boot Linux, Windows, BSD, and other OSes
Modular design with filesystem drivers
Advanced scripting and configuration language
Graphical and text-based menus
Why distributions use GRUB:
Extremely flexible
Mature and well-documented
Ideal for dual-boot and multi-boot systems
Typical usage:
Desktop Linux
Servers
Dual-boot systems
systemd-boot
Created by: systemd developers (originally by Intel)
Overview: systemd-boot is a minimalist UEFI-only bootloader designed to be simple, fast, and tightly integrated with modern Linux systems.
Key features:
UEFI-only (no BIOS support)
Simple text-based configuration
Uses standard EFI boot entries
Integrates with systemd tools
Philosophy:
Do one thing well
Avoid complex scripting
Favor convention over configuration
Typical usage:
Modern laptops
Clean UEFI installations
Arch Linux–based systems
Syslinux
Created by: H. Peter Anvin
Overview: Syslinux is a family of lightweight bootloaders primarily designed for removable media and simple boot scenarios.
Variants include:
ISOLINUX (CD/DVD)
PXELINUX (network boot)
SYSLINUX (FAT filesystems)
Key features:
Very small and fast
Simple configuration
Limited features compared to GRUB
Typical usage:
Live USBs
Installers
Embedded systems
rEFInd
Created by: Rod Smith
Overview: rEFInd is a graphical UEFI boot manager focused on usability rather than low-level boot logic.
Key features:
Automatic detection of installed OSes
Graphical icons and themes
Works as a boot manager rather than a full bootloader
Typical usage:
Multi-boot UEFI systems
Linux + Windows + macOS setups
Limine
Created by: Limine Bootloader Developers
Overview: Limine is a modern, advanced bootloader designed with simplicity, correctness, and modern standards in mind. It is increasingly popular in custom kernels and OS development.
Key features:
Supports BIOS and UEFI
Clean and well-defined boot protocol
Strong focus on correctness and stability
Minimal configuration complexity
Typical usage:
Custom Linux setups
OS development
Advanced users
5. 🗂️ ~ Bootloader Categories
By Firmware Type
BIOS bootloaders – Legacy systems
UEFI bootloaders – Modern systems
By Purpose
General-purpose – GRUB
Minimalist – systemd-boot
Removable media – Syslinux
Boot managers – rEFInd
Developer-focused – Limine
6. 🛠️ ~ Installing Bootloaders on Linux Distributions
Installing GRUB
Debian / Ubuntu / Linux Mint
Fedora
Arch Linux
Installing systemd-boot
systemd-boot is UEFI-only and requires:
A system booted in UEFI mode
A properly mounted EFI System Partition (ESP)
systemd version 233 or newer
Step 1: Verify UEFI mode
If the directory exists, the system is running in UEFI mode.
Step 2: Mount the EFI System Partition
The ESP is usually formatted as FAT32.
Example:
(Replace /dev/sdX1 with your actual EFI partition.)
On some distributions, the ESP may be mounted at /boot/efi instead.
If you have NVMe drive, instead of /dev/sdX you will have /dev/nvme0nXpX .
Step 3: Install systemd-boot
This installs systemd-boot into the EFI System Partition and creates a UEFI boot entry.
Step 4: Create loader configuration
Create the main loader configuration file:
Example configuration:
Step 5: Create a boot entry
Create a boot entry for Linux:
Example:
Replace UUID=XXXX with your actual root filesystem UUID. You can find your UUID using the command sudo blkid .
Distribution notes
Arch Linux – Fully supported and commonly used
Ubuntu – Possible but considered advanced/manual
Fedora – Not officially recommended (uses GRUB by default)
Installing rEFInd
Debian / Ubuntu
Fedora
Arch Linux
7. 🔐 ~ Secure Boot
Secure Boot is a UEFI feature that ensures only cryptographically signed bootloaders and kernels are executed. Many Linux distributions provide signed versions of GRUB or systemd-boot to support Secure Boot out of the box.
8. 🧯 ~ Common Bootloader Issues
System boots directly into firmware
Missing boot menu
Kernel not found
Typical recovery steps:
Boot from a live USB
Mount the installed system
Reinstall the bootloader
🎯 ~ Conclusion
Bootloaders are a foundational component of Linux systems. They exist to overcome firmware limitations, enable flexible boot configurations, support multiple operating systems, and provide a secure startup process. Understanding different bootloaders, their design goals, creators, and installation methods gives Linux users deeper insight into how their systems truly start.
Last updated