Loading
Reza Chegini

Junior DevOps Engineer

Junior Cloud Engineer

Junior Site Reliability Engineer

Software Engineer

Backend Developer

Reza Chegini

Junior DevOps Engineer

Junior Cloud Engineer

Junior Site Reliability Engineer

Software Engineer

Backend Developer

Blog Post

Arch + Ubuntu Dual-Boot with systemd-boot

October 1, 2025 Arch, Linux, Systemd, Ubuntu
Arch + Ubuntu Dual-Boot with systemd-boot

I recently wanted to discover Arch Linux and install it next to my Ubuntu in my homelab system. During the setup, I had problems with the bootloader. After some research and testing, I learned that using systemd-boot is the best way to manage both systems when they share the same EFI partition. This guide explains step by step how I fixed the issue.


1. Check EFI Partition

Both Arch and Ubuntu must use the same EFI partition, mounted at /boot/efi.

  • Arch puts kernel files (vmlinuz-linux, initramfs-linux.img, etc.) inside /boot/efi.
  • Ubuntu keeps kernel files in /boot and makes Boot Loader Specification (BLS) entries in /boot/efi/loader/entries/.

2. Install systemd-boot

In Ubuntu, run:

sudo bootctl install
sudo bootctl update

Check if it works:

sudo bootctl status

You should see Linux Boot Manager in the list.


3. Set Boot Order

List EFI entries:

sudo efibootmgr

Example:

Boot0000* Linux Boot Manager
Boot0002* ubuntu

Make Linux Boot Manager the default:

sudo efibootmgr -o 0000,0002

4. Loader Configuration

Edit /boot/efi/loader/loader.conf:

default arch.conf
timeout 5
console-mode max
  • default arch.conf → boots Arch first.
  • timeout 5 → menu shows for 5 seconds.
  • console-mode max → best resolution.

5. Ubuntu Boot Entry

Ubuntu makes its own entry in:

/boot/efi/loader/entries/

Example file:

title      Ubuntu 24.04.3 LTS
version    6.8.0-71-generic
options    root=UUID=<ubuntu-root-uuid> ro
linux      /UUID-boot-partition/6.8.0-71-generic/linux
initrd     /UUID-boot-partition/6.8.0-71-generic/initrd.img-6.8.0-71-generic

Systemd-boot will detect this automatically.


6. Arch Boot Entry

Create /boot/efi/loader/entries/arch.conf:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
initrd  /initramfs-linux-fallback.img
options root=UUID-root-partition rw

Replace UUID-root-partition with your Arch root UUID (find it with blkid).


7. Reboot and Test

Update systemd-boot:

sudo bootctl update

Restart your computer. Now you should see the systemd-boot menu with:

  • Arch Linux (default)
  • Ubuntu 24.04.3 LTS


Summary

  • One EFI partition is used for both Arch and Ubuntu.
  • systemd-boot manages the boot menu.
  • Ubuntu entry is created automatically.
  • Arch entry must be created manually.
  • loader.conf controls which system boots first and the menu timeout.

Tags:
Write a comment