From edd5e6ba7377bbe6d410a307ea50225423477b46 Mon Sep 17 00:00:00 2001 From: Jane Doe Date: Fri, 24 Oct 2025 04:19:02 +0300 Subject: [PATCH] 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. --- Amelia.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/Amelia.sh b/Amelia.sh index dd8f465..17a690b 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -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