Change: Systemd-boot > If an 'Extended Bootloader (XBOOTLDR)' partition is being used along with a very small ESP (usually when Dual-booting with Windows),

then the installer will now create sd-boot entries instead of UKIs, to save as much space as possible on the ESP.
This commit is contained in:
Jane Doe
2025-10-24 04:19:02 +03:00
parent 65b5a9a060
commit edd5e6ba73
+49 -6
View File
@@ -2,7 +2,7 @@
# Amelia Installer
# Source: https://gitlab.com/prism7/archery
# Version: 9.9.5
# Version: 9.9.6
set -euo pipefail
###################################################################################################
@@ -221,7 +221,7 @@ stage_fail() {
sleep 0.2
NC "
==> [${red}[!] ${stage_prompt} ${yellow}FAILED!${nc}]
==> [${red}[!] ${yellow}${stage_prompt} ${red}FAILED!${nc}]
"
failure
}
@@ -3429,6 +3429,7 @@ Enter [y/n]: "
case "${multibooting}" in
y)
uki="n"
sleep 0.2
YELLOW "
@@ -6499,7 +6500,11 @@ btldrcfg() {
if [[ "${xbootloader}" == "no" ]]; then
if arch-chroot /mnt <<-SDBOOT_INSTL > "${void}" 2>&1 2> "${log}" ; then
bootctl install || exit
sed -i "/^#timeout 3/s/^#//" ${btldr_esp_mount}/loader/loader.conf || exit
cat <<-LOADER_CFG > ${btldr_esp_mount}/loader/loader.conf || exit
timeout 3
console-mode auto
editor no
LOADER_CFG
systemctl enable systemd-boot-update || exit
SDBOOT_INSTL
stage_ok
@@ -6509,7 +6514,18 @@ SDBOOT_INSTL
elif [[ "${xbootloader}" == "yes" ]]; then
if arch-chroot /mnt <<-SD_XBOOTLDR_INSTL > "${void}" 2>&1 2> "${log}" ; then
bootctl --esp-path=/efi --boot-path=/boot install || exit
sed -i "/^#timeout 3/s/^#//" ${btldr_esp_mount}/loader/loader.conf || exit
cat <<-LOADER_CFG > ${btldr_esp_mount}/loader/loader.conf || exit
default arch.conf
timeout 3
console-mode auto
editor no
LOADER_CFG
cat <<-ENTRY_CFG > /boot/loader/entries/arch.conf || exit
title Arch Linux
linux /vmlinuz-${kernel}
initrd /initramfs-${kernel}.img
options rw ${boot_opts[*]}
ENTRY_CFG
systemctl enable systemd-boot-update || exit
SD_XBOOTLDR_INSTL
stage_ok
@@ -6748,7 +6764,7 @@ var_opts() {
if [[ "${sb_sign}" == "y" && "${setrescue}" == "y" ]]; then
local stage_prompt="Rescue Entry Creation"
if [[ "${bootloader}" == "1" ]]; then
if [[ "${bootloader}" == "1" && "${uki}" == "y" ]]; then
if arch-chroot /mnt <<-SDBOOT_RESCUE_ENTRY > "${void}" 2>&1 2> "${log}" ; then
echo "systemd.unit=rescue.target rw ${boot_opts[*]}" | tee /etc/cmdline.d/rescued.conf || exit
cat <<-PRESET > /etc/mkinitcpio.d/${kernel}.preset || exit
@@ -6766,6 +6782,19 @@ SDBOOT_RESCUE_ENTRY
else
stage_fail
fi
elif [[ "${bootloader}" == "1" && "${uki}" == "n" ]]; then
if arch-chroot /mnt <<-SD_XBOOTLDR_RESCUE_ENTRY > "${void}" 2>&1 2> "${log}" ; then
cat <<-XBOOTLDR_RESCUE_CONF > /boot/loader/entries/rescue.conf || exit
title Arch Rescue
linux /vmlinuz-${kernel}
initrd /initramfs-${kernel}.img
options rw systemd.unit=rescue.target ${boot_opts[*]}
XBOOTLDR_RESCUE_CONF
SD_XBOOTLDR_RESCUE_ENTRY
stage_ok
else
stage_fail
fi
elif [[ "${bootloader}" == "2" ]]; then
if arch-chroot /mnt <<-GRUB_RESCUE_ENTRY > "${void}" 2>&1 2> "${log}" ; then
touch /boot/grub/custom.cfg
@@ -7098,7 +7127,7 @@ secboot_sign() {
if [[ "${sb_sign}" == "y" ]]; then
local stage_prompt="Secure-Boot Signing"
if [[ "${bootloader}" == "1" ]]; then
if [[ "${bootloader}" == "1" && "${uki}" == "y" ]]; then
if arch-chroot /mnt <<-SDBOOT_SEC_SIGN > "${void}" 2>&1 2> "${log}" ; then
pacman -S --noconfirm sbctl || exit
sbctl create-keys || exit
@@ -7123,6 +7152,20 @@ SDBOOT_RESCUE_SEC_SIGN
stage_fail
fi
fi
elif [[ "${bootloader}" == "1" && "${uki}" == "n" ]]; then
if arch-chroot /mnt <<-SD_XBOOTLDR_SEC_SIGN > "${void}" 2>&1 2> "${log}" ; then
pacman -S --noconfirm sbctl || exit
sbctl create-keys || exit
sbctl enroll-keys -m || exit
sbctl sign -s /boot/vmlinuz-${kernel} || exit
sbctl sign -s ${btldr_esp_mount}/EFI/BOOT/${efiname}.EFI || exit
sbctl sign -s ${btldr_esp_mount}/EFI/systemd/systemd-bootx${bitness}.efi || exit
sbctl sign -s -o /usr/lib/systemd/boot/efi/systemd-bootx${bitness}.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx${bitness}.efi || exit
SD_XBOOTLDR_SEC_SIGN
stage_ok
else
stage_fail
fi
elif [[ "${bootloader}" == "2" ]]; then
if [[ "${path}" == "1" ]]; then
if arch-chroot /mnt <<-GRUB_SEC_SIGN > "${void}" 2>&1 2> "${log}" ; then