/dev/sda7 is a partition I created for /boot, but I’m not using it anymore. I now mount /dev/sda1 on /mnt/efi and then mount bind /mnt/efi/EFI/arch on /boot.

/dev/sda8 is a swap partition

/dev/sda9 is the partition used for the system and my home, I use BTRFS subvolumes.
/dev/sda8and/dev/sda9` are encrypted using Luks.

So basically /dev/sda8 has an UUID as device (b7c05834-a995-412f-bb0e-63069778d21a) and gets another UUID when decrypted through Luks (cd9d2579-f4dc-4aaa-878f-d54e9ea9bb83). This is the same for the swap partition.

/dev/sda9 - (decryption makes it available as) -> /dev/dm-0 (or /dev/mapper/luks-b7c05834-a995-412f-bb0e-63069778d21a)
This is configured in /etc/crypttab.

Kernel boot parameters

Once this is understood it’s possible to create the kernel arguments line that is required to boot this system.
root=UUID=1aea47d1-1bb3-4a90-b1bc-e9354cca1417 rw rootflags=subvol=root luks.uuid=44739df0-7605-45e1-ab30-eb2e7d4f00c8 luks.uuid=b7c05834-a995-412f-bb0e-63069778d21a resume=/dev/mapper/luks-b7c05834-a995-412f-bb0e-63069778d21a initrd=\EFI\arch\intel-ucode.img initrd=\EFI\arch\initramfs-linux.img

This can be split as the following units

root=UUID=1aea47d1-1bb3-4a90-b1bc-e9354cca1417 tells the kernel that this UUID is the root partition (this needs to be the UUID of unencrypted partition)

rw instructs the kernel to mount the root partition read/write

rootflags=subvol=root is a BTRFS specific setting, that specifies the subvolume to use for root partition

luks.uuid=44739df0-7605-45e1-ab30-eb2e7d4f00c8 this tells the kernel that this uuid needs to be decrypted, and if specified in /etc/crypttab, use the settings there

luks.uuid=b7c05834-a995-412f-bb0e-63069778d21a same thing for another partition

resume=/dev/mapper/luks-b7c05834-a995-412f-bb0e-63069778d21a this is the partition used for resume from suspend, this is the unencrypted swap

initrd=\EFI\arch\intel-ucode.img this is the initrd

initrd=\EFI\arch\initramfs-linux.img this is the initramfs

UEFI boot manager entry

Now I can add en entry to the UEFI boot manager using efibootmgr. I’ve added a few more arguments to pass to the kernel, but they’re not mandatory. We can finally check the result with the second command.