Systems running Linux with UEFI firmware can benefit from using systemd-boot instead of GRUB, especially when aiming for a simpler, faster, and more maintainable boot process. Systemd-boot is included with systemd, requires minimal configuration, and integrates closely with kernel updates. This switch is especially relevant for users who want to avoid the complexity of GRUB, deal with fewer dependencies, or streamline dual-boot setups with Windows. Below are detailed instructions to replace GRUB with systemd-boot, including considerations for different distributions and dual-boot environments.

Switching from GRUB to Systemd-Boot

Step 1: Confirm that your system uses UEFI firmware. Systemd-boot only works on UEFI systems; it does not support legacy BIOS. You can check this by running ls /sys/firmware/efi. If this directory exists, your system is booted in UEFI mode.

Step 2: Back up your data. Although changing bootloaders is generally safe, mistakes can lead to unbootable systems. Save important files and ensure you have a live USB or recovery media available.

Step 3: Install systemd-boot. Most distributions with systemd include systemd-boot. To install it to your EFI partition, run:

bootctl install

This command copies the systemd-boot EFI binary and creates the necessary directory structure inside the EFI partition.

Step 4: Configure loader settings. Edit or create /boot/loader/loader.conf (the path may vary; on some systems it’s /boot/efi/loader/loader.conf). Set the default entry and timeout:

default arch
timeout 3
editor 0

This configuration tells systemd-boot which entry to boot by default and how long to wait for user selection.

Step 5: Create boot entry files. Each Linux installation requires an entry file in /boot/loader/entries/. For example, create arch.conf with the following contents:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=YOUR-PARTUUID-HERE rw

Replace YOUR-PARTUUID-HERE with the actual PARTUUID for your root partition, which you can find using blkid.

Step 6: Add additional entries as needed. For dual-booting Windows, systemd-boot often auto-detects the Windows Boot Manager if it’s present on the same EFI partition. If not, you can create a file such as windows.conf in /boot/loader/entries/:

title   Windows
efi     /EFI/Microsoft/Boot/bootmgfw.efi

Adjust the path if your EFI partition is mounted elsewhere or if the Windows bootloader resides in a different location. If Windows is on another drive, mount its EFI partition and copy the Microsoft boot files into your main EFI partition as needed.

Step 7: Remove GRUB. Once you’ve confirmed that systemd-boot works—by rebooting and successfully booting into your OS—uninstall GRUB to avoid confusion and free up space:

sudo pacman -Rcnsu grub

On Debian/Ubuntu-based systems, use:

sudo apt-get purge grub*

Additionally, you may want to manually delete any leftover GRUB files from /boot or /boot/efi.

Step 8: Update your kernel and initramfs management. Systemd-boot does not automatically generate loader entries for new kernels unless you use Unified Kernel Images (UKIs). On Arch Linux, you can configure mkinitcpio to generate UKIs by uncommenting the uki line in its config. This allows systemd-boot to auto-detect new kernels placed in <esp>/EFI/Linux/.

Step 9: Test and troubleshoot. Reboot your system and verify that all entries work as expected. Use your firmware’s boot menu if you need to select the correct bootloader. If you encounter issues, consult your distribution’s wiki or forums for troubleshooting tips.

Alternative: Migrating on Debian/Ubuntu Systems

For Ubuntu and Debian systems, the process is similar but may require custom scripts to keep kernel images and loader entries synchronized due to differences in how these distributions handle kernel updates. You’ll typically:

  • Copy kernel and initrd images from /boot to your EFI partition.
  • Create or automate creation of entry files in /boot/efi/loader/entries/.
  • Set up post-install hooks to update entries when kernels are added or removed.
  • Install systemd-boot using bootctl install --path=/boot/efi.
  • Remove GRUB and its configuration files after confirming systemd-boot works.

Refer to your distribution’s documentation for any specific requirements, especially if using full disk encryption or LVM.


Key Considerations and Limitations

Systemd-boot is best suited for users who:

  • Run UEFI firmware (not legacy BIOS).
  • Prefer quick, straightforward boot management.
  • Don’t require complex features like booting from encrypted partitions without Unified Kernel Images, booting from ISOs, or advanced scripting.
  • Value minimal dependencies and easy maintenance.

GRUB remains a better fit for situations involving legacy BIOS, multi-boot with exotic filesystems, booting from encrypted partitions without UKIs, or when requiring advanced customizations and themes.

For users with Btrfs snapshots, GRUB offers direct integration with tools like grub-btrfs. Systemd-boot can work with Btrfs if the kernel and initramfs are placed on the EFI partition, but snapshot booting may require additional scripting.


Switching from GRUB to systemd-boot on a UEFI Linux system reduces bootloader complexity, speeds up the boot process, and simplifies maintenance. Always verify compatibility with your setup and keep recovery options handy in case you need to revert changes.