All articles
October 12, 2026 6 min read

Understanding the Linux Boot Process

From the firmware handoff to init, a practical walkthrough of what actually happens when a Linux machine starts up.

LinuxOperating SystemsSystems

The Linux boot process is a sequence of small, well-defined stages that hand control from one component to the next until userspace is ready. Understanding it is foundational for systems work — debugging boot failures, writing daemons, or building a minimal OS all depend on knowing where you are in this sequence.

1. Firmware: BIOS or UEFI

Power-on hands control to the firmware. Legacy BIOS performs POST, then reads the first sector (the MBR) of the boot device. UEFI is more capable: it reads an EFI System Partition and launches a bootloader listed in the boot entries. UEFI also provides runtime services the kernel can use later.

2. The bootloader

GRUB is the common choice on desktop distributions. Its job is to load the kernel image and an initial RAM filesystem into memory, then jump to the kernel entry point. GRUB also lets you pass kernel command-line parameters and choose between installed kernels.

3. Kernel and initramfs

The kernel initialises hardware, sets up memory management, and mounts an initial RAM filesystem (initramfs) that contains the drivers and tools needed to find and mount the real root filesystem. Once the root filesystem is mounted, the kernel executes the init system.

4. Init and the service graph

On almost every modern distribution, init is systemd. It brings up services in a dependency-ordered graph — mounting filesystems, networking, then application services. A daemon like Bluetooth Autoconnect slots in here as a systemd unit, which is exactly why it can reconnect devices at boot before any user logs in.

Why it matters

Each stage is a checkpoint where things can go wrong, and each stage exposes a different debugging surface. Knowing whether a failure is firmware, bootloader, kernel, or init changes how you investigate it — and it's the mental model behind building any low-level system that starts itself.