configs/releng/profiledef.sh: change UEFI boot loader from GRUB to systemd-boot

While using GRUB as the UEFI boot loader has reduced the size of the ISO,
it has brought nothing but pain otherwise:

* We cannot use `gfxterm` since it is not visible on some hardware.
* GRUB has a a strange and nonsensical limitation where the EFI binary
  can be built with either support for shim or custom Secure Boot key
  support, but not both. This means you cannot repack the ISO to use
  shim + MOK since we currently use `--disable-shim-lock` to provide
  support for setups with custom keys.
* GRUB's EFI binary needs to be built with `grub-mkstandalone` instead
  of there being a ready made EFI binary in the package. This requires
  having grub installed on the host system which affects reproducibility.

This increases the size of the ISO since systemd-boot cannot boot files
from other volumes, i.e. the kernel and initramfs is duplicated in the
EFI system partition (the second partition made from `efiboot.img`).

Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/227
This commit is contained in:
nl6720 2024-04-19 13:49:18 +03:00
parent 43e4d9ce36
commit 024cf1b710
No known key found for this signature in database
GPG key ID: 6B5387E670A955AD
2 changed files with 4 additions and 2 deletions

View file

@ -19,6 +19,8 @@ Changed
Custom PXE setups will need to update their boot loader configuration.
- Replace ``archisodevice`` boot parameter with ``archisosearchuuid`` in all boot loader configuration. This allows to
have "file system transposition" without relaying on GRUB-specific features.
- Replace GRUB with systemd-boot as the UEFI boot loader for the releng profile. While this increases the ISO size, it
avoids all GRUB-specific annoyances and oddities.
Deprecated
----------

View file

@ -9,8 +9,8 @@ iso_version="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)"
install_dir="arch"
buildmodes=('iso')
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
'uefi-ia32.grub.esp' 'uefi-x64.grub.esp'
'uefi-ia32.grub.eltorito' 'uefi-x64.grub.eltorito')
'uefi-ia32.systemd-boot.esp' 'uefi-x64.systemd-boot.esp'
'uefi-ia32.systemd-boot.eltorito' 'uefi-x64.systemd-boot.eltorito')
arch="x86_64"
pacman_conf="pacman.conf"
airootfs_image_type="squashfs"