Arch Linux systemd‑boot: automatic UEFI kernel entry management
systemd‑boot replaces manual GRUB config with pacman‑hooked auto-generated UEFI entries, simplifying Arch kernel updates after every pacman -Syu.
09 Oct 2026, 13:07 UTC

Concrete problem
You have just installed Arch Linux on a UEFI-only machine. The installer prompts you to select a bootloader, but most documentation still describes GRUB or rEFInd, which require manual entry creation and frequent updates after every kernel upgrade. The result is a steep learning curve for newcomers and a risk of a broken boot path if the configuration is not kept in sync.
Thesis
Arch Linux defaults to systemd-boot as the UEFI bootloader. It provides a minimal, script-driven loader that automatically creates and updates boot entries after each pacman -Syu, letting users focus on the system rather than the boot configuration.
How systemd-boot works
The loader runs early in the firmware's boot sequence. It scans the EFI System Partition (ESP) for .conf files, loads the kernel and initramfs paths, and applies any kernel parameters you specify. Because the configuration is plain text, you can edit it with any editor, and you can add custom parameters such as root= or quiet without touching low-level scripts.
Worked example: creating a custom entry and verifying it
- Create a custom entry. As root, create a file /boot/loader/entries/arch.conf with the following content:
- Verify the loader is active. Run:
- Check existing entries. List the files in /boot/loader/entries/:
- Simulate a kernel upgrade. Install a new kernel package (the pacman hook runs automatically):
- Risk check. If the ESP becomes corrupted, the bootloader cannot locate any .conf files, resulting in a No bootable device message. Regularly back up the /boot partition (e.g., rsync -a /boot /backup/boot) to mitigate this risk.
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID=12345678-1234-1234-1234-1234567890ab rw quiet
The UUID= placeholder must match the UUID of your root partition; you can obtain it with blkid.
bootctl --path=/boot status
Expected output includes a line showing the current boot manager and a list of loaded entries.
ls -l /boot/loader/entries/
You should see the .conf file you just created, plus automatically generated entries for the current kernel.
sudo pacman -Syu linux
After the upgrade, re-run bootctl --path=/boot status; a new entry named something like arch.conf will appear with the new kernel version.
Trade-off and limitation
Systemd-boot works only with UEFI firmware; it cannot be used on legacy BIOS systems without additional compatibility layers. Moreover, it does not perform automatic OS detection, so you must manually add entries for other operating systems. This keeps the boot process lightweight and transparent, which is ideal for a minimal Arch installation but may be less convenient for dual-boot scenarios.
Actionable closing
- Ensure the machine boots in UEFI mode (check with efibootmgr -v).
- Install the bootloader package: sudo pacman -S systemd-boot.
- Enable the pacman hook by ensuring /etc/pacman.d/hooks/50-bootloader.conf exists (it is installed by default).
- Run bootctl --path=/boot install to copy the loader binary to the ESP.
- Verify with bootctl --path=/boot status and check that entries appear in /boot/loader/entries/.
- Back up the /boot partition regularly, especially after major system changes.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.