Make it boot

There is a complete Arch system on the disk, and nothing on that disk knows how to start it. Three things have to line up before a machine can bring itself up unattended:

  1. The firmware has to find something to run, without your help.
  2. That something has to load a kernel and an initramfs.
  3. The kernel has to be told where its root filesystem is, and how to mount it.

The second and third steps are where an install usually fails, and they fail in a specific way: the machine powers on, prints a little, and drops to an emergency shell because it cannot find a root to mount. Everything on these pages exists to prevent that.

Everything in this chapter runs inside the chroot

If you have left it, get back in with arch-chroot /mnt from the live system. The commands below write to the installed system, and several of them read /etc/fstab, which only exists inside it.

Read two pages, in this order

Step 1, everybody: Build the initramfs. This is the same work on both architectures and it is not optional – it is what finds and mounts your root filesystem at boot. Do this first.

Step 2, pick one to match the machine:

Machine Read Because
x86_64 PC Install systemd-boot UEFI firmware runs a boot loader from the ESP
Raspberry Pi 5 Configure the Pi firmware There is no boot loader; the firmware reads config.txt
warning

Do not jump straight to step 2. A boot entry that names a kernel and a root filesystem is useless if the initramfs cannot reach the disk, and that failure looks identical to a bad boot entry – you get an emergency shell either way, with nothing to say which of the two is wrong.

That split in step 2 is the biggest in this book. A PC has firmware that knows how to run an EFI program, and systemd-boot is that program. The Pi has firmware that reads a few text files off a FAT partition and jumps straight into the kernel – there is nothing in between to install or configure.

// settings
theme:
fx: