diff --git a/Amelia.sh b/Amelia.sh index 722708e..bb5a650 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -1,7 +1,7 @@ #!/bin/bash # Amelia Installer -# Version: 7.1 +# Version: 7.2 set -euo pipefail trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR @@ -1049,9 +1049,6 @@ Enter a number: " if [[ "${espmnt}" == "1" ]]; then esp_mount="/mnt/efi" btldr_esp_mount="/efi" - if [[ "${bootloader}" == "1" ]]; then - xbootloader="yes" - fi sleep 0.2 YELLOW " @@ -2587,8 +2584,6 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Prese ${magenta}* Btrfs${nc} compatible Layout - ${red}* XBOOTLDR${nc} partition is only 'Systemd-boot' compatible - [1] Create 'ESP' and '/Root' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) @@ -2597,15 +2592,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Prese [3] Create 'ESP', '/Root' and '/Home' (${cyan}Ext4${nc}) - [4] Create 'ESP', '/Root', '/Home' and '/Swap' (${cyan}Ext4${nc}) - - [5] Create 'ESP', ${red}'XBOOTLDR' ${nc}and '/Root' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - - [6] Create 'ESP', ${red}'XBOOTLDR'${nc}, '/Root' and '/Swap' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - - [7] Create 'ESP', ${red}'XBOOTLDR'${nc}, '/Root' and '/Home' (${cyan}Ext4${nc}) - - [8] Create 'ESP', ${red}'XBOOTLDR'${nc}, '/Root', '/Home' and '/Swap' (${cyan}Ext4${nc}) " + [4] Create 'ESP', '/Root', '/Home' and '/Swap' (${cyan}Ext4${nc}) " BLUE " @@ -2685,25 +2672,13 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " if [[ -z "${use_manpreset}" ]]; then if [[ "${fs}" == "2" ]]; then - if [[ "${xbootloader}" == "yes" && "${swapmode}" == "1" ]]; then - preset="6" - elif [[ "${xbootloader}" == "yes" && "${swapmode}" != "1" ]]; then - preset="5" - elif [[ "${swapmode}" == "1" ]]; then + if [[ "${swapmode}" == "1" ]]; then preset="2" elif [[ "${swapmode}" != "1" ]]; then preset="1" fi elif [[ "${fs}" == "1" ]] ; then - if [[ "${xbootloader}" == "yes" && "${sep_home}" == "y" && "${swapmode}" == "1" ]]; then - preset="8" - elif [[ "${xbootloader}" == "yes" && "${sep_home}" == "y" && "${swapmode}" != "1" ]]; then - preset="7" - elif [[ "${xbootloader}" == "yes" && "${sep_home}" == "n" && "${swapmode}" == "1" ]]; then - preset="6" - elif [[ "${xbootloader}" == "yes" && "${sep_home}" == "n" && "${swapmode}" != "1" ]]; then - preset="5" - elif [[ "${sep_home}" == "y" && "${swapmode}" == "1" ]]; then + if [[ "${sep_home}" == "y" && "${swapmode}" == "1" ]]; then preset="4" elif [[ "${sep_home}" == "y" && "${swapmode}" != "1" ]]; then preset="3" @@ -2720,7 +2695,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " return 0 fi - if [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]] ; then + if [[ "${preset}" == "3" || "${preset}" == "4" ]] ; then sleep 0.2 YELLOW " @@ -2742,7 +2717,7 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " echo fi - if [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]] ; then + if [[ "${preset}" == "3" || "${preset}" == "4" ]] ; then if [[ "${prcnt}" == [[:alpha:]] ]]; then sleep 0.2 RED " @@ -2780,101 +2755,55 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " case "${preset}" in 1) - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:0 -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:0 -t2:8304 -c2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 2) - until set_swapsize; do : ; done - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:0 -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; + until set_swapsize; do : ; done + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:0 -t3:8304 -c3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 3) - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+"${rootsize}"G -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:0 -t 3:8302 -c 3:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${rootsize}"G -t2:8304 -c2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:0 -t3:8302 -c3:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 4) - until set_swapsize; do : ; done - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:+"${rootsize}"G -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 4:0:0 -t 4:8302 -c 4:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; - 5) - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:0 -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; - 6) - until set_swapsize; do : ; done - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:+"${swapsize}"G -t 3:8200 -c 3:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 4:0:0 -t 4:8304 -c 4:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; - 7) - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:+"${rootsize}"G -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 4:0:0 -t 4:8302 -c 4:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; - 8) - until set_swapsize; do : ; done - sgdisk -I -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 3:0:+"${swapsize}"G -t 3:8200 -c 3:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 4:0:+"${rootsize}"G -t 4:8304 -c 4:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n 5:0:0 -t 5:8302 -c 5:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - if [[ "${install}" == "yes" ]]; then - autopart="yes" - until sanity_check; do : ; done - else - ok - fi ;; + until set_swapsize; do : ; done + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:+"${rootsize}"G -t3:8304 -c3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n4:0:0 -t4:8302 -c4:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; "") if [[ "${smartpart}" == "n" ]]; then reload @@ -2892,7 +2821,7 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " invalid return 1 ;; esac - + if [[ "${install}" == "yes" ]]; then return 0 fi @@ -2988,6 +2917,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ==> [${green}Disk ${cgdrive} OK${nc}] " + partprobe -s "${cgdrive}" return 1 else invalid @@ -3355,7 +3285,7 @@ ${multi_swap} return 1 fi fi -#-------------------------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------------------------# if [[ -e "${root_dev}" ]]; then rootprt="ok" if [[ "${autoroot}" == "y" ]]; then @@ -3375,6 +3305,22 @@ ${multi_swap} ### ${yellow}Linux x86-64 /Root Partition not detected ${red}### ---------------------------------------------------" fi +#.................................................................................................. + if [[ -e "${esp_dev}" ]]; then + espsize="$(lsblk -dno SIZE --bytes "${esp_dev}")" + if [[ "${multibooting}" == "y" && "${bootloader}" == "1" && "${espmnt}" == "1" && "${espsize}" -lt "209715200" ]]; then + xbootloader="yes" + if [[ ! -e "${xboot_dev}" ]]; then + sleep 0.2 + RED " + ------------------------------------------------------ + ### ${yellow}A Linux Extended Boot Partition is mandatory ${red}### + ------------------------------------------------------" + fi + else + xbootloader="no" + fi + fi if [[ ${xbootloader} == "yes" ]]; then if [[ -e "${xboot_dev}" ]]; then @@ -3397,87 +3343,55 @@ ${multi_swap} ----------------------------------------------------" fi fi +#.................................................................................................. - if [[ -e "${esp_dev}" ]]; then - espsize="$(lsblk -dno SIZE --bytes "${esp_dev}")" - if [[ "${espsize}" -lt "209715200" ]]; then - if [[ "${bootloader}" == "1" ]]; then - if [[ "${espmnt}" == "1" ]]; then - if [[ "${xbootprt}" == "ok" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - elif [[ "${xbootprt}" == "fail" ]]; then - espprt="fail" - fi - elif [[ "${espmnt}" == "2" ]]; then - espprt="fail" - fi - elif [[ "${bootloader}" == "2" ]]; then - if [[ "${espmnt}" == "1" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - elif [[ "${espmnt}" == "2" ]]; then - espprt="fail" - fi - fi - elif [[ "${espsize}" -ge "209715200" ]]; then - if [[ "${bootloader}" == "1" ]]; then - if [[ "${espmnt}" == "1" ]]; then - if [[ "${xbootprt}" == "ok" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - elif [[ "${xbootprt}" == "fail" ]]; then - espprt="fail" - fi - elif [[ "${espmnt}" == "2" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - fi - elif [[ "${bootloader}" == "2" ]]; then - if [[ "${espmnt}" == "1" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - elif [[ "${espmnt}" == "2" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - fi - fi - fi - - if [[ "${espprt}" == "fail" && "${espsize}" -lt "209715200" ]]; then - sleep 0.2 - RED " - --------------------------------------------- - ### ${yellow}WARNING: ESP's size is not adequate ${red}### - ---------------------------------------------" - fi - else + if [[ ! -e "${esp_dev}" ]]; then espprt="fail" sleep 0.2 RED " ------------------------------------------- ### ${yellow}EFI System Partition not detected ${red}### -------------------------------------------" - fi + elif [[ -e "${esp_dev}" && "${espsize}" -lt "209715200" && "${xbootloader}" == "yes" ]]; then + if [[ "${xbootprt}" == "ok" ]]; then + espprt="ok" + sleep 0.2 + NC " +==> [EFI System Partition ${green}OK${nc}] " + elif [[ "${xbootprt}" == "fail" ]]; then + espprt="fail" + fi + elif [[ -e "${esp_dev}" && "${espsize}" -lt "209715200" && "${xbootloader}" == "no" ]]; then + if [[ "${bootloader}" == "1" ]]; then + espprt="fail" + sleep 0.2 + RED " + --------------------------------------------- + ### ${yellow}WARNING: ESP's size is not adequate ${red}### + ---------------------------------------------" + elif [[ "${bootloader}" == "2" && "${espmnt}" == "2" ]]; then + espprt="fail" + sleep 0.2 + RED " + --------------------------------------------- + ### ${yellow}WARNING: ESP's size is not adequate ${red}### + ---------------------------------------------" + elif [[ "${bootloader}" == "2" && "${espmnt}" == "1" ]]; then + espprt="ok" + sleep 0.2 + NC " + +==> [EFI System Partition ${green}OK${nc}] " + fi + elif [[ -e "${esp_dev}" && "${espsize}" -ge "209715200" ]]; then + espprt="ok" + sleep 0.2 + NC " + +==> [EFI System Partition ${green}OK${nc}] " + fi +#.................................................................................................. if [[ "${fs}" == "1" ]]; then if [[ "${sep_home}" == "y" ]]; then if [[ -e "${home_dev}" ]]; then @@ -3501,7 +3415,7 @@ ${multi_swap} fi fi fi - +#.................................................................................................. if [[ "${swapmode}" == "1" ]]; then if [[ -e "${swap_dev}" ]]; then swapprt="ok" @@ -3523,7 +3437,7 @@ ${multi_swap} --------------------------------------------" fi fi - +#.................................................................................................. if [[ ${rootprt} == "fail" ]] || [[ "${espprt}" == "fail" ]] || [[ "${xbootprt}" == "fail" ]] || [[ ${homeprt} == "fail" ]] || [[ ${swapprt} == "fail" ]]; then sanity="no" else @@ -3569,7 +3483,7 @@ ${multi_swap} ok return 0 elif [[ "${partok}" == "n" ]]; then - if [[ "${multibooting}" == "n" ]]; then + if [[ "${multibooting}" == "n" ]]; then if [[ "${smartpart}" == "y" ]]; then reload until manual_part; do : ; done @@ -4925,7 +4839,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS " #------------------------------------------------------------------------------------------ elif [[ "${fs}" == "2" ]]; then - mkfs.btrfs -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 || err_abort + mkfs.btrfs -f -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 || err_abort mount /dev/mapper/"${ENCROOT}" /mnt > /dev/null 2>&1 || err_abort btrfs subvolume create /mnt/@ > /dev/null 2>&1 || err_abort btrfs subvolume create /mnt/@home > /dev/null 2>&1 || err_abort @@ -5398,7 +5312,7 @@ btldr_conf() { if [[ "${bootloader}" == "1" ]]; then cnfg local stage_prompt="Systemd-boot" - if [[ "${espmnt}" == "1" ]]; then + if [[ "${espmnt}" == "1" && "${xbootloader}" == "yes" ]]; then if [[ "${uki}" == "n" ]]; then if arch-chroot /mnt <<-XBOOTCTL_NOUKI > /dev/null 2>&1 ; then bootctl --esp-path=/efi --boot-path=/boot install || exit @@ -5425,7 +5339,34 @@ XBOOTCTL_UKI stage_fail fi fi - elif [[ "${espmnt}" == "2" ]]; then + elif [[ "${espmnt}" == "1" && "${xbootloader}" == "no" ]]; then + if [[ "${uki}" == "n" ]]; then + if arch-chroot /mnt <<-BOOTCTL_NOUKI > /dev/null 2>&1 ; then + bootctl --esp-path=/efi install || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit + cat <<-SDBOOT_CONF > /boot/loader/entries/arch.conf || exit + title ${entrname} + linux /vmlinuz-${kernel} + initrd /initramfs-${kernel}.img + options rw ${boot_opts} +SDBOOT_CONF + systemctl enable systemd-boot-update || exit +BOOTCTL_NOUKI + stage_ok + else + stage_fail + fi + elif [[ "${uki}" == "y" ]]; then + if arch-chroot /mnt <<-BOOTCTL_UKI > /dev/null 2>&1 ; then + bootctl --esp-path=/efi install || exit + systemctl enable systemd-boot-update || exit +BOOTCTL_UKI + stage_ok + else + stage_fail + fi + fi + else if [[ "${uki}" == "n" ]]; then if arch-chroot /mnt <<-BOOTCTL_NOUKI > /dev/null 2>&1 ; then bootctl install || exit