How to Configure systemd-boot as the UEFI Boot Manager on Ubuntu Server

For over two decades, GRUB (Grand Unified Bootloader) has served as the default bootloader across Ubuntu distributions. While GRUB is feature-rich, supporting complex multi-boot environments, legacy BIOS systems, and diverse filesystem drivers, its monolithic architecture often introduces unnecessary complexity, slow boot initialization, and convoluted configuration scripts (/etc/default/grub and update-grub) on modern, pure-UEFI server infrastructure.

systemd-boot (formerly known as Gummiboot) is a minimalist, high-speed UEFI boot manager integrated directly into the systemd ecosystem. Designed exclusively for modern UEFI motherboards, systemd-boot executes native EFI kernel stubs directly from the EFI System Partition (ESP), eliminating secondary boot stages and reducing boot times to a fraction of a second on Ubuntu Server.

Why Consider systemd-boot Over GRUB?

Comparing systemd-boot to conventional GRUB reveals significant architectural advantages for pure UEFI systems:

  • Minimalist Codebase: systemd-boot does not contain filesystem drivers or complex command interpreters. It relies entirely on native UEFI firmware services to load the kernel and initial ramdisk (initrd).
  • Modular Configuration: Instead of generating massive, nested script files, systemd-boot uses straightforward drop-in text files conforming to the Boot Loader Specification (BLS) inside /boot/efi/loader/entries/.
  • Rapid Boot Execution: Eliminates GRUB’s multi-second menu processing, handing execution directly to the Linux kernel immediately upon firmware handoff.
  • Integrated Diagnostics: Managed via the unified bootctl command-line utility.

Prerequisites and Firmware Verification

systemd-boot requires a native UEFI motherboard environment. Before proceeding, confirm that your Ubuntu installation is booted in UEFI mode:

# Check for EFI runtime variables directory
ls /sys/firmware/efi/efivars

If the directory exists and lists EFI variable files, your system is running in UEFI mode. Ensure your EFI System Partition (ESP) is mounted at /boot/efi or /boot.

Installing systemd-boot Using bootctl

To install systemd-boot’s EFI binaries onto your EFI System Partition:

# Install systemd-boot into the ESP and register UEFI NVRAM boot entries
sudo bootctl install

The utility copies systemd-bootx64.efi into /boot/efi/EFI/systemd/ and creates the configuration directory structure inside /boot/efi/loader/.

Configuring the Master Loader Configuration

Configure the default loader behaviour by editing /boot/efi/loader/loader.conf:

sudo nano /boot/efi/loader/loader.conf

Add the following configuration directives:

# Master loader configuration
default ubuntu.conf
timeout 3
console-mode max
editor no

Directives explained:

  • default ubuntu.conf: Specifies the default boot entry file to load.
  • timeout 3: Displays the boot menu for 3 seconds before automatically booting (set to 0 for instant headless boot).
  • editor no: Disables interactive command-line editing at boot to prevent unauthorized parameter modifications.

Creating a Boot Loader Specification (BLS) Entry

Each kernel installed on your system requires a modular entry file inside /boot/efi/loader/entries/. Ensure your active kernel (vmlinuz) and initramfs (initrd.img) reside on the EFI partition:

# Copy current kernel and initramfs to the EFI partition
sudo cp /boot/vmlinuz-$(uname -r) /boot/efi/vmlinuz
sudo cp /boot/initrd.img-$(uname -r) /boot/efi/initrd.img

Create the entry configuration file:

sudo nano /boot/efi/loader/entries/ubuntu.conf

Populate the entry with your root filesystem’s UUID (retrieve this using blkid):

title   Ubuntu Server 24.04 LTS
linux   /vmlinuz
initrd  /initrd.img
options root=UUID=YOUR-ROOT-PARTITION-UUID-HERE ro quiet splash

Verifying Boot Entries with bootctl status

Before rebooting, verify your boot configuration using the bootctl status diagnostic check:

sudo bootctl status

The tool reports current firmware architecture, the mounted ESP path, installed binary versions, and validates that ubuntu.conf is recognized as a valid boot entry.

Transitioning to systemd-boot provides modern Ubuntu systems with a clean, modular, and exceptionally fast boot process free of legacy bootloader overhead.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.