systemd-boot is the lightweight bootloader bundled with systemd. On Arch + UEFI, it replaces GRUB with about ten lines of config. Fast, predictable, no Turing-complete config language.
Prerequisites
- A UEFI Arch Linux system (not BIOS — GRUB is the answer there).
- An EFI System Partition (ESP) at
/bootor/efi. The Arch wiki recommends mounting it at/efibut/bootis the common default. - Root or sudo access.
Step 1: Confirm UEFI
ls /sys/firmware/efi/efivars # should exist
bootctl status # shows firmware + boot entries
If the directory is empty, you booted in BIOS mode and need GRUB instead.
Step 2: Install the bootloader
sudo bootctl install
That copies the bootloader to the ESP and writes an EFI boot entry.
Step 3: Loader configuration
/boot/loader/loader.conf:
default arch.conf
timeout 3
console-mode max
editor no
editor no is important — without it any local user can edit kernel cmdline at the boot menu and pop a shell. Always disable for production.
Step 4: Boot entries
/boot/loader/entries/arch.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw quiet
Find your root UUID:
blkid /dev/nvme0n1p2
# or
lsblk -f
For AMD CPUs replace intel-ucode.img with amd-ucode.img.
A fallback entry pinned to the older initramfs is good insurance:
/boot/loader/entries/arch-fallback.conf:
title Arch Linux (fallback)
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux-fallback.img
options root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw
Step 5: Auto-update the bootloader
When the systemd package updates, your bootloader binaries on the ESP do not — until you tell them to. Install the pacman hook:
sudo mkdir -p /etc/pacman.d/hooks
sudo tee /etc/pacman.d/hooks/95-systemd-boot.hook <<'EOF'
[Trigger]
Type = Package
Operation = Upgrade
Target = systemd
[Action]
Description = Updating systemd-boot
When = PostTransaction
Exec = /usr/bin/bootctl update
EOF
Now bootctl update fires automatically after every pacman -Syu that bumps systemd.
Step 6: Verify the boot menu
Reboot once and confirm the menu shows the entries. To pick a non-default temporarily, press space during the timeout.
sudo bootctl list # show all entries
sudo bootctl status # full status incl. firmware vars
Verify
bootctl status | head -30
ls /boot/loader/entries/
cat /etc/pacman.d/hooks/95-systemd-boot.hook
Conclusion
systemd-boot is the right call on any UEFI Arch box you do not need GRUB's features (multi-boot menu painting, ZFS root, GRUB scripting). Ten lines of config, a pacman hook, and you are done.
Next steps
- Install Arch first via step-by-step install.
- Manage packages with pacman + AUR.
- Set up networking with NetworkManager on Arch.
Comments
0 total · 0 threads