• checking efivars

it seems as though the most straightforward way to do this is by issuing the following command.

note if your host system is not EFI, you won’t be able to set up EFI in a chroot environment regardless.

$ ls /sys/firmware/efi

if the above command outputs a directory listing containing efivars among other things, you’re good


  • mounting a device w/ efivars

this may not be explicitly required by every host distro you’re chrooting from, however, it is on void. if you’ve been in the chroot environment and got to the end only to realize you never mounted the efivars, simply exit the chroot and umount -R /mnt. issue the following command to ensure the correct things get mounted

ensure to replace /dev/sda1 with your correct EFI partition

$ mount /dev/mapper/cryptroot /mnt
$ mount /dev/sda1 /mnt
$ for dir in dev proc sys run; do mkdir -p /mnt/$dir ; mount --rbind /$dir /mnt/$dir ; mount --make-rslave /$ mnt/$dir ; done

  • efibootmgr

this command is very fickle in my experience, i’ve seen numerous uses of it on various wikis and forums which seem completely different from one another. it works and writes entries relative to /boot, so files that it refers to in the command are located relative to that path. i’ve seen info online that using backslashes “" isn’t required, others stating that it is. likewise i’ve seen people using the -u operand contained with double quotes " vice single quote ’ characters. the entry below works for me.

  • note, ensure this is ran AFTER configuring mkinitcpio and ensuring that correct, up to date initramfs is in /boot. likewise, ensure you’ve installed the correct microcode for your PC and it exists in /boot
efibootmgr -d /dev/sdb -p 1 -c -L Artix -l /vmlinuz-linux -u 'loglevel=4 cryptdevice=UUID=abcdef6h1jklmn0p:artix root=/dev/mapper/artix initrd=\amd-ucode.img initrd=\initramfs-linux.img'