The Boot Chain
The whole handoff sequence in one diagram, with the exact artefact passed at each step and where each one lives on disk.
Debugging a boot that doesn't work means knowing exactly what got handed from one stage to the next, and where the artefact each stage is looking for actually lives on disk. Every stage in this chain does one job and then gets out of the way — it doesn't know what came before it beyond the one thing it was given, and it doesn't know what comes after beyond the one thing it produces. That narrowness is what makes the chain debuggable at all: a failure has a location, because every step either found its input or it didn't. This page is the map. The rest of this folder is the territory each stop on the map expands into.
The chain, end to end
The full boot chain, with the artefact handed over at each step.
Two topics sit beside this chain rather than inside it, because they aren't handoff steps: the kernel command line is text threaded through several of these arrows rather than a stage of its own, and Secure Boot is a verification gate that can sit between any two of the first three nodes, rejecting a handoff instead of performing one.
What is handed over at each step
| Step | Artefact | Where it lives on disk | How to inspect it |
|---|---|---|---|
| Firmware picks a loader | a boot variable / boot order entry | firmware NVRAM — not on any filesystem | efibootmgr -v |
| Boot loader loads a kernel | \EFI\<vendor>\grubx64.efi (UEFI) or the MBR's first-stage code (legacy) | the EFI System Partition, or the disk's first sector | ls /boot/efi/EFI/*/ |
| Kernel image | /boot/vmlinuz-* | /boot | ls -l /boot/vmlinuz-* |
| Initramfs | /boot/initrd.img-* | /boot | lsinitramfs /boot/initrd.img-$(uname -r) | head (Debian/Ubuntu) |
| Real root | whatever root= names — a device, a UUID, a LABEL | named on the kernel command line, not stored as a file | cat /proc/cmdline |
| Init | /sbin/init | the real root filesystem, reachable only after switch_root | ls -l /sbin/init |
Where each step is covered
| Step in the chain | Page |
|---|---|
| What firmware does before anything Linux exists | Firmware: BIOS and UEFI |
| The full chain, in one place | this page |
| Finding a kernel and initramfs, and handing off | Boot Loaders |
| What text actually gets passed to the kernel | The Kernel Command Line |
| Verifying every step before it's allowed to run | Secure Boot and Signed Kernels |
Unpacking bzImage into a running kernel | Inside bzImage |
| CPU mode transitions before the first C function | Early Boot: Getting to C |
start_kernel() and the initcall levels | start_kernel and the Initcall Order |
| Unpacking and using the initramfs | initramfs and Early User Space |
| Moving to the real root and becoming PID 1 | switch_root and PID 1 |
| How systemd turns units into a boot | systemd: The Model |
| Reading timestamps, diagnosing a broken boot | systemd in Practice, and Debugging a Broken Boot |
Where it usually breaks
| Symptom | Likely step | Covered in |
|---|---|---|
| Firmware finds nothing bootable | firmware has no usable boot-order entry (empty NVRAM, missing ESP) | Firmware: BIOS and UEFI |
| Loader menu appears, but no kernel is found | the loader's config points at a vmlinuz/initrd that isn't where it expects | Boot Loaders |
| Kernel panics with "unable to mount root fs" | the root= device named on the command line doesn't exist or isn't ready yet | switch_root and PID 1 |
Dropped to an (initramfs) shell prompt | early user space couldn't find or mount the real root itself | initramfs and Early User Space |
Boots to emergency.target | systemd reached PID 1 fine, but a critical unit or mount failed after that | systemd in Practice, and Debugging a Broken Boot |
References
- Boot Loader Specification —
the standard
/bootlayout modern distributions are converging on, and the source for this page's artefact-location table. - The kernel's admin guide to
init— the kernel's own account of the "unable to mount root" class of failure, written for exactly this page's failure table. man 7 boot— the traditional boot sequence, stated compactly, and a useful cross-check against this page's diagram.