Hey there, I’m setting up my first custom arch install, having used Opensuse/Fedora/Tuxedo in the past with grub.

For now the arch install lives in a QEMU playground, but should eventually share an esp with Windows and Tuxedo. (I plan to shift Tuxedo from Grub to systemd-boot beforehand though)

For a this new setup, I’ve chosen systemd-boot and mkinitcpio with linux-lts. I’ve got the loader configs for sd-boot working with some trial&error. The default preset in mkinitcpio is still not doing what I want though.

Part of this is just me not understanding mountpoints in Arch. I’m used to the esp being mounted to “/boot/efi” with kernels and ramdisks living in something like “boot/efi/arch/{kernelver}-{kernelname}/kernel.img” and executables/UKIs living in “/boot/efi/EFI/Linux/arch/uki.efi”. It seems that packages for kernels and ucode are hardcoded to the esp being at “/boot”. Which does mess with me, but so be it. Mkinitcpio also has a disabled preset to put UKIs in “/efi”, a mountpoint I have never seen used. Given that it references an “EFI”-folder in there, this seems to also want to be the esp-root.

Could someone explain the mountpoint setup in arch to me? And also, is there a point/way to bend the paths to use /boot/efi, or am I better served to just mount the esp at /boot and accept the difference?

Thanks in advance.

  • ZWQbpkzl [none/use name]@hexbear.net
    link
    fedilink
    English
    arrow-up
    1
    ·
    12 days ago

    You set everything to /boot because that’s the mount point of your boot partition. /dev/sda1 or whatever gets mounted to /boot

    • Grub will make /boot/EFI/<NAME>/grubx64.efi and will dump a bunch of files to /boot/grub.
      • For grub you edit configs in /etc/default/grub and generate the actual configs with grub-mkconfig
    • Bootctl will make /boot/EFI/systemd/systemd-bootx64.efi and loader configs to /boot/loader
      • Configs for bootctl are edited directly in /boot/loader/
    • Mkinitcpio will dump .img files to /boot/

    If you mount your boot partition to /boot/efi instead of just /boot, you’ll have to specify that with command line flags for each of those commands. At first that’s easy enough. grub-mkconfig and grub-install only need to be run once. I believe that the same for bootctl. mkinitcpio however runs via a pacman hook whenever you update your kernel. You’ll have to ensure that the hook doesn’t default to /boot. I don’t know how to do that though.

    Better off to just accept the difference IMO. Things will “just work”.