diff --git a/Amelia.sh b/Amelia.sh index 2a7639f..4215c93 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -2,7 +2,7 @@ # Amelia Installer # Source: https://gitlab.com/prism7/archery -# Version: 1.0.5 +# Version: 1.0.6 set -euo pipefail ################################################################################################### @@ -1439,10 +1439,33 @@ Enter [y/N]: " sleep 0.2 YELLOW " - ### A /Home Partition will be created${cyan} + > Make a selection: " + NC " + + [1] Create a /Home partition + + [2] Utilize a previously used unencrypted /Home partition " + BLUE " - >> ${nc}To use an ${yellowl}existing /Home ${nc}partition select ${yellowl}'Manual Mode' ${nc}at the ${bwhite}'Mode Selection' ${nc}stage ";; +Enter a number: " + read -r -p " +==> " hometype + echo + case "${hometype}" in + 1) + sleep 0.2 + YELLOW " + + ### A /Home Partition will be created " ;; + 2) + sleep 0.2 + YELLOW " + + ### An existing /Home Partition will be used " ;; + *) invalid + return 1 ;; + esac ;; n) skip echo;; @@ -3678,10 +3701,10 @@ Enter a Preset number ${bwhite}(empty to skip)${blue}: " elif [[ -z "${preset}" && "${partok}" == "n" ]]; then alternatives manual_part - return 0 + return 0 elif [[ -z "${preset}" ]]; then skip - return 0 + return 0 else invalid return 1 @@ -4546,10 +4569,14 @@ ${multi_swap} ok return 0 elif [[ "${partok}" == "n" ]]; then - if [[ "${multibooting}" == "n" ]]; then + if [[ "${multibooting}" == "n" && "${hometype}" == "1" ]]; then reload until auto_part; do : ; done return 0 + elif [[ "${multibooting}" == "n" && "${hometype}" == "2" ]]; then + reload + until manual_part; do : ; done + return 0 elif [[ "${multibooting}" == "y" ]]; then reload until manual_part; do : ; done @@ -4571,7 +4598,7 @@ ${multi_swap} - ${bwhite}Press any key to continue${nc} + ${bwhite}Press any key to continue${nc} " @@ -4602,7 +4629,7 @@ ${multi_swap} NC " - ${bwhite}Press any key to continue${nc} + ${bwhite}Press any key to continue${nc} " read -r -s -n 1 @@ -4620,8 +4647,13 @@ ${multi_swap} until manual_part; do : ; done fi elif [[ "${multibooting}" == "n" ]]; then - reload - until auto_part; do : ; done + if [[ -z "${hometype}" || "${hometype}" == "1" ]]; then + reload + until auto_part; do : ; done + else + reload + until manual_part; do : ; done + fi fi fi } @@ -4629,6 +4661,15 @@ ${multi_swap} ask_crypt() { local prompt="Encryption Setup" + LuksArray=("Root") + [[ "${hometype}" == "1" ]] && LuksArray+=("Home") + [[ "${swapmode}" == "1" ]] && LuksArray+=("Swap") + delimiter="" + LuksParts="" + for item in "${LuksArray[@]}"; do + LuksParts="$LuksParts$delimiter$item" + delimiter="," + done sleep 0.2 NC " @@ -4637,12 +4678,12 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encry " BLUE " - > Enable${nc} ${cyan}${roottype} ${blue}Encryption? [LUKS] " + > Utilize LUKS encryption ? " NC " * Type '${cyan}no${nc}' to proceed without encryption - * Type '${cyan}yes${nc}' to encrypt your ${roottype} + * Type '${cyan}yes${nc}' to encrypt your ${LuksParts} " read -r -p " ==> " encrypt @@ -4724,91 +4765,11 @@ Re-enter password: " reload return 1 fi - line2 - sleep 0.2 - YELLOW " - > Enter a name for your Encrypted ${roottype} Partition: " - BLUE " - -Enter a name: " - read -r -p " -==> " ENCROOT - echo - - ENCROOT="${ENCROOT,,}" - - if [[ -z "${ENCROOT}" ]]; then - sleep 0.2 - RED " - ----------------------------- - ### ${nc}Please enter a name ${red}### - -----------------------------" - reload - return 1 - elif [[ -n "${ENCROOT}" ]]; then - sleep 0.2 - NC " - -==> [${green}Encrypted ${roottype} Label OK${nc}] " - fi - - if [[ -e "${home_dev}" ]]; then - if [[ "${sep_home}" == "y" ]]; then - sleep 0.2 - YELLOW " - - - ### A /Home Partition has been detected " - sleep 0.2 - BLUE " - - - > Encrypt${nc} ${nc}/Home ${blue}partition? [LUKS] " - NC " - - * Type '${cyan}no${nc}' to proceed without encryption - - * Type '${cyan}yes${nc}' to encrypt your /Home - " - read -r -p " -==> " homecrypt - echo - - if [[ "${homecrypt}" == "no" ]]; then - skip - elif [[ "${homecrypt}" == "yes" ]]; then - sleep 0.2 - YELLOW " - > Enter a name for your Encrypted /Home Partition: " - BLUE " - - -Enter a name: " - read -r -p " -==> " ENCRHOME - - ENCRHOME="${ENCRHOME,,}" - echo - if [[ -z "${ENCRHOME}" ]]; then - sleep 0.2 - RED " - ----------------------------- - ### ${nc}Please enter a name ${red}### - -----------------------------" - reload - return 1 - elif [[ -n "${ENCRHOME}" ]]; then - sleep 0.2 - NC " - -==> [${green}Encrypted /Home Label OK${nc}] " - fi - else - yes_no - return 1 - fi - fi + if [[ "${sep_home}" == "y" && "${hometype}" == "2" ]]; then + homecrypt="no" + elif [[ "${sep_home}" == "y" && "${hometype}" == "1" ]]; then + homecrypt="yes" fi ok else @@ -5163,22 +5124,10 @@ ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}A homeform="y" elif [[ "${preset}" =~ ^(3|4)$ ]]; then homeform="y" - elif [[ -z "${smartpart}" || -z "${preset}" ]]; then - YELLOW " - - - > A /Home partition has been detected. Format as ${fsname} ? [y/N]${cyan} - - - >> ${nc}Selecting ${bwhite}[N] ${nc}will re-use the ${yellowl}existing /Home ${nc}partition - - " - read -r -p " -==> " homeform - - echo - homeform="${homeform:-n}" - homeform="${homeform,,}" + elif [[ "${hometype}" == "1" ]]; then + homeform="y" + elif [[ "${hometype}" == "2" ]]; then + homeform="n" fi if [[ "${homeform}" == "y" ]]; then @@ -5485,21 +5434,10 @@ ask_homepart_form() { homeform="y" elif [[ "${preset}" =~ ^(3|4)$ ]]; then homeform="y" - elif [[ -z "${smartpart}" || -z "${preset}" ]]; then - YELLOW " - - > A /Home partition has been detected. Format as ${fsname} ? [y/N]${cyan} - - - >> ${nc}Selecting ${bwhite}[N] ${nc}will re-use the ${yellowl}existing /Home ${nc}partition - - " - read -r -p " -==> " homeform - - echo - homeform="${homeform:-n}" - homeform="${homeform,,}" + elif [[ "${hometype}" == "1" ]]; then + homeform="y" + elif [[ "${hometype}" == "2" ]]; then + homeform="n" fi if [[ "${homeform}" == "y" ]]; then @@ -5870,7 +5808,7 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In ################################################################################################### revise() { - reset=(xbootloader="" desktop="" terminal="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" autoroot="" autoxboot="" autohome="" autoswap="" lowlat="" nogsp="" sanity="" partok="" preset="" set_optm="" ask_param="" kill_watchdog="" genoptm="" desk_setup="" devel="" web="" web_pkg="" web_aur="" web_slct="" set_optm_slct="" oomd="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="" gptabort="" nvdprop="" nowarning="") + reset=(xbootloader="" desktop="" terminal="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" autoroot="" autoxboot="" autohome="" autoswap="" lowlat="" nogsp="" sanity="" partok="" preset="" set_optm="" ask_param="" kill_watchdog="" genoptm="" desk_setup="" devel="" web="" web_pkg="" web_aur="" web_slct="" set_optm_slct="" oomd="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="" gptabort="" nvdprop="" nowarning="" hometype="" homeform="") export "${reset[@]}" gfxpkgs=() @@ -5934,11 +5872,12 @@ revise() { ################################################################################################### sec_erase() { + if [[ "${swapmode}" != "1" ]]; then + line2 + fi local prompt="Secure Erasure" sleep 0.2 NC " - - ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure Disk Erasure${nc} ${magenta}]${nc}-----------------------------------${magenta}### " erase_dsk_nmbr=" " @@ -6008,15 +5947,15 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS " if echo -n "${CRYPTPASS}" | cryptsetup luksFormat --label CRYPTROOT "${root_dev}" > "${void}"; then if [[ "${rota}" == "0" ]]; then - echo -n "${CRYPTPASS}" | cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${root_dev}" "${ENCROOT}" || err_abort + echo -n "${CRYPTPASS}" | cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${root_dev}" CryptArch || err_abort else - echo -n "${CRYPTPASS}" | cryptsetup luksOpen "${root_dev}" "${ENCROOT}" || err_abort + echo -n "${CRYPTPASS}" | cryptsetup luksOpen "${root_dev}" CryptArch || err_abort fi #------------------------------------------------------------------------------------------ if [[ "${fs}" == "1" ]]; then - mkfs.ext4 -F -L Root /dev/mapper/"${ENCROOT}" > "${void}" 2> "${log}" || err_abort - tune2fs -O fast_commit /dev/mapper/"${ENCROOT}" > "${void}" 2> "${log}" || err_abort - mount /dev/mapper/"${ENCROOT}" /mnt > "${void}" 2> "${log}" || err_abort + mkfs.ext4 -F -L Root /dev/mapper/CryptArch > "${void}" 2> "${log}" || err_abort + tune2fs -O fast_commit /dev/mapper/CryptArch > "${void}" 2> "${log}" || err_abort + mount /dev/mapper/CryptArch /mnt > "${void}" 2> "${log}" || err_abort sleep 0.2 NC " ==> [${green}Encrypted /Root OK${nc}] @@ -6024,8 +5963,8 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS luks_root="ok" #------------------------------------------------------------------------------------------ elif [[ "${fs}" == "2" ]]; then - mkfs.btrfs -f -L Root /dev/mapper/"${ENCROOT}" > "${void}" 2> "${log}" || err_abort - mount /dev/mapper/"${ENCROOT}" /mnt > "${void}" 2> "${log}" || err_abort + mkfs.btrfs -f -L Root /dev/mapper/CryptArch > "${void}" 2> "${log}" || err_abort + mount /dev/mapper/CryptArch /mnt > "${void}" 2> "${log}" || err_abort btrfs subvolume create /mnt/@ > "${void}" 2> "${log}" || err_abort btrfs subvolume create /mnt/@home > "${void}" 2> "${log}" || err_abort btrfs subvolume create /mnt/@cache > "${void}" 2> "${log}" || err_abort @@ -6036,14 +5975,14 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS btrfs subvolume create /mnt/@swap > "${void}" 2> "${log}" || err_abort fi umount /mnt > "${void}" 2> "${log}" || err_abort - mount -o "${sbvl_mnt_opts}",subvol=@ /dev/mapper/"${ENCROOT}" /mnt > "${void}" 2> "${log}" || err_abort - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@home /dev/mapper/"${ENCROOT}" /mnt/home > "${void}" 2> "${log}" || err_abort - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@cache /dev/mapper/"${ENCROOT}" /mnt/var/cache > "${void}" 2> "${log}" || err_abort - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@log /dev/mapper/"${ENCROOT}" /mnt/var/log > "${void}" 2> "${log}" || err_abort - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@tmp /dev/mapper/"${ENCROOT}" /mnt/var/tmp > "${void}" 2> "${log}" || err_abort - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@snapshots /dev/mapper/"${ENCROOT}" /mnt/"${snapname}" > "${void}" 2> "${log}" || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@ /dev/mapper/CryptArch /mnt > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@home /dev/mapper/CryptArch /mnt/home > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@cache /dev/mapper/CryptArch /mnt/var/cache > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@log /dev/mapper/CryptArch /mnt/var/log > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@tmp /dev/mapper/CryptArch /mnt/var/tmp > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@snapshots /dev/mapper/CryptArch /mnt/"${snapname}" > "${void}" 2> "${log}" || err_abort if [[ "${swapmode}" == "2" ]]; then - mount --mkdir -o "${sbvl_mnt_opts}",subvol=@swap /dev/mapper/"${ENCROOT}" /mnt/swap > "${void}" 2> "${log}" || err_abort + mount --mkdir -o "${sbvl_mnt_opts}",subvol=@swap /dev/mapper/CryptArch /mnt/swap > "${void}" 2> "${log}" || err_abort fi sleep 0.2 NC " @@ -6084,13 +6023,13 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS line2 if echo -n "${CRYPTPASS}" | cryptsetup luksFormat --label CRYPTHOME "${home_dev}" > "${void}"; then if [[ "${rota}" == "0" ]]; then - echo -n "${CRYPTPASS}" | cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${home_dev}" "${ENCRHOME}" || err_abort + echo -n "${CRYPTPASS}" | cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${home_dev}" CryptHome || err_abort else - echo -n "${CRYPTPASS}" | cryptsetup luksOpen "${home_dev}" "${ENCRHOME}" || err_abort + echo -n "${CRYPTPASS}" | cryptsetup luksOpen "${home_dev}" CryptHome || err_abort fi - mkfs.ext4 -F -L Home /dev/mapper/"${ENCRHOME}" > "${void}" 2> "${log}" || err_abort - tune2fs -O fast_commit /dev/mapper/"${ENCRHOME}" > "${void}" 2> "${log}" || err_abort - mount --mkdir /dev/mapper/"${ENCRHOME}" /mnt/home > "${void}" 2> "${log}" || err_abort + mkfs.ext4 -F -L Home /dev/mapper/CryptHome > "${void}" 2> "${log}" || err_abort + tune2fs -O fast_commit /dev/mapper/CryptHome > "${void}" 2> "${log}" || err_abort + mount --mkdir /dev/mapper/CryptHome /mnt/home > "${void}" 2> "${log}" || err_abort sleep 0.2 NC " ==> [${green}Encrypted /Home OK${nc}] @@ -6103,45 +6042,46 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS return 1 fi elif [[ "${homecrypt}" == "no" ]]; then - YELLOW " + [[ "${hometype}" == "1" ]] && homeform="y" + if [[ "${hometype}" == "2" ]]; then + homeform="n" + sleep 0.2 + YELLOW " - > A /Home partition has been detected. Format as ${fsname} ? [y/N]${cyan} + > An existing /Home partition has been detected and will be utilized in this installation + + " + NC " - >> ${nc}Selecting ${bwhite}[N] ${nc}will re-use the ${yellowl}existing /Home ${nc}partition + ${bwhite}Press any key to continue${nc} + " - read -r -p " -==> " homeform + read -r -s -n 1 + fi + fi - echo - homeform="${homeform:-n}" - homeform="${homeform,,}" - - if [[ "${homeform}" == "y" ]]; then - if mkfs.ext4 -F -L Home "${home_dev}" > "${void}" 2> "${log}" ; then - tune2fs -O fast_commit "${home_dev}" > "${void}" 2> "${log}" || err_abort - mount --mkdir "${home_dev}" /mnt/home > "${void}" 2> "${log}" || err_abort - sleep 0.2 - NC " -==> [${green}/Home OK${nc}] - " - else - line2 - err_try - do_umount - return 1 - fi - elif [[ "${homeform}" == "n" ]]; then + if [[ "${homeform}" == "y" ]]; then + if mkfs.ext4 -F -L Home "${home_dev}" > "${void}" 2> "${log}" ; then + tune2fs -O fast_commit "${home_dev}" > "${void}" 2> "${log}" || err_abort mount --mkdir "${home_dev}" /mnt/home > "${void}" 2> "${log}" || err_abort sleep 0.2 NC " -==> [${green}Unformatted /Home Mounted OK${nc}] +==> [${green}/Home OK${nc}] " else - y_n + line2 + err_try + do_umount return 1 fi + elif [[ "${homeform}" == "n" ]]; then + mount --mkdir "${home_dev}" /mnt/home > "${void}" 2> "${log}" || err_abort + sleep 0.2 + NC " +==> [${green}Unformatted /Home Mounted OK${nc}] + " fi #-------------------------------------------------------------------------------------------------- if [[ "${multibooting}" == "n" ]]; then @@ -7259,9 +7199,9 @@ set_vars() { if [[ "${encrypt}" == "yes" ]]; then # Encrypted Root Device - encr_root_dev="/dev/mapper/${ENCROOT}" + encr_root_dev="/dev/mapper/CryptArch" # Encrypted Root Options - encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=${ENCROOT}" + encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=CryptArch" # ATTENTION LUKS ROOT KERNEL CMDLINE @@ -7543,7 +7483,7 @@ CUSTOM_SRVC log="Amelia_log.txt" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" trg="" - vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" gfxcount="" gfxcard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" vendor="" vendors="" desktop="" terminal="" efi_entr_del="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" gfx_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" greeternmbr="" cust_bootopts="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" gfx_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" mkinitcpio_bins="" uki="" ukify="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" dev="" web="" web_pkg="" web_aur="" web_slct="" printer="" print_pkgs="" shellnmbr="" shell="" shellname="" shellname2="" shell_pkgs="" genoptm="" set_optm="" ask_param="" desk_setup="" set_optm_slct="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="" gptabort="" nvdprop="" nowarning="" efiname="" path="") + vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" gfxcount="" gfxcard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" vendor="" vendors="" desktop="" terminal="" efi_entr_del="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" gfx_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" greeternmbr="" cust_bootopts="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" gfx_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" mkinitcpio_bins="" uki="" ukify="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" dev="" web="" web_pkg="" web_aur="" web_slct="" printer="" print_pkgs="" shellnmbr="" shell="" shellname="" shellname2="" shell_pkgs="" genoptm="" set_optm="" ask_param="" desk_setup="" set_optm_slct="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="" gptabort="" nvdprop="" nowarning="" efiname="" path="" hometype="" homeform="") export "${vars[@]}" sleep 0.2 CYANBG "************************************************************************************************* "