Reference Dual/Tri-boot Arch Install (BTRFS, Encrypted, suspend to disk, Unified Kernel Images)

Update 2026: added btrfs with transparent ZSTD encryption to save SSD space.

My old install process is here . In this one, I switched to UKIs (Unified Kernel Images) and systemd-boot, for a faster, cleaner setup. This is a clean way to have peaceful coexistence with other OSes on the same drive. And it paves the way for secure boot in case you need to have a virus OS like Windows installed.

Table of Contents

Boot into Arch Installation Image

See the official guide .

Format Drive

Install Main OS

This is encrypted Arch on /dev/nvme0n1p2.

Encrypt root partition

Prepare Arch partition

Mount ESP

Install system

Chroot in and configure system time, language, etc

Set up Kernel and Bootloader

Edit kernel command flags by adding them (optionally separated by newlines to /etc/kernel/cmdline:

root=/dev/mapper/crypt
rd.luks.name=<UUID of /dev/nvme0n1p2>=crypt
rootflags=compress=zstd:3
rw

(Source for kernel arguments)

Enable UKIs by changing the mkinitcpio preset at /etc/mkinitcpio.d/linux.preset:

ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"

PRESETS=('default')

default_uki="/efi/EFI/Linux/arch-linux.efi"
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

(Source for mkinitcpio configuration)

Create the directories /efi/EFI/Linux. This is where systemd-boot automatically looks for kernel images.

Generate the ramdisk: mkinitcpio -p linux

Install Bootloader

User and root setup

Final configurations after rebooting

[connection]
wifi.cloned-mac-address=random

[connection]
ethernet.cloned-mac-address=random

Swap and hibernate

Sources

Adding a second OS

The steps are identical for adding the second OS, except you’re installing to a different partition. That means you need to:

Furthermore, you can skip installing systemd-boot a second time. The existing bootloader will automatically pick up your new UKI in EFI/Linux/ on the ESP.

Using systemd-boot

By default, systemd-boot has a timeout of 0 so it will immediately boot the default OS without giving a choice. You can set the timeout option in /efi/loader/loader.conf if you want to always see the menu. See the man page for some more options to set.

However, I prefer to leave the timeout at 0 for the fastest possible boot. The trick is you can press and hold Spacebar once the OEM splash screen displays (e.g. the Lenovo logo). This will show the systemd-boot menu for this boot only. You can then choose a default OS by scrolling to it in the menu and pressing ’d'.

Notes

See Also