diff --git a/Amelia.sh b/Amelia.sh index 21dc0c6..ea45549 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -1,7 +1,7 @@ #!/bin/bash # Amelia Installer -# Version: 6.9 +# Version: 7.0 set -euo pipefail trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR @@ -16,6 +16,7 @@ trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR yellowbgbl="\e[5;1;43m" #blink bg yellowbg="\e[1;43m" #bg yellow="\e[33m" + yellowl="\e[93m" bluebgbl="\e[5;1;44m" #blink bg bluebg="\e[1;44m" #bg blue="\e[94m" @@ -55,6 +56,9 @@ YELLOWBG (){ YELLOW (){ echo -e "${yellow} $1${nc}" } +YELLOWL (){ + echo -e "${yellowl} $1${nc}" +} BLUEBGBL (){ echo -e "${bluebgbl} $1${nc}" } @@ -93,46 +97,40 @@ WHITEB (){ ################################################################################################### # PROMPT FUNCTIONS skip (){ - sleep 0.3 + sleep 0.2 YELLOW " --> Skipping.. " } reload (){ - sleep 0.3 + sleep 0.2 NC " --> [${green}Reloading${nc}] " } invalid (){ - sleep 0.3 + sleep 0.2 RED " - - [!] Invalid response - " + -------------------------- + ### ${yellow}Invalid Response ${red}### + --------------------------" reload } err_try (){ - sleep 0.3 + sleep 0.2 RED " - - [!] Errors occured. Please try again.. " + -------------------------------------------- + ### ${yellow}Errors occured. Please try again.. ${red}### + --------------------------------------------" reload } err_abort (){ - sleep 0.3 + sleep 0.2 RED " - - [!] Errors occured " + ------------------------ + ### ${yellow}Errors occured ${red}### + ------------------------" failure } -vm_skip (){ - sleep 0.3 - YELLOW " - - ### Virtual Machine detected - " - skip -} line2 (){ printf '\n\n' } @@ -140,73 +138,122 @@ line3 (){ printf '\n\n\n' } unmount (){ - sleep 0.3 + sleep 0.2 line3 REDBG " ${yellow}------------------------- " REDBG " ${yellow}[!] Unmount and Retry [!] " REDBG " ${yellow}------------------------- " echo reload - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " if umount -R /mnt > /dev/null 2>&1 ; then - sleep 0.3 + sleep 0.2 NC " -==> [${green}Unmount OK${nc}]" + ------------------ + ### ${green}Unmount OK ${nc}### + ------------------" else - sleep 0.3 + sleep 0.2 RED " - - [!] Unmounting failed - " + ----------------------------- + ### ${yellow}Unmounting Failed.. ${red}### + -----------------------------" failure fi } +unmount_noabort (){ + sleep 0.2 + line3 + REDBG " ${yellow}------------------------- " + REDBG " ${yellow}[!] Unmount and Retry [!] " + REDBG " ${yellow}------------------------- " + sleep 0.2 + NC " + + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} + " + if umount -R /mnt > /dev/null 2>&1 ; then + sleep 0.2 + NC " + + ------------------ + ### ${green}Unmount OK ${nc}### + ------------------" + reload + else + sleep 0.2 + RED " + + ----------------------------- + ### ${yellow}Unmounting Failed.. ${red}### + -----------------------------" + reload + fi +} umount_abort (){ unmount reload } umount_manual (){ unmount - sleep 0.3 + sleep 0.2 NC " --> [Switching to ${green}Manual Mode${nc}]" } choice (){ - sleep 0.3 + sleep 0.2 RED " - - [!] Please make a choice to continue " + -------------------------------------------- + ### ${yellow}Please make a choice to continue.. ${red}### + --------------------------------------------" + reload +} +y_n (){ + sleep 0.2 + RED " + ---------------------------------------------- + ### ${yellow}Please type 'y' or 'n' to continue.. ${red}### + ----------------------------------------------" + reload +} +yes_no (){ + sleep 0.2 + RED " + ------------------------------------------------- + ### ${yellow}Please type 'yes' or 'no' to continue.. ${red}### + -------------------------------------------------" reload } ok (){ - sleep 0.3 + sleep 0.2 NC " ==> [${green}${prompt} OK${nc}] " } stage_ok (){ - sleep 0.3 + sleep 0.2 NC " ==> [${green}${stage_prompt} configuration OK${nc}] " sleep 2 } stage_fail (){ - sleep 0.3 + sleep 0.2 line2 REDBG " ${yellow}[!] ${stage_prompt} configuration FAILED [!]" failure } completion_err (){ - sleep 0.3 + sleep 0.2 CYAN " @@ -245,7 +292,7 @@ amd (){ " } arch (){ - sleep 0.3 + sleep 0.2 line3 BLUEBG "************************************************************************************************* " BLUEBG " " @@ -255,16 +302,16 @@ arch (){ line2 } cnfg (){ - sleep 0.3 + sleep 0.2 line3 MAGENTABG "------------------------------------------------------------------------------------------------- " MAGENTABG " ### Configuring... ### " MAGENTABG "------------------------------------------------------------------------------------------------- " echo - sleep 0.3 + sleep 0.2 } completion (){ - sleep 0.3 + sleep 0.2 line3 GREENBG "************************************************************************************************* " GREENBG " " @@ -274,7 +321,7 @@ completion (){ line3 } failure (){ - sleep 0.3 + sleep 0.2 line3 REDBG "************************************************************************************************* " REDBG " " @@ -309,7 +356,7 @@ first_check (){ ################################################################################################### slct_font (){ - sleep 0.3 + sleep 0.2 NC " @@ -344,9 +391,9 @@ Enter a number: " ################################################################################################### uefi_check (){ - bootmode=$(cat /sys/firmware/efi/fw_platform_size) + bootmode="$(cat /sys/firmware/efi/fw_platform_size)" local prompt="UEFI ${bootmode}-bit Mode" - sleep 0.3 + sleep 0.2 NC " @@ -357,8 +404,9 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}UEFI Mod ok else RED " - - [!] Not in UEFI Mode " + -------------------------- + ### ${yellow}Not in UEFI Mode ${red}### + --------------------------" failure fi } @@ -366,7 +414,7 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}UEFI Mod connection_check (){ local prompt="Internet Connection" - sleep 0.3 + sleep 0.2 NC " @@ -379,9 +427,9 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Internet RED " - - [!] A connection to ${nc}'www.archlinux.org' ${red}could not be established [!] - + ---------------------------------------------------------------------- + ### ${yellow}A connection to ${nc}'www.archlinux.org' ${yellow}could not be established ${red}### + ---------------------------------------------------------------------- " failure fi @@ -390,7 +438,7 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Internet upd_clock (){ local prompt="System Clock" - sleep 0.3 + sleep 0.2 NC " @@ -398,7 +446,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}System " - sleep 0.3 + sleep 0.2 timedatectl ok } @@ -406,7 +454,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}System dtct_microcode (){ local prompt="Microcode" - sleep 0.3 + sleep 0.2 NC " @@ -422,7 +470,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Microc microcode="amd-ucode" microname="AMD" fi - sleep 0.3 + sleep 0.2 YELLOW " ### Detection completed, the ${microname} microcode will be installed @@ -432,7 +480,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Microc ################################################################################################### main_menu (){ - sleep 0.3 + sleep 0.2 NC " @@ -441,10 +489,10 @@ ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}M YELLOW " > Make a selection: " - CYAN " + RED " --------------------------------------------------------------------- - ### Select ${nc}[4] ${cyan}for ${nc}'Guided Navigation'${cyan} and ${nc}'Smart Partitioning'${cyan} ### + ### ${yellow}Select ${bwhite}[4] ${nc}${yellow}for ${nc}'Guided Navigation' ${yellow}and ${nc}'Smart Partitioning' ${red}### ---------------------------------------------------------------------" NC " @@ -473,10 +521,11 @@ Enter a number: " 4) until instl; do : ; done ;; "") - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Submenu " + --------------------------------- + ### ${yellow}Please select a Submenu ${red}### + ---------------------------------" reload return 1 ;; *) @@ -487,7 +536,7 @@ Enter a number: " ################################################################################################### persnl_submn (){ - sleep 0.3 + sleep 0.2 NC " @@ -509,6 +558,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pers Enter a number: " read -r -p " ==> " persmenu + echo case "${persmenu}" in 1) @@ -531,7 +581,7 @@ Enter a number: " slct_locale (){ local prompt="Locale" - sleep 0.3 + sleep 0.2 NC " @@ -542,7 +592,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Local > Select your Locale - ### [Hit ${nc}'l'${yellow} to list locales, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] + ### [Enter ${nc}'l'${yellow} to list locales, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] ### Exclude '.UTF_8' suffix " BLUE " @@ -555,7 +605,7 @@ Enter your Locale ${bwhite}(empty for 'en_US')${blue}: " if [[ -z "${LOCALESET}" ]]; then SETLOCALE="en_US.UTF-8" - sleep 0.3 + sleep 0.2 YELLOW " ### en_US.UTF-8 Locale has been selected @@ -568,7 +618,7 @@ Enter your Locale ${bwhite}(empty for 'en_US')${blue}: " return 1 else SETLOCALE="${LOCALESET}.UTF-8" - sleep 0.3 + sleep 0.2 YELLOW " ### ${SETLOCALE} Locale has been selected @@ -581,7 +631,7 @@ Enter your Locale ${bwhite}(empty for 'en_US')${blue}: " slct_kbd (){ local prompt="Keyboard Layout" - sleep 0.3 + sleep 0.2 NC " @@ -592,7 +642,7 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Keyboard > Select your Keyboard Layout - ### [Hit ${nc}'l'${yellow} to list layouts, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " + ### [Enter ${nc}'l'${yellow} to list layouts, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " BLUE " @@ -603,7 +653,7 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " if [[ -z "${SETKBD}" ]]; then SETKBD="us" - sleep 0.3 + sleep 0.2 YELLOW " ### us Keyboard Layout has been selected @@ -615,7 +665,7 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " invalid return 1 else - sleep 0.3 + sleep 0.2 YELLOW " ### ${SETKBD} Keyboard Layout has been selected @@ -628,7 +678,7 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " user_setup (){ local prompt="User" - sleep 0.3 + sleep 0.2 NC " @@ -642,17 +692,19 @@ Enter a username: " echo if [[ -z "${USERNAME}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter a username to continue " + --------------------------------------------- + ### ${yellow}Please enter a username to continue ${red}### + ---------------------------------------------" reload return 1 elif [[ "${USERNAME}" =~ [[:upper:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Uppercase is not allowed. Please try again.. " + ------------------------------------------------------ + ### ${yellow}Uppercase is not allowed. Please try again.. ${red}### + ------------------------------------------------------" reload return 1 fi @@ -664,10 +716,11 @@ Enter a password for${nc} ${cyan}${USERNAME}${blue}: " echo if [[ -z "${USERPASSWD}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter a password for ${USERNAME} to continue " + --------------------------------------------- + ### ${yellow}Please enter a password to continue ${red}### + ---------------------------------------------" reload return 1 fi @@ -679,10 +732,11 @@ Re-enter${nc} ${cyan}${USERNAME}'s ${blue}password: " echo if [[ "${USERPASSWD}" != "${USERPASSWD2}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Passwords don't match. Please try again.. " + --------------------------------------------------- + ### ${yellow}Passwords don't match. Please try again.. ${red}### + ---------------------------------------------------" reload return 1 fi @@ -692,7 +746,7 @@ Re-enter${nc} ${cyan}${USERNAME}'s ${blue}password: " rootuser_setup (){ local prompt="Root User" - sleep 0.3 + sleep 0.2 NC " @@ -706,10 +760,11 @@ Enter a password for the${nc}${cyan} Root ${blue}user: " echo if [[ -z "${ROOTPASSWD}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter a password for the Root user to continue " + --------------------------------------------------------------- + ### ${yellow}Please enter a password for the Root user to continue ${red}### + ---------------------------------------------------------------" reload return 1 fi @@ -721,10 +776,11 @@ Re-enter${nc} ${cyan}Root ${blue}user's password: " echo if [[ "${ROOTPASSWD}" != "${ROOTPASSWD2}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Passwords don't match. Please try again.. " + --------------------------------------------------- + ### ${yellow}Passwords don't match. Please try again.. ${red}### + ---------------------------------------------------" reload return 1 fi @@ -734,7 +790,7 @@ Re-enter${nc} ${cyan}Root ${blue}user's password: " slct_hostname (){ local prompt="Hostname" - sleep 0.3 + sleep 0.2 NC " @@ -748,17 +804,19 @@ Enter a hostname: " echo if [[ -z "${HOSTNAME}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter a hostname to continue " + --------------------------------------------- + ### ${yellow}Please enter a hostname to continue ${red}### + ---------------------------------------------" reload return 1 elif [[ "${HOSTNAME}" =~ [[:upper:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Lowercase is preferred. Please try again.. " + ---------------------------------------------------- + ### ${yellow}Lowercase is preferred. Please try again.. ${red}### + ----------------------------------------------------" reload return 1 fi @@ -767,7 +825,7 @@ Enter a hostname: " ################################################################################################### sys_submn (){ - sleep 0.3 + sleep 0.2 NC " @@ -778,7 +836,7 @@ ${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}System > Select a Submenu: " NC " - [1] Kernel & Bootloader Setup + [1] Kernel, Bootloader & ESP Mountpoint Setup [2] Filesystem & Swap Setup @@ -797,17 +855,20 @@ ${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}System Enter a number: " read -r -p " ==> " sysmenu + echo case "${sysmenu}" in 1) until slct_krnl; do : ; done until ask_bootldr; do : ; done + until slct_espmnt; do : ; done return 1 ;; 2) until ask_fs; do : ; done until ask_swap; do : ; done return 1 ;; 3) + until dtct_hyper; do : ; done until dtct_vga; do : ; done return 1 ;; 4) @@ -829,12 +890,8 @@ Enter a number: " ################################################################################################### slct_krnl (){ - if [[ "${revision}" == "yes" ]]; then - kernelnmbr="" - fi - local prompt="Kernel" - sleep 0.3 + sleep 0.2 NC " @@ -878,10 +935,11 @@ Enter a number: " kernelname="Linux Zen" entrname="Arch Linux Zen" ;; "") - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Kernel " + -------------------------------- + ### ${yellow}Please select a Kernel ${red}### + --------------------------------" reload return 1 ;; *) @@ -889,7 +947,7 @@ Enter a number: " return 1 ;; esac - sleep 0.3 + sleep 0.2 YELLOW " ### The ${kernelname} kernel has been selected @@ -910,11 +968,8 @@ Enter a number: " ################################################################################################### ask_bootldr (){ - if [[ "${revision}" == "yes" ]]; then - bootloader="" - fi local prompt="Bootloader" - sleep 0.3 + sleep 0.2 NC " @@ -938,22 +993,23 @@ Enter a number: " case "${bootloader}" in 1) - sleep 0.3 + sleep 0.2 YELLOW " ### Systemd-boot has been selected " ;; 2) - sleep 0.3 + sleep 0.2 YELLOW " ### Grub has been selected " ;; "") - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Bootloader " + ------------------------------------ + ### ${yellow}Please select a Bootloader ${red}### + ------------------------------------" reload return 1 ;; *) @@ -963,14 +1019,64 @@ Enter a number: " ok } ################################################################################################### +slct_espmnt (){ + + local prompt="ESP Mountpoint" + sleep 0.2 + NC " + + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}ESP Mountpoint Selection${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} + " + YELLOW " + + > Select a Mountpoint for the ESP: " + NC " + + [1] /mnt/efi + + [2] /mnt/boot " + BLUE " + + +Enter a number: " + read -r -p " +==> " espmnt + echo + + if [[ "${espmnt}" == "1" ]]; then + esp_mount="/mnt/efi" + btldr_esp_mount="/efi" + if [[ "${bootloader}" == "1" ]]; then + xbootloader="yes" + fi + sleep 0.2 + YELLOW " + + ### '/mnt/efi' mountpoint has been selected + " + elif [[ "${espmnt}" == "2" ]]; then + esp_mount="/mnt/boot" + btldr_esp_mount="/boot" + sleep 0.2 + YELLOW " + + ### '/mnt/boot' mountpoint has been selected + " + else + invalid + return 1 + fi + ok + if [[ "${sanity}" == "no" ]]; then + until sanity_check; do : ; done + fi +} +################################################################################################### ask_fs (){ - if [[ "${revision}" == "yes" ]]; then - fs="" - sep_home="" - fi local prompt="Filesystem Setup" - sleep 0.3 + sleep 0.2 NC " @@ -998,7 +1104,7 @@ Enter a number: " fs_mod="ext4" fstools="e2fsprogs" roottype="/Root" - sleep 0.3 + sleep 0.2 YELLOW " ### NOTE: Keeping User Data on a separate /Home Partition is supported @@ -1015,7 +1121,7 @@ Enter [y/n]: " case "${sep_home}" in y) - sleep 0.3 + sleep 0.2 YELLOW " ### A /Home Partition will be created ";; @@ -1023,17 +1129,14 @@ Enter [y/n]: " skip echo;; "") - sleep 0.3 - RED " - - [!] Please type 'y' or 'n' to continue.. " - reload + sleep 0.2 + y_n return 1 ;; *) invalid return 1 ;; esac - sleep 0.3 + sleep 0.2 YELLOW " ### ${fsname} has been selected @@ -1044,11 +1147,11 @@ Enter [y/n]: " fstools="btrfs-progs" roottype="/@" btrfs_bootopts="rootflags=subvol=@ " - sleep 0.3 + sleep 0.2 YELLOW " ### ${fsname} has been selected " - sleep 0.3 + sleep 0.2 YELLOW " > Label your Btrfs snapshot directory: " @@ -1065,10 +1168,11 @@ Enter a name: " return 1 fi ;; "") - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Filesystem " + ------------------------------------ + ### ${yellow}Please select a Filesystem ${red}### + ------------------------------------" reload return 1 ;; *) @@ -1080,11 +1184,8 @@ Enter a name: " ################################################################################################### ask_swap (){ - if [[ "${revision}" == "yes" ]]; then - swapmode="" - fi local prompt="Swap Setup" - sleep 0.3 + sleep 0.2 NC " @@ -1113,12 +1214,13 @@ Enter a number: " case "${swapmode}" in 1) if [[ "${kernelnmbr}" == "3" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Incompatible Kernel has been detected [!] " + ----------------------------------------------- + ### ${yellow}Incompatible Kernel has been detected ${red}### + -----------------------------------------------" CYAN " - [!] Swap type will default to 'None' [!] + [!] Swap type will default to ${nc}'None' [!] " sleep 2 swapmode="4" @@ -1132,19 +1234,20 @@ Enter a number: " return 0 fi swaptype="swappart" - sleep 0.3 + sleep 0.2 YELLOW " ### Swap Partition has been selected " ;; 2) if [[ "${kernelnmbr}" == "3" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Incompatible Kernel has been detected [!] " + ----------------------------------------------- + ### ${yellow}Incompatible Kernel has been detected ${red}### + -----------------------------------------------" CYAN " - [!] Swap type will default to 'None' [!] + [!] Swap type will default to ${nc}'None' [!] " sleep 2 swapmode="4" @@ -1162,7 +1265,7 @@ Enter a number: " elif [[ "${fs}" == "2" ]]; then swaptype="swapfile_btrfs" fi - sleep 0.3 + sleep 0.2 YELLOW " ### Swapfile has been selected @@ -1170,20 +1273,42 @@ Enter a number: " " until set_swapsize; do : ; done ;; 3) - zram="zram-generator" ;; + if [[ "${kernelnmbr}" == "3" ]]; then + sleep 0.2 + RED " + ----------------------------------------------- + ### ${yellow}Incompatible Kernel has been detected ${red}### + -----------------------------------------------" + CYAN " + [!] Swap type will default to ${nc}'None' [!] + " + sleep 2 + swapmode="4" + skip + ok + if [[ "${vga_slct}" == "yes" ]]; then + local stage_prompt="Graphics Setup" + completion_err + until dtct_vga; do : ; done + fi + return 0 + else + zram="zram-generator" + YELLOW " + + ### Zram Swap has been selected + " + fi ;; 4) - sleep 0.3 + sleep 0.2 YELLOW " ### No Swap will be used " skip ;; "") - sleep 0.3 - RED " - - [!] Please make a selection to continue " - reload + sleep 0.2 + choice return 1 ;; *) invalid @@ -1208,33 +1333,63 @@ Enter Swap size ${bwhite}(in GB)${blue}: " echo if [[ -z "${swapsize}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter a value to continue " + ------------------------------------------ + ### ${yellow}Please enter a value to continue ${red}### + ------------------------------------------" reload line2 return 1 elif [[ "${swapsize}" =~ [[:digit:]] ]]; then ok else - sleep 0.3 + sleep 0.2 RED " - - [!] Please use only digits as a value " + ------------------------------------------- + ### ${yellow}Please use only digits as a value ${red}### + -------------------------------------------" reload line2 return 1 fi } ################################################################################################### +dtct_hyper (){ + + hypervisor="$(systemd-detect-virt)" + if [[ "${hypervisor}" != "none" ]]; then + vendor="Virtual Machine" + vgaconf="n" + vgapkgs="" + fi + case "${hypervisor}" in + kvm) + vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent" + vm_services="qemu-guest-agent" ;; + vmware) + vmpkgs="open-vm-tools" + vm_services="vmtoolsd vmware-vmblock-fuse" ;; + oracle) + vmpkgs="virtualbox-guest-utils" + vm_services="vboxservice" ;; + microsoft) + vmpkgs="hyperv" + vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; + esac +} +################################################################################################### dtct_vga (){ + if [[ "${hypervisor}" != "none" ]]; then + return 0 + fi if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel & Bootloader Setup" + local stage_prompt="Kernel, Bootloader & ESP Mountpoint Setup" completion_err until slct_krnl; do : ; done until ask_bootldr; do : ; done + until slct_espmnt; do : ; done return 1 fi if [[ -z "${fs}" ]]; then @@ -1244,7 +1399,7 @@ dtct_vga (){ until ask_swap; do : ; done return 1 fi - sleep 0.3 + sleep 0.2 NC " @@ -1258,7 +1413,6 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Grap amdcards="$(lspci | grep -E 'VGA|Display|3D' | grep -E 'Advanced Micro Devices' | sed 's/.*\[AMD\/ATI\] //g' | cat --number | sed 's/.[0-9]//')" nvidiacount="$(lspci | grep -E 'VGA|Display|3D' | grep -E -c 'NVIDIA Corporation')" nvidiacards="$(lspci | grep -E 'VGA|Display|3D' | grep -E 'NVIDIA Corporation'| sed 's/.*Corporation //g' | cat --number | sed 's/.[0-9]//')" - hypervisor="$(systemd-detect-virt)" if [[ "${vgacount}" == "1" ]]; then dtct_single_vga @@ -1274,45 +1428,27 @@ dtct_single_vga (){ if [[ "${intelcount}" -eq "1" ]]; then vendor="Intel" sourcetype="Open-source" - sleep 0.3 + sleep 0.2 intel elif [[ "${amdcount}" -eq "1" ]]; then vendor="AMD" sourcetype="Open-source" - sleep 0.3 + sleep 0.2 amd elif [[ "${nvidiacount}" -eq "1" ]]; then vendor="Nvidia" sourcetype="Proprietary" nvidia - elif [[ "${hypervisor}" != "none" ]]; then - vendor="Virtual Machine" - vgaconf="n" - vgapkgs="" - case "${hypervisor}" in - kvm) - vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent" - vm_services="qemu-guest-agent" ;; - vmware) - vmpkgs="open-vm-tools" - vm_services="vmtoolsd vmware-vmblock-fuse" ;; - oracle) - vmpkgs="virtualbox-guest-utils" - vm_services="vboxservice" ;; - microsoft) - vmpkgs="hyperv" - vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; - esac - vm_skip - ok - return 0 fi YELLOW " ### ${sourcetype} drivers will be used " if [[ "${vendor}" == "Nvidia" ]]; then + sleep 0.2 RED " - [!] Only for NV110 (Maxwell) Graphics or newer [!]" + ---------------------------------------------------- + ### ${yellow}Only for NV110 (Maxwell) Graphics or newer ${red}### + ----------------------------------------------------" fi YELLOW " @@ -1343,7 +1479,7 @@ dtct_multi_vga (){ vga_setup="Triple" fi - sleep 0.3 + sleep 0.2 YELLOW " ### ${vga_setup} Graphics setup detected, consisting of: " @@ -1465,7 +1601,7 @@ Enter a number: " sourcetype="Proprietary" vgaconf="y" elif [[ "${vendor}" == "none" ]]; then - sourcetype="" + sourcetype="No" vgaconf="n" vgapkgs="" echo @@ -1473,7 +1609,7 @@ Enter a number: " ok return 0 fi - sleep 0.3 + sleep 0.2 YELLOW " @@ -1492,7 +1628,7 @@ vga_conf (){ vgapkgs="intel-media-driver intel-media-sdk libva-intel-driver vpl-gpu-rt vulkan-intel vulkan-mesa-layers" elif [[ "${vendor}" == "AMD" ]]; then vgapkgs="libva-mesa-driver mesa-vdpau vulkan-mesa-layers vulkan-radeon" - sleep 0.3 + sleep 0.2 YELLOW " > Enable 'amdgpu' driver support for: " @@ -1527,7 +1663,7 @@ Enter a number ${bwhite}(empty to skip)${blue}: " return 1 fi elif [[ "${vendor}" == "Nvidia" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " > Select Nvidia architecture: " NC " @@ -1543,13 +1679,13 @@ Enter a number: " ==> " family if [[ "${family}" == "1" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Maxwell+ OK${nc}] " elif [[ "${family}" == "2" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " @@ -1568,12 +1704,14 @@ Enter a number: " if [[ "${nvdriver}" == "1" ]]; then if [[ -n "${vendor2}" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " ### AMD Graphics have also been detected " RED " - [!] There may be incompatibilities with the 'Nvidia-Open' driver [!]" + ---------------------------------------------------------------------- + ### ${yellow}There may be incompatibilities with the ${nc}'Nvidia-Open' ${yellow}driver ${red}### + ----------------------------------------------------------------------" YELLOW " @@ -1591,7 +1729,7 @@ Enter a number: " ==> " nvdriver if [[ "${nvdriver}" == "1" || "${nvdriver}" == "2" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Driver Confirmed OK${nc}] " @@ -1601,13 +1739,13 @@ Enter a number: " return 1 fi fi - sleep 0.3 + sleep 0.2 NC " ==> [${green}Turing+ OK${nc}] " elif [[ "${nvdriver}" == "2" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Turing+ OK${nc}] @@ -1658,7 +1796,7 @@ Enter a number: " fi fi fi - sleep 0.3 + sleep 0.2 YELLOW " @@ -1669,23 +1807,26 @@ Enter a number: " Enter [y/n]: " read -r -p " ==> " nvidia_suspend + echo if [[ "${nvidia_suspend}" == "n" ]]; then skip elif [[ "${nvidia_suspend}" == "y" ]] && [[ "${swapmode}" == "3" || "${swapmode}" == "4" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Incompatible Swap Setting has been detected " + ----------------------------------------------------- + ### ${yellow}Incompatible Swap setting has been detected ${red}### + -----------------------------------------------------" CYAN " - [!] Nvidia's Video Memory Preserving feature will NOT be enabled [!] + [!] Nvidia's Video Memory Preserving feature will ${nc}NOT ${cyan}be enabled [!] " sleep 3 nvidia_suspend="n" skip elif [[ "${nvidia_suspend}" == "y" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " + ### Nvidia's 'Suspend-Hibernate-Resume' Video Memory Preserving feature will be enabled " else echo @@ -1693,7 +1834,7 @@ Enter [y/n]: " return 1 fi fi - sleep 0.3 + sleep 0.2 YELLOW " ### ${vendor} Graphics will be automatically configured @@ -1712,12 +1853,9 @@ Enter [y/n]: " ################################################################################################### slct_dsktp (){ - if [[ "${revision}" == "yes" ]]; then - packages="" - fi local prompt="Desktop Setup" custompkgs="" - sleep 0.3 + sleep 0.2 NC " @@ -1757,6 +1895,7 @@ ${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Des Enter a number: " read -r -p " ==> " packages + echo case "${packages}" in 1) @@ -1771,7 +1910,7 @@ Enter a number: " desktopname="Xfce" ;; 6) desktopname="Cinnamon" - sleep 0.3 + sleep 0.2 YELLOW " @@ -1791,7 +1930,7 @@ Enter [y/n]: " case "${console}" in y) terminal="gnome-terminal" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Terminal OK${nc}] " ;; @@ -1799,11 +1938,8 @@ Enter [y/n]: " echo skip ;; "") - sleep 0.3 - echo - RED " - [!] Please type 'y' or 'n' to continue.. " - reload + sleep 0.2 + y_n return 1 ;; *) invalid @@ -1814,7 +1950,7 @@ Enter [y/n]: " desktopname="Deepin" ;; 8) desktopname="Budgie" - sleep 0.3 + sleep 0.2 YELLOW " @@ -1834,7 +1970,7 @@ Enter [y/n]: " case "${console}" in y) terminal="gnome-terminal" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Terminal OK${nc}] " ;; @@ -1842,11 +1978,8 @@ Enter [y/n]: " echo skip ;; "") - sleep 0.3 - echo - RED " - [!] Please type 'y' or 'n' to continue.. " - reload + sleep 0.2 + y_n return 1 ;; *) invalid @@ -1864,17 +1997,13 @@ Enter [y/n]: " until cust_sys; do :; done return 0 ;; "") - sleep 0.3 - RED " - - [!] Please make a selection.. " - reload + choice return 1 ;; *) invalid return 1 ;; esac - sleep 0.3 + sleep 0.2 YELLOW " @@ -1894,7 +2023,7 @@ Enter [y/n]: " case "${dev}" in y) devel="base-devel" - sleep 0.3 + sleep 0.2 NC " ==> [${green}base-devel OK${nc}] " ;; @@ -1902,18 +2031,15 @@ Enter [y/n]: " echo skip ;; "") - sleep 0.3 - echo - RED " - [!] Please type 'y' or 'n' to continue.. " - reload + sleep 0.2 + y_n return 1 ;; *) invalid return 1 ;; esac - sleep 0.3 + sleep 0.2 YELLOW " @@ -1934,11 +2060,8 @@ Enter [y/n]: " echo skip ;; "") - sleep 0.3 - echo - RED " - [!] Please type 'y' or 'n' to continue.. " - reload + sleep 0.2 + y_n return 1 ;; *) invalid @@ -1959,11 +2082,8 @@ cust_sys (){ ################################################################################################### add_pkgs (){ - if [[ "${revision}" == "yes" ]]; then - custompkgs="" - fi local prompt="Add Packages" - sleep 0.3 + sleep 0.2 NC " @@ -1981,15 +2101,16 @@ Enter any additional packages ${bwhite}(space-seperated)${blue}: " ==> " custompkgs if [[ -z "${custompkgs}" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please enter package(s) to continue " + --------------------------------------------- + ### ${yellow}Please enter package(s) to continue ${red}### + ---------------------------------------------" reload return 1 elif [[ "${custompkgs}" =~ "lightdm" ]]; then echo - sleep 0.3 + sleep 0.2 NC " @@ -2015,28 +2136,24 @@ Enter a number: " case "${greeternmbr}" in 1) greeter="lightdm-gtk-greeter" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Lightdm Gtk Greeter OK${nc}] " ;; 2) greeter="lightdm-slick-greeter" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Lightdm Slick Greeter OK${nc}] " ;; 3) greeter="lightdm-deepin-greeter" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Lightdm Deepin Greeter OK${nc}] " ;; "") - sleep 0.3 - echo - RED " - [!] Please make a selection.. " - reload + choice return 1 ;; *) invalid @@ -2049,11 +2166,8 @@ Enter a number: " ################################################################################################### add_services (){ - if [[ "${revision}" == "yes" ]]; then - customservices="" - fi local prompt="Add Services" - sleep 0.3 + sleep 0.2 NC " @@ -2080,11 +2194,8 @@ Enter services to be enabled ${bwhite}(space-seperated)${blue}: " ################################################################################################### add_prmtrs (){ - if [[ "${revision}" == "yes" ]]; then - cust_bootopts="" - fi local prompt="Kernel Parameters" - sleep 0.3 + sleep 0.2 NC " @@ -2111,26 +2222,24 @@ Enter your Kernel parameters to be set at boot ${bwhite}(space-seperated)${blue} ################################################################################################### boot_entr (){ + if [[ "${hypervisor}" != "none" ]]; then + efi_entr_del="yes" + return 0 + fi local prompt="Boot Entries" - hypervisor="$(systemd-detect-virt)" - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}EFI Boot Entries Deletion${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " - if [[ "${hypervisor}" != "none" ]]; then - efi_entr_del="yes" - vm_skip - ok - return 0 - fi + YELLOW " > Select an EFI Boot Entry to Delete ${red}[!] (CAUTION) [!] " - sleep 0.3 + sleep 0.2 efibootmgr boot_entry=" " @@ -2145,14 +2254,16 @@ Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip if [[ -n "${boot_entry}" ]]; then if [[ "${run_as}" != "root" ]]; then - sleep 0.3 + sleep 0.2 RED " - [!] Root Privileges Missing.. " + ----------------------------------- + ### ${yellow}Root Privileges Missing.. ${red}### + -----------------------------------" reload until sys_submn; do : ; done fi if efibootmgr -b "${boot_entry}" -B; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Entry ${boot_entry} Deleted${nc}] " @@ -2170,29 +2281,24 @@ Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip ################################################################################################### wireless_rgd (){ - if [[ "${revision}" == "yes" ]]; then - REGDOM="" + if [[ "${hypervisor}" != "none" ]]; then + wrlss_rgd="yes" + return 0 fi local prompt="Wireless Regdom Setup" - hypervisor="$(systemd-detect-virt)" - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}----------------------------${magenta}[ ${bwhite}Wireless Regulatory Domain Setup${nc} ${magenta}]${nc}----------------------------${magenta}###${nc} " - if [[ "${hypervisor}" != "none" ]]; then - wrlss_rgd="yes" - vm_skip - ok - return 0 - fi + YELLOW " > Select your Country Code (e.g. US) - ### [Hit ${nc}'l'${yellow} to list country codes, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " + ### [Enter ${nc}'l'${yellow} to list country codes, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " BLUE " @@ -2207,10 +2313,11 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " sed 's|^#WIRELESS_REGDOM=||g' /etc/conf.d/wireless-regdom |sed 's|"||g'| more return 1 elif [[ "${REGDOM}" =~ [[:lower:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Lowercase is not allowed. Please try again.. " + ------------------------------------------------------ + ### ${yellow}Lowercase is not allowed. Please try again.. ${red}### + ------------------------------------------------------" reload return 1 elif ! grep \""${REGDOM}"\" /etc/conf.d/wireless-regdom > /dev/null 2>&1 ; then @@ -2218,7 +2325,7 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " return 1 else wireless_reg="wireless-regdb" - sleep 0.3 + sleep 0.2 YELLOW " ### ${REGDOM} Country Code has been selected @@ -2230,7 +2337,7 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " ################################################################################################### dsks_submn (){ - sleep 0.3 + sleep 0.2 NC " @@ -2252,8 +2359,9 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk Enter a number: " read -r -p " ==> " diskmenu + echo - case ${diskmenu} in + case "${diskmenu}" in 1) until gpt_mngr; do : ; done ;; 2) @@ -2269,7 +2377,7 @@ Enter a number: " gpt_mngr (){ local prompt="Disk GPT" - sleep 0.3 + sleep 0.2 NC " @@ -2299,10 +2407,11 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " gptdrive="$(echo "${disks}" | awk "\$1 == ${gpt_dsk_nmbr} { print \$2}")" if [[ -e "${gptdrive}" ]]; then if [[ "${run_as}" != "root" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Root Privileges Missing.. " + ----------------------------------- + ### ${yellow}Root Privileges Missing.. ${red}### + -----------------------------------" reload until dsks_submn; do : ; done fi @@ -2310,7 +2419,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ______________________________________________ " gdisk "${gptdrive}" - sleep 0.3 + sleep 0.2 NC " ==> [${green}${gptdrive} OK${nc}] @@ -2332,9 +2441,54 @@ ______________________________________________ done } ################################################################################################### +ask_multibooting (){ + + local prompt="MultiBoot Status" + sleep 0.2 + NC " + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}MultiBoot Status${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} + " + YELLOW " + + > Are you Multi-Booting with other OS's ? [y/n]" + BLUE " + + +Enter [y/n]: " + read -r -p " +==> " multibooting + + case "${multibooting}" in + y) + sleep 0.2 + YELLOW " + + ### Multi-Boot selected + " ;; + n) sleep 0.2 + YELLOW " + + ### No Multi-Boot + " ;; + "") + y_n + return 1 ;; + *) + invalid + return 1 ;; + esac + ok +} +################################################################################################### disk_mngr (){ - sleep 0.3 + if [[ "${multibooting}" == "y" ]]; then + until manual_part; do : ; done + return 0 + fi + + sleep 0.2 NC " @@ -2361,10 +2515,11 @@ Enter a number: " 2) until manual_part; do : ; done ;; "") - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Mode " + ------------------------------ + ### ${yellow}Please select a Mode ${red}### + ------------------------------" reload return 1 ;; *) @@ -2375,10 +2530,7 @@ Enter a number: " ################################################################################################### man_preset (){ - if [[ "${revision}" == "yes" ]]; then - preset="" - fi - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Preset Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} @@ -2388,19 +2540,29 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Prese > Select a Partition Layout Preset: " NC " - ${cyan}* Ext4${nc} filesystem support Layout + ${cyan}* Ext4${nc} compatible Layout - ${magenta}* Btrfs${nc} filesystem support Layout + ${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}) + [1] Create 'ESP' and '/Root' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - [2] Create 'ESP', '/Root' and '/Swap' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) + [2] Create 'ESP', '/Root' and '/Swap' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - [3] Create 'ESP', '/Root' and '/Home' (${cyan}Ext4${nc}) + [3] Create 'ESP', '/Root' and '/Home' (${cyan}Ext4${nc}) - [4] Create 'ESP', '/Root', '/Home' and '/Swap' (${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}) " BLUE " @@ -2412,28 +2574,27 @@ Enter a Preset number ${bwhite}(empty to skip)${blue}: " ################################################################################################### auto_part (){ - if [[ "${revision}" == "yes" ]]; then - smartpart="" - fi local prompt="Disk Partitions" local stage_prompt="Auto-Partitioning" - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automatic Partitioning${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} " - sleep 0.3 + sleep 0.2 line2 REDBG " ------------------------------------------------------------ " REDBG " [!] WARNING: All data on selected disk will be destroyed [!] " REDBG " ------------------------------------------------------------ " line2 if [[ -e "${instl_drive}" && "${use_manpreset}" != "yes" ]]; then - sleep 0.3 - line2 - REDBG "${yellow}> Apply 'Smart Partitioning' on disk '${instl_drive}'? [y/n] " - echo + sleep 0.2 + RED " + ------------------------------------------------------------------------- + ### >>> ${yellow}Apply ${nc}'Smart Partitioning' ${yellow}on disk ${nc}'${instl_drive}'${yellow} ? [y/n] ${red}<<< ### + ------------------------------------------------------------------------- + " read -r -p " ==> " smartpart echo @@ -2445,7 +2606,7 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automati use_manpreset="yes" until man_preset; do : ; done else - invalid + y_n return 1 fi else @@ -2470,23 +2631,36 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " cap_gib="$((capacity/1024000000))" rootsize="$((capacity*25/100/1024000000))" if [[ "${run_as}" != "root" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Root Privileges Missing.. " + ----------------------------------- + ### ${yellow}Root Privileges Missing.. ${red}### + -----------------------------------" reload until dsks_submn; do : ; done fi if [[ -z "${use_manpreset}" ]]; then if [[ "${fs}" == "2" ]]; then - if [[ "${swapmode}" == "1" ]]; then + if [[ "${xbootloader}" == "yes" && "${swapmode}" == "1" ]]; then + preset="6" + elif [[ "${xbootloader}" == "yes" && "${swapmode}" != "1" ]]; then + preset="5" + elif [[ "${swapmode}" == "1" ]]; then preset="2" - else + elif [[ "${swapmode}" != "1" ]]; then preset="1" fi elif [[ "${fs}" == "1" ]] ; then - if [[ "${sep_home}" == "y" && "${swapmode}" == "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 preset="4" elif [[ "${sep_home}" == "y" && "${swapmode}" != "1" ]]; then preset="3" @@ -2503,8 +2677,8 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " return 0 fi - if [[ "${preset}" == "3" || "${preset}" == "4" ]] ; then - sleep 0.3 + if [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]] ; then + sleep 0.2 YELLOW " @@ -2525,32 +2699,34 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " echo fi - if [[ "${preset}" == "3" || "${preset}" == "4" ]] ; then + if [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]] ; then if [[ "${prcnt}" == [[:alpha:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Please use only digits as a value " + ------------------------------------------- + ### ${yellow}Please use only digits as a value ${red}### + -------------------------------------------" reload return 1 elif [[ -z "${prcnt}" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " ### Default /Root Partition's size selected ${nc}[${rootsize} GiB] " elif [[ "${prcnt}" -gt "0" && "${prcnt}" -lt "100" ]]; then rootsize="$((capacity*"${prcnt}"/100/1024000000))" - sleep 0.3 + sleep 0.2 YELLOW " ### Custom /Root Partition's size selected ${nc}[${rootsize} GiB] " elif [[ "${prcnt}" == "100" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] WARNING: No space left for other partitions [!] " + ----------------------------------------------------- + ### ${yellow}WARNING: No space left for other partitions ${red}### + -----------------------------------------------------" reload return 1 else @@ -2561,79 +2737,112 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " case "${preset}" in 1) - if [[ "${install}" == "yes" ]] ; then - autopart="yes" sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 2:0:0 -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - until sanity_check; do : ; done - else - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:0 -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - ok - fi ;; + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 2) - if [[ "${install}" == "yes" ]] ; then - autopart="yes" until set_swapsize; do : ; done sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 3:0:0 -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - until sanity_check; do : ; done - else - until set_swapsize; do : ; done - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 3:0:0 -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - ok - fi ;; + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 3) - if [[ "${install}" == "yes" ]] ; then - autopart="yes" sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 2:0:+"${rootsize}"G -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 3:0:0 -t 3:8302 -c 3:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - until sanity_check; do : ; done - else - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${rootsize}"G -t 2:8304 -c 2:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 3:0:0 -t 3:8302 -c 3:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - ok - fi ;; + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; 4) - if [[ "${install}" == "yes" ]] ; then - autopart="yes" until set_swapsize; do : ; done sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 3:0:+"${rootsize}"G -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 4:0:0 -t 4:8302 -c 4:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - until sanity_check; do : ; done - else + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; + 5) + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -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 -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 3:0:+"${swapsize}"G -t 3:8200 -c 3:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -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 -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 3:0:+"${rootsize}"G -t 3:8304 -c 3:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail sgdisk -n 4:0:0 -t 4:8302 -c 4:Home "${sgdrive}" > /dev/null 2>&1 || stage_fail - ok - fi ;; + if [[ "${install}" == "yes" ]]; then + autopart="yes" + until sanity_check; do : ; done + else + ok + fi ;; + 8) + until set_swapsize; do : ; done + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 1:0:+200M -t 1:ef00 -c 1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 2:0:+300M -t 2:ea00 -c 2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 3:0:+"${swapsize}"G -t 3:8200 -c 3:Swap "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -n 4:0:+"${rootsize}"G -t 4:8304 -c 4:Root "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -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 ;; "") if [[ "${smartpart}" == "n" ]]; then reload until disk_mngr; do : ; done return 0 fi - sleep 0.3 + sleep 0.2 RED " - - [!] Please select a Preset " + -------------------------------- + ### ${yellow}Please select a Preset ${red}### + --------------------------------" reload return 1 ;; *) @@ -2656,7 +2865,7 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " if [[ -z "${sanity}" ]]; then until dsks_submn; do : ; done elif [[ "${sanity}" == "no" ]]; then - until instl_dsk; do : ; done + until sanity_check; do : ; done elif [[ "${revision}" == "yes" ]]; then return 0 elif [[ "${sanity}" == "ok" ]]; then @@ -2672,8 +2881,7 @@ manual_part (){ local prompt="Disks" stage_prompt="Partitioning" - manpart="yes" - sleep 0.3 + sleep 0.2 NC " @@ -2685,20 +2893,24 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Manual NC " SUPPORTED PARTITION TYPES & MOUNTPOINTS: " line2 REDBG " ------------------------------------------------------------------------------------------- " - REDBG " ### Linux /Root x86-64 Partition [ GUID Code: 8304 ] Mountpoint: / ### " + REDBG " ### Linux Root x86-64 Partition [ GUID Code: 8304 ] Mountpoint: / ### " REDBG " ------------------------------------------------------------------------------------------- " echo BLUEBG " ------------------------------------------------------------------------------------------- " - BLUEBG " ### EFI System Partition [ GUID Code: ef00 ] Mountpoint: /boot ### " + BLUEBG " ### EFI System Partition [ GUID Code: ef00 ] Mountpoint: /efi or /boot ### " BLUEBG " ------------------------------------------------------------------------------------------- " echo GREENBG " ------------------------------------------------------------------------------------------- " - GREENBG " ### Linux /Home Partition [ GUID Code: 8302 ] Mountpoint: /home ### " + GREENBG " ### Linux Home Partition [ GUID Code: 8302 ] Mountpoint: /home ### " GREENBG " ------------------------------------------------------------------------------------------- " echo YELLOWBG " ------------------------------------------------------------------------------------------- " YELLOWBG " ### Linux Swap Partition [ GUID Code: 8200 ] Mountpoint: /swap ### " YELLOWBG " ------------------------------------------------------------------------------------------- " + echo + MAGENTABG " ------------------------------------------------------------------------------------------- " + MAGENTABG " ### Linux Extended Boot Partition [ GUID Code: ea00 ] Mountpoint: /boot ### " + MAGENTABG " ------------------------------------------------------------------------------------------- " YELLOW " @@ -2718,16 +2930,17 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " cgdrive="$(echo "${disks}" | awk "\$1 == ${cgdsk_nmbr} {print \$2}")" if [[ -e "${cgdrive}" ]]; then if [[ "${run_as}" != "root" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Root Privileges Missing.. " + ----------------------------------- + ### ${yellow}Root Privileges Missing.. ${red}### + -----------------------------------" reload until dsks_submn; do : ; done fi cgdisk "${cgdrive}" clear - sleep 0.3 + sleep 0.2 NC " @@ -2741,12 +2954,11 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " skip if [[ "${partok}" == "n" ]]; then - line2 - stage_fail + until sanity_check; do : ; done elif [[ -z "${sanity}" ]]; then until dsks_submn; do : ; done elif [[ "${sanity}" == "no" ]]; then - until instl_dsk; do : ; done + until sanity_check; do : ; done elif [[ "${revision}" == "yes" ]]; then return 0 elif [[ "${sanity}" == "ok" ]]; then @@ -2761,7 +2973,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ################################################################################################### instl_dsk (){ - sleep 0.3 + sleep 0.2 NC " @@ -2785,10 +2997,11 @@ Enter a disk number: " instl_drive="$(echo "${disks}" | awk "\$1 == ${instl_dsk_nmbr} {print \$2}")" if [[ -e "${instl_drive}" ]]; then if [[ "${run_as}" != "root" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] Root Privileges Missing.. " + ----------------------------------- + ### ${yellow}Root Privileges Missing.. ${red}### + -----------------------------------" reload until dsks_submn; do : ; done fi @@ -2802,14 +3015,18 @@ Enter a disk number: " fi parttable="$(fdisk -l "${instl_drive}" | grep '^Disklabel type' | awk "{print \$3}")" if [[ "${parttable}" != "gpt" ]]; then - sleep 0.3 + sleep 0.2 RED " - - [!] No GPT found on selected disk " + --------------------------------------- + ### ${yellow}No GPT found on selected disk ${red}### + ---------------------------------------" reload until gpt_mngr; do : ; done return 0 fi + if [[ -z "${multibooting}" ]]; then + until ask_multibooting; do : ; done + fi until sanity_check; do : ; done else invalid @@ -2823,7 +3040,7 @@ Enter a disk number: " ################################################################################################### sanity_check (){ - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Sanity Check${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} @@ -2832,10 +3049,14 @@ ${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}San root_dev="$(fdisk -l "${instl_drive}" | grep -E 'root' | awk "{print \$1}")" multi_root="$(fdisk -l "${instl_drive}" | grep -E 'root' | awk "{print \$1}" | cat --number)" root_comply="$(fdisk -l "${instl_drive}" | grep -E 'root' | awk "{print \$1}" | cat --number | grep -E '1[[:blank:]]' | awk "{print \$2}")" - bootcount="$(fdisk -l "${instl_drive}" | grep -E -c 'EFI' | awk "{print \$1}")" - boot_dev="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}")" - multi_boot="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}" | cat --number)" - boot_comply="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}" | cat --number | grep -E '1[[:blank:]]' | awk "{print \$2}")" + espcount="$(fdisk -l "${instl_drive}" | grep -E -c 'EFI' | awk "{print \$1}")" + esp_dev="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}")" + multi_esp="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}" | cat --number)" + esp_comply="$(fdisk -l "${instl_drive}" | grep -E 'EFI' | awk "{print \$1}" | cat --number | grep -E '1[[:blank:]]' | awk "{print \$2}")" + xbootcount="$(fdisk -l "${instl_drive}" | grep -E -c 'extended' | awk "{print \$1}")" + xboot_dev="$(fdisk -l "${instl_drive}" | grep -E 'extended' | awk "{print \$1}")" + multi_xboot="$(fdisk -l "${instl_drive}" | grep -E 'extended' | awk "{print \$1}" | cat --number)" + xboot_comply="$(fdisk -l "${instl_drive}" | grep -E 'extended' | awk "{print \$1}" | cat --number | grep -E '1[[:blank:]]' | awk "{print \$2}")" homecount="$(fdisk -l "${instl_drive}" | grep -E -c 'home' | awk "{print \$1}")" home_dev="$(fdisk -l "${instl_drive}" | grep -E 'home' | awk "{print \$1}")" multi_home="$(fdisk -l "${instl_drive}" | grep -E 'home' | awk "{print \$1}" | cat --number)" @@ -2847,18 +3068,18 @@ ${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}San if [[ "${rootcount}" -gt "1" ]]; then local stage_prompt="Partition" - sleep 0.3 + sleep 0.2 RED " - - [!] WARNING: Multiple Linux x86-64 /Root Partitions have been detected - + ---------------------------------------------------------------------------- + ### ${yellow}WARNING: Multiple Linux x86-64 /Root Partitions have been detected ${red}### + ---------------------------------------------------------------------------- " - sleep 0.3 + sleep 0.2 YELLOW " -###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### +###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### " - lsblk -f "${instl_drive}"|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' YELLOW " ###-----------------------------------------------------------------------------------------------------------------###" @@ -2889,26 +3110,25 @@ ${multi_root} elif [[ "${autoroot}" == "n" ]]; then stage_fail else - invalid - echo + y_n return 1 fi fi - if [[ "${bootcount}" -gt "1" ]]; then + if [[ "${espcount}" -gt "1" ]]; then local stage_prompt="Partition" - sleep 0.3 + sleep 0.2 RED " - - [!] WARNING: Multiple EFI Partitions have been detected - + -------------------------------------------------------------------- + ### ${yellow}WARNING: Multiple EFI System Partitions have been detected ${red}### + -------------------------------------------------------------------- " - sleep 0.3 + sleep 0.2 YELLOW " -###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### +###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### " - lsblk -f "${instl_drive}"|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' YELLOW " ###-----------------------------------------------------------------------------------------------------------------###" @@ -2916,48 +3136,101 @@ ${multi_root} Linux EFI System Partitions: ---------------------------- -${multi_boot} +${multi_esp} ---------------------------- " YELLOW " ### Only the 1st EFI partition on a selected disk can be auto-assigned as a valid EFI partition + " + if [[ "${multibooting}" == "n" ]]; then + YELLOW " + ### Partition ${nc}${esp_comply} ${yellow}is auto-assigned as such and will be ${red}[!] FORMATTED [!] + " + elif [[ "${multibooting}" == "y" ]]; then + YELLOW " + ### Partition ${nc}${esp_comply} ${yellow}is auto-assigned as such + " + fi + BLUE " - ### Partition ${nc}${boot_comply} ${yellow}is auto-assigned as such and will be ${red}[!] FORMATTED [!] + > Proceed ? [y/n]" + read -r -p " +==> " autoesp + + if [[ "${autoesp}" == "y" ]]; then + esp_dev="${esp_comply}" + elif [[ "${autoesp}" == "n" ]]; then + stage_fail + else + y_n + return 1 + fi + fi + + if [[ "${xbootcount}" -gt "1" ]]; then + local stage_prompt="Partition" + sleep 0.2 + RED " + ----------------------------------------------------------------------------- + ### ${yellow}WARNING: Multiple Linux Extended Boot Partitions have been detected ${red}### + ----------------------------------------------------------------------------- + " + sleep 0.2 + YELLOW " +###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### + + " + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' + YELLOW " + +###-----------------------------------------------------------------------------------------------------------------###" + NC " + Linux Extended Boot Partitions: + + ---------------------------- +${multi_xboot} + ---------------------------- + " + YELLOW " + + ### Only the 1st Linux Extended Boot partition on a selected disk can be auto-assigned as a valid XBOOTLDR partition + + + ### Partition ${nc}${xboot_comply} ${yellow}is auto-assigned as such and will be ${red}[!] FORMATTED [!] " BLUE " > Proceed ? [y/n]" read -r -p " -==> " autoboot +==> " autoxboot - if [[ "${autoboot}" == "y" ]]; then - boot_dev="${boot_comply}" - elif [[ "${autoboot}" == "n" ]]; then + if [[ "${autoxboot}" == "y" ]]; then + xboot_dev="${xboot_comply}" + elif [[ "${autoxboot}" == "n" ]]; then stage_fail else - invalid - echo + y_n return 1 fi fi if [[ ${fs} == "1" && ${sep_home} == "y" && "${homecount}" -gt "1" ]]; then local stage_prompt="Partition" - sleep 0.3 + sleep 0.2 RED " - - [!] WARNING: Multiple Linux /Home Partitions have been detected - + --------------------------------------------------------------------- + ### ${yellow}WARNING: Multiple Linux /Home Partitions have been detected ${red}### + --------------------------------------------------------------------- " - sleep 0.3 + sleep 0.2 YELLOW " -###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### +###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### " - lsblk -f "${instl_drive}"|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' YELLOW " ###-----------------------------------------------------------------------------------------------------------------###" @@ -2987,26 +3260,25 @@ ${multi_home} elif [[ "${autohome}" == "n" ]]; then stage_fail else - invalid - echo + y_n return 1 fi fi if [[ ${swapmode} == "1" && "${swapcount}" -gt "1" ]]; then local stage_prompt="Partition" - sleep 0.3 + sleep 0.2 RED " - - [!] WARNING: Multiple Linux /Swap Partitions have been detected - + --------------------------------------------------------------------- + ### ${yellow}WARNING: Multiple Linux /Swap Partitions have been detected ${red}### + --------------------------------------------------------------------- " - sleep 0.3 + sleep 0.2 YELLOW " -###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### +###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### " - lsblk -f "${instl_drive}"|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' YELLOW " ###-----------------------------------------------------------------------------------------------------------------###" @@ -3036,8 +3308,7 @@ ${multi_swap} elif [[ "${autoswap}" == "n" ]]; then stage_fail else - invalid - echo + y_n return 1 fi fi @@ -3048,48 +3319,119 @@ ${multi_swap} local prompt="Confirm /Root Partition" ok else - sleep 0.3 + sleep 0.2 NC " ==> [Linux x86-64 /Root ${green}OK${nc}] " fi else - sleep 0.3 - RED " - - [!] Linux x86-64 /Root Partition not detected " rootprt="fail" + sleep 0.2 + RED " + --------------------------------------------------- + ### ${yellow}Linux x86-64 /Root Partition not detected ${red}### + ---------------------------------------------------" fi - if [[ -e "${boot_dev}" ]]; then - bootsize="$(lsblk -b "${boot_dev}" --noheadings --output=size)" - if [[ "${bootsize}" -lt "209715200" ]]; then - sleep 0.3 - RED " - - [!] WARNING: EFI Partition's size is not adequate. Create a ${nc}200M ${red}EFI Partition at minimum " - bootprt="fail" - else - bootprt="ok" - if [[ "${autoboot}" == "y" ]]; then - local prompt="Confirm /Boot Partition" + if [[ ${xbootloader} == "yes" ]]; then + if [[ -e "${xboot_dev}" ]]; then + xbootprt="ok" + if [[ "${autoxboot}" == "y" ]]; then + local prompt="Confirm /XBOOTLDR Partition" ok else - sleep 0.3 + sleep 0.2 NC " -==> [EFI System Partition ${green}OK${nc}] " +==> [Linux Extended Boot ${green}OK${nc}] " fi + else + xbootprt="fail" + sleep 0.2 + RED " + ---------------------------------------------------- + ### ${yellow}Linux Extended Boot Partition not detected ${red}### + ----------------------------------------------------" fi - else - sleep 0.3 - RED " - - [!] EFI System Partition not detected " - bootprt="fail" fi - if [[ ${fs} == "1" ]]; then + if [[ -e "${esp_dev}" ]]; then + espsize="$(lsblk -b "${esp_dev}" --noheadings --output=size)" + 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" + 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 + espprt="fail" + sleep 0.2 + RED " + ------------------------------------------- + ### ${yellow}EFI System Partition not detected ${red}### + -------------------------------------------" + fi + + if [[ "${fs}" == "1" ]]; then if [[ "${sep_home}" == "y" ]]; then if [[ -e "${home_dev}" ]]; then homeprt="ok" @@ -3097,17 +3439,18 @@ ${multi_swap} local prompt="Confirm /Home Partition" ok else - sleep 0.3 + sleep 0.2 NC " ==> [Linux /Home ${green}OK${nc}] " fi else - sleep 0.3 - RED " - - [!] Linux /Home Partition not detected " homeprt="fail" + sleep 0.2 + RED " + -------------------------------------------- + ### ${yellow}Linux /Home Partition not detected ${red}### + --------------------------------------------" fi fi fi @@ -3119,141 +3462,154 @@ ${multi_swap} local prompt="Confirm /Swap Partition" ok else - sleep 0.3 + sleep 0.2 NC " ==> [Linux /Swap ${green}OK${nc}] " fi else - sleep 0.3 - RED " - - [!] Linux /Swap Partition not detected " swapprt="fail" + sleep 0.2 + RED " + -------------------------------------------- + ### ${yellow}Linux /Swap Partition not detected ${red}### + --------------------------------------------" fi fi - if [[ ${rootprt} == "fail" ]] || [[ "${bootprt}" == "fail" ]] || [[ ${homeprt} == "fail" ]] || [[ ${swapprt} == "fail" ]]; then + if [[ ${rootprt} == "fail" ]] || [[ "${espprt}" == "fail" ]] || [[ "${xbootprt}" == "fail" ]] || [[ ${homeprt} == "fail" ]] || [[ ${swapprt} == "fail" ]]; then sanity="no" else sanity="ok" fi - +#-------------------------------------------------------------------------------------------------- if [[ "${sanity}" == "ok" ]]; then if [[ "${autopart}" == "yes" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Disk ${sgdrive} Smart-Partitioned OK${nc}] " - sleep 0.3 - YELLOW " - - -###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### - - " - fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$' - YELLOW " - -###-----------------------------------------------------------------------------------------------------------------### " - BLUE " - - - > Proceed using the ${nc}${cyan}current ${blue}partitioning layout ? [y/n] - " - read -r -p " -==> " partok - echo - - local prompt="Confirm Disk" - local stage_prompt="Partitioning" - if [[ "${partok}" == "y" ]]; then - ok - elif [[ "${partok}" == "n" ]]; then - if [[ "${manpart}" == "yes" ]]; then - stage_fail - else - reload - until disk_mngr; do : ; done - return 0 - fi - else - invalid - return 1 - fi - else - sleep 0.3 - NC " - + fi + sleep 0.2 + NC " ----------------------- ### ${green}SANITY CHECK OK${nc} ### - -----------------------" - sleep 1 - YELLOW " + -----------------------" + sleep 0.2 + YELLOW " ###------------------------------------------------[ DISK OVERVIEW ]------------------------------------------------### - " - fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$' - YELLOW " + " + fdisk -l "${instl_drive}" | grep -E --color=no 'Dev|dev' |GREP_COLORS='mt=01;36' grep -E --color=always 'EFI System|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'Linux root|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'Linux home|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'Linux swap|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'Linux extended boot|$' + YELLOW " ###-----------------------------------------------------------------------------------------------------------------### " - BLUE " + BLUE " > Proceed using the ${nc}${cyan}current ${blue}partitioning layout ? [y/n] - " - read -r -p " + " + read -r -p " ==> " partok - echo + echo - local prompt="Confirm Disk" - local stage_prompt="Partitioning" - if [[ "${partok}" == "y" ]]; then - ok - elif [[ "${partok}" == "n" ]]; then - if [[ "${manpart}" == "yes" ]]; then - stage_fail - else - reload - until disk_mngr; do : ; done - return 0 - fi - else - invalid - return 1 - fi - fi + local prompt="Confirm Disk" + local stage_prompt="Partitioning" + if [[ "${partok}" == "y" ]]; then + ok + return 0 + elif [[ "${partok}" == "n" ]]; then + reload + until manual_part; do : ; done + else + y_n + return 1 + fi +#-------------------------------------------------------------------------------------------------- elif [[ "${sanity}" == "no" ]]; then - sleep 0.3 + sleep 0.2 RED " + ----------------------------- + ### ${yellow}SANITY CHECK FAILED${red} ### + -----------------------------" + NC " - --------------------------- - ### ${yellow}SANITY CHECK FAILED${red} ### - ---------------------------" - sleep 1 - if [[ "${smartpart}" == "n" && -z "${preset}" ]] ; then - reload - until manual_part; do : ; done - return 0 - elif [[ "${smartpart}" == "n" && -n "${preset}" ]] ; then - local stage_prompt="Partitioning" - line2 - stage_fail + + + ${bwhite}Press any key to continue${nc} + + + " + read -r -s -n 1 + + if [[ "${multibooting}" == "y" ]]; then + if [[ "${espprt}" == "fail" && -e "${esp_dev}" ]]; then + sleep 0.2 + CYAN " + --------------------------------------------------- + ### ${yellowl}/ESP: Not all prerequisites are satisfied ${nc}${cyan}### + ---------------------------------------------------" + if [[ "${espmnt}" == "2" ]]; then + sleep 0.2 + NC " + + ---------------------------------------------------- + >>> ${cyan}Select ${yellowl}/mnt/efi ${nc}${cyan}as the mountpoint for your ${yellowl}/ESP ${nc}${nc} + ----------------------------------------------------" + fi + if [[ "${xbootprt}" == "fail" ]]; then + sleep 0.2 + NC " + ------------------------------------------------------------------------------------------ + >>> ${cyan}Systemd-boot:${nc} + + >>> ${cyan}Create a ${yellowl}300M ${nc}${cyan}(at minimum) Linux Extended Boot Partition ${nc}(XBOOTLDR) ${yellowl}[GUID CODE: ea00] ${nc}${nc} + ------------------------------------------------------------------------------------------" + fi + NC " + + + ${bwhite}Press any key to continue${nc} + " + read -r -s -n 1 + + if [[ "${espmnt}" == "2" ]]; then + until slct_espmnt; do : ; done + fi + if [[ "${xbootprt}" == "fail" ]]; then + until manual_part; do : ; done + fi + elif [[ "${espprt}" == "fail" && ! -e "${esp_dev}" ]]; then + reload + until manual_part; do : ; done + elif [[ "${homeprt}" == "fail" || "${swapprt}" == "fail" ]]; then + reload + until manual_part; do : ; done + fi + elif [[ "${multibooting}" == "n" ]]; then + if [[ "${smartpart}" == "n" && -z "${preset}" ]] ; then + reload + until manual_part; do : ; done + elif [[ "${smartpart}" == "n" && -n "${preset}" ]] ; then + local stage_prompt="Partitioning" + line2 + stage_fail + else + reload + until auto_part; do : ; done + fi fi - reload - until auto_part; do : ; done - return 0 fi } ################################################################################################### ask_crypt (){ local prompt="Encryption Setup" - sleep 0.3 + sleep 0.2 NC " @@ -3277,7 +3633,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encry ok return 0 elif [[ "${encrypt}" == "yes" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " > Enter a name for your Encrypted ${roottype} Partition: " BLUE " @@ -3289,19 +3645,23 @@ Enter a name: " echo if [[ -z "${ENCROOT}" ]]; then - sleep 0.3 + sleep 0.2 RED " - [!] Please enter a name to continue " + ----------------------------------------- + ### ${yellow}Please enter a name to continue ${red}### + -----------------------------------------" reload return 1 elif [[ "${ENCROOT}" =~ [[:upper:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - [!] Uppercase is not allowed. Please try again.. " + ------------------------------------------------------ + ### ${yellow}Uppercase is not allowed. Please try again.. ${red}### + ------------------------------------------------------" reload return 1 elif [[ -n "${ENCROOT}" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted ${roottype} Label OK${nc}] " @@ -3309,16 +3669,16 @@ Enter a name: " if [[ -e "${home_dev}" ]]; then if [[ "${sep_home}" == "y" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " ### A /Home Partition has been detected " - sleep 0.3 + sleep 0.2 BLUE " - > Encrypt${nc} ${cyan}/Home ${blue}partition? [LUKS] " + > Encrypt${nc} ${nc}/Home ${blue}partition? [LUKS] " NC " * Type '${cyan}no${nc}' to proceed without encryption @@ -3331,9 +3691,8 @@ Enter a name: " if [[ "${homecrypt}" == "no" ]]; then skip - ok elif [[ "${homecrypt}" == "yes" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " > Enter a name for your Encrypted /Home Partition: " BLUE " @@ -3345,38 +3704,36 @@ Enter a name: " echo if [[ -z "${ENCRHOME}" ]]; then - sleep 0.3 + sleep 0.2 RED " - [!] Please enter a name to continue " + ----------------------------------------- + ### ${yellow}Please enter a name to continue ${red}### + -----------------------------------------" reload return 1 elif [[ "${ENCRHOME}" =~ [[:upper:]] ]]; then - sleep 0.3 + sleep 0.2 RED " - [!] Uppercase is not allowed. Please try again.. " + ------------------------------------------------------ + ### ${yellow}Uppercase is not allowed. Please try again.. ${red}### + ------------------------------------------------------" reload return 1 elif [[ -n "${ENCRHOME}" ]]; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted /Home Label OK${nc}] " fi else - sleep 0.3 - RED " - [!] Please type 'yes' or 'no' to continue.. " - reload + yes_no return 1 fi fi fi ok else - sleep 0.3 - RED " - [!] Please type 'yes' or 'no' to continue.. " - reload + yes_no return 1 fi } @@ -3385,7 +3742,7 @@ instl (){ install="yes" if [[ -z "${lcl_slct}" ]]; then - sleep 0.3 + sleep 0.2 CYAN " @@ -3404,10 +3761,11 @@ instl (){ fi if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel & Bootloader Setup" + local stage_prompt="Kernel, Bootloader & ESP Mountpoint Setup" completion_err until slct_krnl; do : ; done until ask_bootldr; do : ; done + until slct_espmnt; do : ; done fi if [[ -z "${fs}" ]]; then @@ -3417,10 +3775,13 @@ instl (){ until ask_swap; do : ; done fi - if [[ -z "${vgaconf}" ]]; then - local stage_prompt="Graphics Setup" - completion_err - until dtct_vga; do : ; done + if [[ -z "${hypervisor}" ]]; then + until dtct_hyper; do : ; done + if [[ "${hypervisor}" == "none" ]]; then + local stage_prompt="Graphics Setup" + completion_err + until dtct_vga; do : ; done + fi fi if [[ -z "${packages}" ]]; then @@ -3429,16 +3790,20 @@ instl (){ until slct_dsktp; do : ; done fi - if [[ -z "${efi_entr_del}" ]]; then - local stage_prompt="EFI Boot Entries Deletion" - completion_err - until boot_entr; do : ; done + if [[ "${hypervisor}" == "none" ]]; then + if [[ -z "${efi_entr_del}" ]]; then + local stage_prompt="EFI Boot Entries Deletion" + completion_err + until boot_entr; do : ; done + fi fi - if [[ -z "${wrlss_rgd}" ]]; then - local stage_prompt="Wireless Regulatory Domain Setup" - completion_err - until wireless_rgd; do : ; done + if [[ "${hypervisor}" == "none" ]]; then + if [[ -z "${wrlss_rgd}" ]]; then + local stage_prompt="Wireless Regulatory Domain Setup" + completion_err + until wireless_rgd; do : ; done + fi fi until instl_dsk; do : ; done @@ -3469,7 +3834,7 @@ instl (){ swappart (){ local stage_prompt="Swap Partition" - sleep 0.3 + sleep 0.2 NC " @@ -3484,15 +3849,15 @@ ${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Swap P ################################################################################################### set_mode (){ - if [[ "${rootcount}" -gt "1" || "${bootcount}" -gt "1" || "${homecount}" -gt "1" || "${swapcount}" -gt "1" ]]; then + if [[ "${rootcount}" -gt "1" || "${espcount}" -gt "1" || "${xbootcount}" -gt "1" || "${homecount}" -gt "1" || "${swapcount}" -gt "1" ]]; then line2 until auto_mode; do : ; done - sleep 0.3 + sleep 0.2 NC " ==> [${green}Filesystems OK${nc}] " - sleep 0.3 + sleep 0.2 YELLOW " ###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### @@ -3502,11 +3867,11 @@ set_mode (){ ###-----------------------------------------------------------------------------------------------------------------###" echo - sleep 1 + sleep 0.2 return 0 fi - sleep 0.3 + sleep 0.2 NC " @@ -3535,7 +3900,9 @@ Enter a Mode number: " until manual_mode; do : ; done ;; "") RED " - [!] Please select a Mode to continue " + ------------------------------------------ + ### ${yellow}Please select a Mode to continue ${red}### + ------------------------------------------" reload return 1 ;; *) @@ -3543,12 +3910,12 @@ Enter a Mode number: " return 1 ;; esac - sleep 0.3 + sleep 0.2 NC " ==> [${green}Filesystems OK${nc}] " - sleep 0.3 + sleep 0.2 YELLOW " ###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### @@ -3558,27 +3925,28 @@ Enter a Mode number: " ###-----------------------------------------------------------------------------------------------------------------###" echo - sleep 1 + sleep 0.2 } ################################################################################################### auto_mode (){ - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Auto Mode${nc} ${magenta}]${nc}----------------------------------------${magenta}###${nc} " - sleep 0.3 + sleep 0.2 YELLOW " > Auto Mode Selected " - sleep 1 + sleep 0.2 + espfs="$(lsblk -f --noheadings "${esp_dev}" | awk "{print \$2}")" if [[ "${fs}" == "1" ]]; then if mkfs.ext4 -F -L Root "${root_dev}" > /dev/null 2>&1 ; then mount "${root_dev}" /mnt > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}/Root OK${nc}] " @@ -3597,20 +3965,20 @@ ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}A btrfs subvolume create /mnt/@log > /dev/null 2>&1 || err_abort btrfs subvolume create /mnt/@tmp > /dev/null 2>&1 || err_abort btrfs subvolume create /mnt/@snapshots > /dev/null 2>&1 || err_abort - if [[ "${swapmode}" == "2" ]]; then - btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort - fi + if [[ "${swapmode}" == "2" ]]; then + btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort + fi umount /mnt > /dev/null 2>&1 || err_abort mount -o "${sbvl_mnt_opts}",subvol=@ "${root_dev}" /mnt > /dev/null 2>&1 || err_abort - if [[ "${swapmode}" == "2" ]]; then - mount --mkdir -o rw,nodatacow,subvol=@swap "${root_dev}" /mnt/swap > /dev/null 2>&1 || err_abort - fi + if [[ "${swapmode}" == "2" ]]; then + mount --mkdir -o rw,nodatacow,subvol=@swap "${root_dev}" /mnt/swap > /dev/null 2>&1 || err_abort + fi mount --mkdir -o "${sbvl_mnt_opts}",subvol=@cache "${root_dev}" /mnt/var/cache > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@home "${root_dev}" /mnt/home > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@log "${root_dev}" /mnt/var/log > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@snapshots "${root_dev}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@tmp "${root_dev}" /mnt/var/tmp > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}/@ OK${nc}] " @@ -3620,104 +3988,141 @@ ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}A until mount_mnt; do : ; done fi fi - sleep 0.3 + sleep 0.2 #-------------------------------------------------------------------------------------------------- - if mkfs.fat -F 32 -n Boot "${boot_dev}" > /dev/null 2>&1 ; then - mount --mkdir "${boot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort - sleep 0.3 + if [[ "${multibooting}" == "n" ]]; then + if mkfs.fat -F 32 -n ESP "${esp_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 || err_abort + sleep 0.2 NC " -==> [${green}/Boot OK${nc}] +==> [${green}/ESP OK${nc}] " else umount_manual - until form_efi; do : ; done + until form_esp; do : ; done until mount_mnt; do : ; done - until mount_boot; do : ; done + until mount_esp; do : ; done fi - sleep 0.3 + elif [[ "${multibooting}" == "y" && "${espfs}" == "vfat" ]]; then + if mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 ; then + sleep 0.2 + NC " +==> [${green}Unformatted /ESP OK${nc}] + " + else + umount_manual + until mount_mnt; do : ; done + until mount_esp; do : ; done + fi + elif [[ "${multibooting}" == "y" && "${espfs}" != "vfat" ]]; then + if mkfs.fat -F 32 -n ESP "${esp_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/ESP OK${nc}] + " + else + umount_manual + until form_esp; do : ; done + until mount_mnt; do : ; done + until mount_esp; do : ; done + fi + fi + sleep 0.2 #-------------------------------------------------------------------------------------------------- - if [[ ${fs} == "1" ]]; then - if [[ -e "${home_dev}" ]]; then - if [[ "${sep_home}" == "y" ]]; then - if [[ "${smartpart}" == "y" ]]; then - homeform="y" - elif [[ "${preset}" == "3" ]]; then - homeform="y" - elif [[ "${preset}" == "4" ]]; then - homeform="y" - elif [[ -z "${smartpart}" ]] || [[ -z "${preset}" ]]; then - BLUE " - - - > A${nc} ${cyan}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/n] - - " - read -r -p " -==> " homeform - echo - fi - - if [[ "${homeform}" == "y" ]]; then - if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then - mount --mkdir "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort - sleep 0.3 - NC " -==> [${green}/Home OK${nc}] - " - else - umount_manual - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - fi - elif [[ "${homeform}" == "n" ]]; then - skip - else - invalid - until ask_homepart_form; do : ; done - fi + if [[ ${xbootloader} == "yes" ]]; then + if mkfs.fat -F 32 -n XBOOTLDR "${xboot_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${xboot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/XBOOTLDR OK${nc}] + " + else + umount_manual + until form_xboot; do : ; done + until mount_mnt; do : ; done + until mount_esp; do : ; done + until mount_xboot; do : ; done fi fi + sleep 0.2 +#-------------------------------------------------------------------------------------------------- + if [[ ${fs} == "1" && -e "${home_dev}" && "${sep_home}" == "y" ]]; then + if [[ "${smartpart}" == "y" ]]; then + homeform="y" + elif [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]]; then + homeform="y" + elif [[ -z "${smartpart}" ]] || [[ -z "${preset}" ]]; then + BLUE " + + + > A ${nc}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/n] + + " + read -r -p " +==> " homeform + echo + fi + + if [[ "${homeform}" == "y" ]]; then + if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/Home OK${nc}] + " + else + umount_manual + until manual_part; do : ; done + until form_home; do : ; done + until mount_mnt; do : ; done + until mount_esp; do : ; done + if [[ "${xbootloader}" == "yes" ]]; then + until mount_xboot; do : ; done + fi + until mount_home; do : ; done + fi + elif [[ "${homeform}" == "n" ]]; then + skip + else + y_n + until ask_homepart_form; do : ; done + fi fi } ################################################################################################### manual_mode (){ volumes="$(fdisk -l | grep '^/dev' | cat --number)" - if [[ -e "${home_dev}" && "${sep_home}" == "y" ]]; then - if [[ "${fs}" == "1" ]]; then - until form_efi; do : ; done - until form_root; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - elif [[ "${fs}" == "2" ]]; then - until form_efi; do : ; done - until form_root; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - fi - else - until form_efi; do : ; done + until form_esp; do : ; done + if [[ "${xbootloader}" == "yes" ]]; then + until form_xboot; do : ; done + fi until form_root; do : ; done + if [[ -e "${home_dev}" && "${sep_home}" == "y" ]]; then + until form_home; do : ; done + fi until mount_mnt; do : ; done - until mount_boot; do : ; done - fi + until mount_esp; do : ; done + if [[ "${xbootloader}" == "yes" ]]; then + until mount_xboot; do : ; done + fi + if [[ -e "${home_dev}" && "${sep_home}" == "y" ]]; then + until mount_home; do : ; done + fi } ################################################################################################### -form_efi (){ +form_esp (){ - sleep 0.3 + sleep 0.2 NC " ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Format EFI System Partition${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} " - form_boot_nmbr=" " + form_esp_nmbr=" " - while [[ -n "${form_boot_nmbr}" ]]; do + while [[ -n "${form_esp_nmbr}" ]]; do YELLOW " > Select an EFI System Partition to format as vfat " @@ -3729,21 +4134,96 @@ ${volumes}" Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " read -r -p " -==> " form_boot_nmbr +==> " form_esp_nmbr - if [[ -n "${form_boot_nmbr}" ]]; then - bootpart="$(echo "${volumes}" | awk "\$1 == ${form_boot_nmbr} { print \$2}")" - if [[ -e "${bootpart}" ]]; then - if mkfs.fat -F 32 -n Boot "${bootpart}" > /dev/null 2>&1 ; then - sleep 0.3 - NC " + if [[ -n "${form_esp_nmbr}" ]]; then + esppart="$(echo "${volumes}" | awk "\$1 == ${form_esp_nmbr} { print \$2}")" + manespfs="$(lsblk -f --noheadings "${esppart}" | awk "{print \$2}")" + if [[ -e "${esppart}" ]]; then + if [[ "${multibooting}" == "n" ]]; then + if mkfs.fat -F 32 -n ESP "${esppart}" > /dev/null 2>&1 ; then + sleep 0.2 + NC " ==> [${green}Format & Label /ESP OK${nc}] " + return 0 + else + umount_abort + until manual_part; do : ; done + until form_esp; do : ; done + return 0 + fi + elif [[ "${multibooting}" == "y" && "${manespfs}" == "vfat" ]]; then + sleep 0.2 + NC " + +==> [${green}/Unformatted ESP OK${nc}] " + return 0 + elif [[ "${multibooting}" == "y" && "${manespfs}" != "vfat" ]]; then + if mkfs.fat -F 32 -n ESP "${esppart}" > /dev/null 2>&1 ; then + sleep 0.2 + NC " + +==> [${green}Format & Label /ESP OK${nc}] " + return 0 + else + umount_abort + until manual_part; do : ; done + until form_esp; do : ; done + return 0 + fi + fi + else + invalid + return 1 + fi + fi + RED " + --------------------------------------------------- + ### ${yellow}WARNING: PARTITION HAS NOT BEEN FORMATTED ${red}### + ---------------------------------------------------" + sleep 2 + skip + done +} +################################################################################################### +form_xboot (){ + + sleep 0.2 + NC " + + +${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Format Linux Extended Boot Partition${nc} ${magenta}]${nc}--------------------------${magenta}###${nc} + " + form_xboot_nmbr=" " + + while [[ -n "${form_xboot_nmbr}" ]]; do + YELLOW " + + > Select a Linux Extended Boot Partition to format as vfat " + NC " + +${volumes}" + BLUE " + + +Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " + read -r -p " +==> " form_xboot_nmbr + + if [[ -n "${form_xboot_nmbr}" ]]; then + xbootpart="$(echo "${volumes}" | awk "\$1 == ${form_xboot_nmbr} { print \$2}")" + if [[ -e "${xbootpart}" ]]; then + if mkfs.fat -F 32 -n XBOOTLDR "${xbootpart}" > /dev/null 2>&1 ; then + sleep 0.2 + NC " + +==> [${green}Format & Label /XBOOTLDR OK${nc}] " return 0 else umount_abort - until disk_mngr; do : ; done - until form_efi; do : ; done + until manual_part; do : ; done + until form_xboot; do : ; done return 0 fi else @@ -3752,9 +4232,9 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " fi fi RED " - ----------------------------------------------------- - ### WARNING: > ${yellow}PARTITION HAS NOT BEEN FORMATTED ${red}< ### - -----------------------------------------------------" + --------------------------------------------------- + ### ${yellow}WARNING: PARTITION HAS NOT BEEN FORMATTED ${red}### + ---------------------------------------------------" sleep 2 skip done @@ -3762,7 +4242,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ################################################################################################### form_root (){ - sleep 0.3 + sleep 0.2 NC " @@ -3790,14 +4270,14 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " #-------------------------------------------------------------------------------------------------- if [[ "${fs}" == "1" ]]; then if mkfs.ext4 -F "${rootpart}" > /dev/null 2>&1 ; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Format ${roottype} OK${nc}] " else umount_abort - until disk_mngr; do : ; done + until manual_part; do : ; done until form_root; do : ; done return 0 fi @@ -3815,14 +4295,14 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort fi umount /mnt > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Format ${roottype} OK${nc}] " else umount_abort - until disk_mngr; do : ; done + until manual_part; do : ; done until form_root; do : ; done return 0 fi @@ -3845,7 +4325,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " if [[ -n "${rootpartname}" ]]; then if [[ "${fs}" == "1" ]]; then if e2label "${rootpart}" "${rootpartname}" > /dev/null 2>&1 ; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Label ${roottype} OK${nc}] " @@ -3858,7 +4338,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " mount "${rootpart}" /mnt || err_abort btrfs filesystem label /mnt "${rootpartname}" > /dev/null 2>&1 || err_abort umount /mnt || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Label ${roottype} OK${nc}] " @@ -3869,9 +4349,9 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " return 0 else RED " - ----------------------------------------------------- - ### WARNING: > ${yellow}PARTITION HAS NOT BEEN FORMATTED ${red}< ### - -----------------------------------------------------" + --------------------------------------------------- + ### ${yellow}WARNING: PARTITION HAS NOT BEEN FORMATTED ${red}### + ---------------------------------------------------" sleep 2 skip return 0 @@ -3881,56 +4361,53 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " ################################################################################################### ask_homepart_form (){ - if [[ ${fs} == "1" ]]; then - if [[ -e "${home_dev}" ]]; then - if [[ "${sep_home}" == "y" ]]; then - if [[ "${smartpart}" == "y" ]]; then - homeform="y" - elif [[ "${preset}" == "3" ]]; then - homeform="y" - elif [[ "${preset}" == "4" ]]; then - homeform="y" - elif [[ -z "${smartpart}" ]] || [[ -z "${preset}" ]]; then - BLUE " + if [[ ${fs} == "1" && -e "${home_dev}" && "${sep_home}" == "y" ]]; then + if [[ "${smartpart}" == "y" ]]; then + homeform="y" + elif [[ "${preset}" == "3" || "${preset}" == "4" || "${preset}" == "7" || "${preset}" == "8" ]]; then + homeform="y" + elif [[ -z "${smartpart}" ]] || [[ -z "${preset}" ]]; then + BLUE " > A${nc} ${cyan}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/n] - " - read -r -p " + " + read -r -p " ==> " homeform - echo - fi + echo + fi - if [[ "${homeform}" == "y" ]]; then - if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then - mount --mkdir "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort - sleep 0.3 - NC " + if [[ "${homeform}" == "y" ]]; then + if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " ==> [${green}/Home OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done + " + else + umount_manual + until manual_part; do : ; done + until form_home; do : ; done + until mount_mnt; do : ; done + until mount_esp; do : ; done + if [[ "${xbootloader}" == "yes" ]]; then + until mount_xboot; do : ; done fi - elif [[ "${homeform}" == "n" ]]; then - skip - else - invalid - until ask_homepart_form; do : ; done - fi + until mount_home; do : ; done fi + elif [[ "${homeform}" == "n" ]]; then + skip + else + y_n + return 1 fi fi } ################################################################################################### form_home (){ - sleep 0.3 + sleep 0.2 NC " @@ -3957,14 +4434,14 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " homepart="$(echo "${volumes}" | awk "\$1 == ${form_home_nmbr} { print \$2}")" if [[ -e "${homepart}" ]]; then if mkfs.ext4 -F "${homepart}" > /dev/null 2>&1 ; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Format /Home OK${nc}] " else umount_abort - until disk_mngr; do : ; done + until manual_part; do : ; done until form_home; do : ; done return 0 fi @@ -3984,7 +4461,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " if [[ -n "${homepartname}" ]]; then if e2label "${homepart}" "${homepartname}" > /dev/null 2>&1 ;then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Label /Home OK${nc}] " @@ -3998,9 +4475,9 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " return 0 else RED " - ----------------------------------------------------- - ### WARNING: > ${yellow}PARTITION HAS NOT BEEN FORMATTED ${red}< ### - -----------------------------------------------------" + --------------------------------------------------- + ### ${yellow}WARNING: PARTITION HAS NOT BEEN FORMATTED ${red}### + ---------------------------------------------------" skip return 0 fi @@ -4010,7 +4487,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " mount_mnt (){ local prompt="Mount ${roottype}" - sleep 0.3 + sleep 0.2 NC " @@ -4037,7 +4514,7 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " #-------------------------------------------------------------------------------------------------- if [[ "${fs}" == "1" ]]; then if mount "${rootpart}" /mnt > /dev/null 2>&1 ; then - sleep 0.3 + sleep 0.2 ok return 0 else @@ -4055,7 +4532,7 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " mount --mkdir -o "${sbvl_mnt_opts}",subvol=@log "${rootpart}" /mnt/var/log > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@snapshots "${rootpart}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@tmp "${rootpart}" /mnt/var/tmp > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 ok return 0 else @@ -4074,10 +4551,10 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " fi } ################################################################################################### -mount_boot (){ +mount_esp (){ - local prompt="Mount /Boot" - sleep 0.3 + local prompt="Mount ESP" + sleep 0.2 NC " @@ -4085,7 +4562,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Mount " YELLOW " - > Select an EFI System Partition to mount to ${nc}/mnt/boot " + > Select an EFI System Partition to mount to ${nc}${esp_mount} " NC " @@ -4095,19 +4572,65 @@ ${volumes}" Enter your${nc} ${cyan}/ESP ${blue}partition number: " read -r -p " -==> " mntboot_nmbr +==> " mntesp_nmbr echo - if [[ -n "${mntboot_nmbr}" ]]; then - bootpart="$(echo "${volumes}" | awk "\$1 == ${mntboot_nmbr} { print \$2}")" - if [[ -e "${bootpart}" ]]; then - if mount --mkdir "${bootpart}" /mnt/boot > /dev/null 2>&1 ; then + if [[ -n "${mntesp_nmbr}" ]]; then + esppart="$(echo "${volumes}" | awk "\$1 == ${mntesp_nmbr} { print \$2}")" + if [[ -e "${esppart}" ]]; then + if mount --mkdir "${esppart}" "${esp_mount}" > /dev/null 2>&1 ; then ok return 0 else umount_abort until mount_mnt; do : ; done - until mount_boot; do : ; done + until mount_esp; do : ; done + fi + else + invalid + return 1 + fi + else + choice + return 1 + fi +} +################################################################################################### +mount_xboot (){ + + local prompt="Mount XBOOTLDR" + sleep 0.2 + NC " + + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Mount XBOOTLDR Partition${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} + " + YELLOW " + + > Select a Linux Extended Boot Partition to mount to ${nc}/mnt/boot " + NC " + + +${volumes}" + BLUE " + + +Enter your${nc} ${cyan}/XBOOTLDR ${blue}partition number: " + read -r -p " +==> " mntxboot_nmbr + echo + + if [[ -n "${mntxboot_nmbr}" ]]; then + xbootpart="$(echo "${volumes}" | awk "\$1 == ${mntxboot_nmbr} { print \$2}")" + if [[ -e "${xbootpart}" ]]; then + if mount --mkdir "${xbootpart}" /mnt/boot > /dev/null 2>&1 ; then + ok + return 0 + else + umount_abort + until mount_mnt; do : ; done + until mount_esp; do : ; done + until mount_xboot; do : ; done fi else invalid @@ -4122,7 +4645,7 @@ Enter your${nc} ${cyan}/ESP ${blue}partition number: " mount_home (){ local prompt="Mount /Home" - sleep 0.3 + sleep 0.2 NC " @@ -4152,7 +4675,8 @@ Enter your${nc} ${cyan}/Home ${blue}partition number: " else umount_abort until mount_mnt; do : ; done - until mount_boot; do : ; done + until mount_esp; do : ; done + until mount_xboot; do : ; done until mount_home; do : ; done fi else @@ -4168,7 +4692,7 @@ Enter your${nc} ${cyan}/Home ${blue}partition number: " confirm_status (){ local prompt="System Ready" - sleep 0.3 + sleep 0.2 NC " @@ -4202,10 +4726,7 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In unmount until revise; do : ; done else - sleep 0.3 - RED " - [!] Please type 'yes' or 'no' to continue.. " - reload + yes_no return 1 fi } @@ -4213,8 +4734,18 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In revise (){ revision="yes" + xbootloader="" + vgaconf="" + vendor_slct="" + packages="" + custompkgs="" + customservices="" + cust_bootopts="" + REGDOM="" + preset="" until slct_krnl; do : ; done until ask_bootldr; do : ; done + until slct_espmnt; do : ; done until ask_fs; do : ; done until ask_swap; do : ; done until dtct_vga; do : ; done @@ -4247,7 +4778,7 @@ revise (){ sec_erase (){ local prompt="Secure Erasure" - sleep 0.3 + sleep 0.2 NC " @@ -4258,9 +4789,11 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure while [[ -n "${erase_dsk_nmbr}" ]]; do YELLOW " - > Select a disk for Secure Erasure ${red}[!] (CAUTION) [!]${yellow} - - ### A reboot is mandatory and will take effect immediately when done " + > Select a disk for Secure Erasure ${red}[!] (CAUTION) [!]${yellow} " + RED " + -------------------------------------------------------------------------- + ### ${yellow}A reboot is ${yellowl}mandatory ${nc}${yellow}and will take effect ${yellowl}immediately ${nc}${yellow}when done ${red}### + --------------------------------------------------------------------------" NC " @@ -4279,12 +4812,12 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " cryptsetup open --type plain -d /dev/urandom "${erasedrive}" temp || err_abort dd if=/dev/zero of=/dev/mapper/temp status=progress bs=1M oflag=direct || err_abort cryptsetup close temp || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Drive ${erasedrive} Erased OK${nc}] " - sleep 1 + sleep 0.2 NC " ==> [${green}Rebooting${nc}] " @@ -4303,7 +4836,8 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ################################################################################################### luks (){ - sleep 0.3 + espfs="$(lsblk -f --noheadings "${esp_dev}" | awk "{print \$2}")" + sleep 0.2 NC " @@ -4322,7 +4856,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS if [[ "${fs}" == "1" ]]; then mkfs.ext4 -F -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 || err_abort mount /dev/mapper/"${ENCROOT}" /mnt > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted /Root OK${nc}] " @@ -4349,14 +4883,16 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS mount --mkdir -o "${sbvl_mnt_opts}",subvol=@log /dev/mapper/"${ENCROOT}" /mnt/var/log > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@snapshots /dev/mapper/"${ENCROOT}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort mount --mkdir -o "${sbvl_mnt_opts}",subvol=@tmp /dev/mapper/"${ENCROOT}" /mnt/var/tmp > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted /@ OK${nc}] " fi else - umount_abort - until luks; do : ; done + line2 + err_try + unmount_noabort + return 1 fi #-------------------------------------------------------------------------------------------------- line3 @@ -4368,13 +4904,15 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS cryptsetup luksOpen "${swap_dev}" swap || err_abort fi mkswap /dev/mapper/swap > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted /Swap OK${nc}] " else - umount_abort - until luks; do : ; done + line2 + err_try + unmount_noabort + return 1 fi fi #-------------------------------------------------------------------------------------------------- @@ -4388,18 +4926,20 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS fi mkfs.ext4 -F -L Home /dev/mapper/"${ENCRHOME}" > /dev/null 2>&1 || err_abort mount --mkdir /dev/mapper/"${ENCRHOME}" /mnt/home > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Encrypted /Home OK${nc}] " else - umount_abort - until luks; do : ; done + line2 + err_try + unmount_noabort + return 1 fi elif [[ "${homecrypt}" == "no" ]]; then BLUE " - > A${nc} ${cyan}/Home ${blue}partition has been detected. Format as${nc} ${fsname}${blue}? [y/n] + > A ${nc}/Home ${blue}partition has been detected. Format as${nc} ${fsname}${blue}? [y/n] " read -r -p " @@ -4409,41 +4949,84 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS if [[ "${homeform}" == "y" ]]; then if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then mount --mkdir "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}/Home OK${nc}] " else - umount_abort - until luks; do : ; done + line2 + err_try + unmount_noabort + return 1 fi elif [[ "${homeform}" == "n" ]]; then skip else - invalid + y_n return 1 fi fi #-------------------------------------------------------------------------------------------------- - if mkfs.fat -F 32 -n Boot "${boot_dev}" > /dev/null 2>&1 ; then - mount --mkdir "${boot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort - sleep 0.3 - NC " -==> [${green}/Boot OK${nc}] - " - else - umount_abort - until luks; do : ; done + if [[ "${multibooting}" == "n" ]]; then + if mkfs.fat -F 32 -n ESP "${esp_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/ESP OK${nc}] + " + else + umount_abort + until luks; do : ; done + fi + elif [[ "${multibooting}" == "y" && "${espfs}" == "vfat" ]]; then + if mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 ; then + sleep 0.2 + NC " +==> [${green}Unformatted /ESP OK${nc}] + " + else + line2 + err_try + unmount_noabort + return 1 + fi + elif [[ "${multibooting}" == "y" && "${espfs}" != "vfat" ]]; then + if mkfs.fat -F 32 -n ESP "${esp_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${esp_dev}" "${esp_mount}" > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/ESP OK${nc}] + " + else + umount_abort + until luks; do : ; done + fi fi - sleep 0.3 +#-------------------------------------------------------------------------------------------------- + if [[ "${xbootloader}" == "yes" ]] ; then + if mkfs.fat -F 32 -n XBOOTLDR "${xboot_dev}" > /dev/null 2>&1 ; then + mount --mkdir "${xboot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort + sleep 0.2 + NC " +==> [${green}/XBOOTLDR OK${nc}] + " + else + line2 + err_try + unmount_noabort + return 1 + fi + fi +#-------------------------------------------------------------------------------------------------- + sleep 0.2 NC " ==> [${green}Encryption OK${nc}]" - sleep 0.3 + sleep 0.2 NC " ==> [${green}Filesystems OK${nc}] " - sleep 0.3 + sleep 0.2 YELLOW " ###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### @@ -4451,15 +5034,15 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS lsblk -f|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' YELLOW " -###-----------------------------------------------------------------------------------------------------------------###" - echo - sleep 1 +###-----------------------------------------------------------------------------------------------------------------### + " + sleep 0.2 } ################################################################################################### opt_pcmn (){ local prompt="PacMan" - sleep 0.3 + sleep 0.2 NC " @@ -4470,7 +5053,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Pacman > Select a Country for your Arch Mirrors: - ### [Hit ${nc}'l' ${yellow}to list Countries, then ${nc}'enter' ${yellow}to search or ${nc}'q' ${yellow}to quit] " + ### [Enter ${nc}'l' ${yellow}to list Countries, then ${nc}'enter' ${yellow}to search or ${nc}'q' ${yellow}to quit] " BLUE " @@ -4480,7 +5063,7 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " echo if [[ -z "${COUNTRY}" ]] ; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}Default Mirrors OK${nc}] " @@ -4490,7 +5073,7 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " elif [[ -n "${COUNTRY}" ]] ; then line2 if reflector --verbose -c "${COUNTRY}" -l 10 -p https -f 10 --sort rate --save /etc/pacman.d/mirrorlist ; then - sleep 0.3 + sleep 0.2 NC " ==> [${green}${COUNTRY}'s Mirrors OK${nc}] " @@ -4513,7 +5096,7 @@ Enter [y/n]: " echo if [[ "${parallel}" == "y" ]]; then - sleep 0.3 + sleep 0.2 YELLOW " > Select number of Parallel Downloads [2-5] " @@ -4540,20 +5123,14 @@ Enter a number: " invalid return 1 fi - sleep 0.3 + sleep 0.2 NC " ==> [${green}${parallelnmbr} Parallel Downloads OK${nc}]" elif [[ "${parallel}" == "n" ]]; then skip - elif [[ -z "${parallel}" ]]; then - sleep 0.3 - RED " - [!] Please make a selection to continue " - reload - return 1 else - invalid + y_n return 1 fi ok @@ -4562,7 +5139,7 @@ Enter a number: " pacstrap_system (){ local prompt="Pacstrap System" - sleep 0.3 + sleep 0.2 NC " @@ -4585,73 +5162,61 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs fi case "${packages}" in - 1) # NOTE: Plasma Desktop: - + 1) # Plasma Desktop: deskpkgs="${basepkgs} plasma konsole" displaymanager="sddm" bluetooth="bluetooth" network="NetworkManager" ;; - 2) # NOTE: Custom Plasma & Systemd-boot & Optimized System: - - deskpkgs="${basepkgs} alsa-firmware alsa-utils arj ark bluedevil breeze-gtk ccache cups-pdf cups-pk-helper dolphin-plugins e2fsprogs efibootmgr exfatprogs fdkaac ffmpegthumbs firefox git glibc-locales gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb irqbalance kamera kamoso kate kcalc kde-gtk-config kdegraphics-mobipocket kdegraphics-thumbnailers kdenetwork-filesharing kdeplasma-addons kdesdk-kio kdesdk-thumbnailers kdialog keditbookmarks kget kimageformats kinit kio-admin kio-gdrive kio-zeroconf kompare konsole kscreen kvantum kwrited libappimage libfido2 libktorrent libmms libnfs libva-utils lirc lrzip lua52-socket lzop mac man-db man-pages mesa-demos mesa-utils mold nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pbzip2 pdfmixtool pigz pipewire-alsa pipewire-pulse plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-nm plasma-pa plasma-wayland-protocols power-profiles-daemon powerdevil powerline powerline-fonts print-manager python-pyqt6 python-reportlab qbittorrent qt6-imageformats qt6-scxml qt6-virtualkeyboard realtime-privileges reflector rng-tools sddm-kcm skanlite sof-firmware sox spectacle sshfs system-config-printer terminus-font timidity++ ttf-ubuntu-font-family unarchiver unrar unzip usb_modeswitch usbutils vdpauinfo vlc vorbis-tools vorbisgain wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde xsane zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;; - - 3) # NOTE: Gnome Desktop: + 2) # Custom Plasma & Systemd-boot & Optimized System: + deskpkgs="${basepkgs} alsa-firmware alsa-utils arj ark bluedevil breeze-gtk ccache cups-pdf cups-pk-helper dolphin-plugins e2fsprogs efibootmgr exfatprogs fdkaac ffmpegthumbs firefox git glibc-locales gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb kamera kamoso kate kcalc kde-gtk-config kdegraphics-mobipocket kdegraphics-thumbnailers kdenetwork-filesharing kdeplasma-addons kdesdk-kio kdesdk-thumbnailers kdialog keditbookmarks kget kimageformats kinit kio-admin kio-gdrive kio-zeroconf kompare konsole kscreen kvantum kwrited libappimage libfido2 libktorrent libmms libnfs libva-utils lirc lrzip lua52-socket lzop mac man-db man-pages mesa-demos mesa-utils mold nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pbzip2 pdfmixtool pigz pipewire-alsa pipewire-pulse plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-nm plasma-pa plasma-wayland-protocols power-profiles-daemon powerdevil powerline powerline-fonts print-manager python-pyqt6 python-reportlab qbittorrent qt6-imageformats qt6-scxml qt6-virtualkeyboard realtime-privileges reflector rng-tools sddm-kcm skanlite sof-firmware sox spectacle sshfs system-config-printer terminus-font timidity++ ttf-ubuntu-font-family unarchiver unrar unzip usb_modeswitch usbutils vdpauinfo vlc vorbis-tools vorbisgain wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde xsane zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;; + 3) # Gnome Desktop: deskpkgs="${basepkgs} gnome networkmanager" displaymanager="gdm" bluetooth="bluetooth" network="NetworkManager" ;; - 4) # NOTE: Custom Gnome & Systemd-boot & Optimized System: - - deskpkgs="${basepkgs} evince file-roller gdm gnome-calculator gnome-clocks gnome-console gnome-control-center gnome-disk-utility gnome-keyring gnome-menus gnome-session gnome-shell-extensions gnome-shell-extension-appindicator gnome-system-monitor gnome-text-editor gnome-tweaks gvfs gvfs-afc gvfs-mtp loupe malcontent nautilus networkmanager power-profiles-daemon simple-scan sushi system-config-printer xdg-desktop-portal-gnome xdg-user-dirs-gtk alsa-firmware alsa-utils ccache cups-pdf e2fsprogs efibootmgr exfatprogs fdkaac git glib2-devel glibc-locales gnome-browser-connector gparted gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb irqbalance libfido2 libva-utils lrzip mac man-db man-pages meld mesa-utils mold nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pbzip2 pdfmixtool pigz pipewire-alsa pipewire-pulse powerline powerline-fonts qbittorrent realtime-privileges reflector rng-tools sof-firmware sox terminus-font ttf-ubuntu-font-family unrar unzip usb_modeswitch usbutils vdpauinfo vlc wget zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;; + 4) # Custom Gnome & Systemd-boot & Optimized System: + deskpkgs="${basepkgs} evince file-roller gdm gnome-calculator gnome-clocks gnome-console gnome-control-center gnome-disk-utility gnome-keyring gnome-menus gnome-session gnome-shell-extensions gnome-shell-extension-appindicator gnome-system-monitor gnome-text-editor gnome-tweaks gvfs gvfs-afc gvfs-mtp loupe malcontent nautilus networkmanager power-profiles-daemon simple-scan sushi system-config-printer xdg-desktop-portal-gnome xdg-user-dirs-gtk alsa-firmware alsa-utils ccache cups-pdf e2fsprogs efibootmgr exfatprogs fdkaac git glib2-devel glibc-locales gnome-browser-connector gparted gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb libfido2 libva-utils lrzip mac man-db man-pages meld mesa-utils mold nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pbzip2 pdfmixtool pigz pipewire-alsa pipewire-pulse powerline powerline-fonts qbittorrent realtime-privileges reflector rng-tools sof-firmware sox terminus-font ttf-ubuntu-font-family unrar unzip usb_modeswitch usbutils vdpauinfo vlc wget zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;; - 5) # NOTE: Xfce Desktop: - + 5) # Xfce Desktop: deskpkgs="${basepkgs} xfce4 lightdm-gtk-greeter network-manager-applet" displaymanager="lightdm" network="NetworkManager" ;; - 6) # NOTE: Cinnamon Desktop: - + 6) # Cinnamon Desktop: deskpkgs="${basepkgs} cinnamon blueberry lightdm-slick-greeter system-config-printer gnome-keyring ${terminal}" displaymanager="lightdm" bluetooth="bluetooth" network="NetworkManager" ;; - 7) # NOTE: Deepin Desktop: - + 7) # Deepin Desktop: deskpkgs="${basepkgs} deepin deepin-terminal deepin-kwin networkmanager" displaymanager="lightdm" network="NetworkManager" ;; - 8) # NOTE: Budgie Desktop: - + 8) # Budgie Desktop: deskpkgs="${basepkgs} budgie lightdm-gtk-greeter arc-gtk-theme papirus-icon-theme network-manager-applet ${terminal}" displaymanager="lightdm" network="NetworkManager" ;; - 9) # NOTE: Lxqt Desktop: - + 9) # Lxqt Desktop: deskpkgs="${basepkgs} lxqt breeze-icons network-manager-applet sddm xscreensaver" displaymanager="sddm" network="NetworkManager" ;; - 10) # NOTE: Mate Desktop: - + 10) # Mate Desktop: deskpkgs="${basepkgs} mate mate-terminal mate-media blueman network-manager-applet mate-power-manager system-config-printer lightdm-gtk-greeter" displaymanager="lightdm" bluetooth="bluetooth" network="NetworkManager" ;; - 11) # NOTE: Base System: - + 11) # Base System: deskpkgs="${basepkgs} networkmanager" network="NetworkManager" ;; - 12) # NOTE: Custom System: - + 12) # Custom System: if [[ "${vendor}" == "Virtual Machine" ]]; then deskpkgs="base sudo ${bootldr_pkgs} ${custompkgs} ${fstools} ${kernel} ${microcode} ${vmpkgs} ${greeter}" else @@ -4662,7 +5227,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs if pacstrap -K -i /mnt ${deskpkgs} ; then if [[ "${fs}" == "2" ]]; then genfstab -t PARTUUID /mnt >> /mnt/etc/fstab || err_abort - sleep 0.3 + sleep 0.2 NC " ==> [${green}Fstab OK${nc}] " @@ -4676,7 +5241,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs swapfile (){ local stage_prompt="Swapfile" - sleep 0.3 + sleep 0.2 NC " @@ -4697,7 +5262,7 @@ FSTAB swapfile_btrfs (){ local stage_prompt="Btfrs Swapfile" - sleep 0.3 + sleep 0.2 NC " @@ -4718,7 +5283,7 @@ FSTAB wireless_regdom (){ local stage_prompt="Wireless Regdom" - sleep 0.3 + sleep 0.2 NC " @@ -4736,25 +5301,42 @@ btldr_conf (){ if [[ "${bootloader}" == "1" ]]; then cnfg local stage_prompt="Systemd-boot" - if arch-chroot /mnt <<-BOOTCTL > /dev/null 2>&1 ; then - bootctl install || exit - echo "default arch.conf" > /boot/loader/loader.conf || exit - echo " - title ${entrname} - linux /vmlinuz-${kernel} - initrd /initramfs-${kernel}.img - options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit - systemctl enable systemd-boot-update || exit + if [[ "${espmnt}" == "1" ]]; then + if arch-chroot /mnt <<-XBOOTCTL > /dev/null 2>&1 ; then + bootctl --esp-path=/efi --boot-path=/boot install || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit + echo " + title ${entrname} + linux /vmlinuz-${kernel} + initrd /initramfs-${kernel}.img + options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit + systemctl enable systemd-boot-update || exit +XBOOTCTL + stage_ok + else + stage_fail + fi + elif [[ "${espmnt}" == "2" ]]; then + if arch-chroot /mnt <<-BOOTCTL > /dev/null 2>&1 ; then + bootctl install || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit + echo " + title ${entrname} + linux /vmlinuz-${kernel} + initrd /initramfs-${kernel}.img + options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit + systemctl enable systemd-boot-update || exit BOOTCTL - stage_ok - else - stage_fail + stage_ok + else + stage_fail + fi fi elif [[ "${bootloader}" == "2" ]]; then cnfg local stage_prompt="Grub" if arch-chroot /mnt <<-GRUB > /dev/null 2>&1 ; then - grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB || exit + grub-install --target=x86_64-efi --efi-directory=${btldr_esp_mount} --bootloader-id=GRUB || exit sed -i \ -e 's|^GRUB_CMDLINE_LINUX_DEFAULT.*|GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}"|g' \ -e "/^#GRUB_DISABLE_OS_PROBER=false/s/^#//" \ @@ -4890,9 +5472,41 @@ NVIDIA_HOOK fi } ################################################################################################### +main_chroot (){ + + stage_prompt="Base System" + if arch-chroot /mnt <<-CONF > /dev/null 2>&1 ; then + sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit + locale-gen || exit + echo LANG=${SETLOCALE} > /etc/locale.conf || exit + export LANG=${SETLOCALE} || exit + echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit + echo " + ${mkinitcpio_mods} + ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + mkinitcpio -P || exit + ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit + hwclock --systohc || exit + echo ${HOSTNAME} > /etc/hostname || exit + echo " + 127.0.0.1 localhost + ::1 localhost + 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit + echo root:${ROOTPASSWD2} | chpasswd || exit + useradd -m -G wheel -s /bin/bash ${USERNAME} || exit + echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit + echo "%wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit + visudo -c /etc/sudoers.d/sudoersd || exit +CONF + stage_ok + else + stage_fail + fi +} +################################################################################################### chroot_conf (){ - sleep 0.3 + sleep 0.2 NC " @@ -4932,6 +5546,7 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Chroot & encr_swap_bootopts="resume=${encr_root_dev} resume_offset=${offst} " ## Zram Swap elif [[ "${swapmode}" == "3" ]]; then + # Zram Swap Kernel Boot Options zram_bootopts="zswap.enabled=0" ## No Swap elif [[ "${swapmode}" == "4" ]]; then @@ -5012,7 +5627,9 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Chroot & #### Unencrypted Setup Vars elif [[ "${encrypt}" == "no" ]]; then ### Swap Setup + ## Zram Swap if [[ "${swapmode}" == "3" ]]; then + # Zram Swap Kernel Boot Options zram_bootopts="zswap.enabled=0" fi ### Graphics Setup @@ -5092,37 +5709,11 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Chroot & fi #-------------------------------------------------------------------------------------------------- - # 'VANILLA Desktops' Configuration: + + # 'Vanilla' Configuration: if [[ "${packages}" =~ ^(1|3|5|6|7|8|9|10|11)$ ]]; then cnfg - stage_prompt="Basic System" - if arch-chroot /mnt <<-VANILLA_CONF > /dev/null 2>&1 ; then - sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit - locale-gen || exit - echo LANG=${SETLOCALE} > /etc/locale.conf || exit - export LANG=${SETLOCALE} || exit - echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit - echo " - ${mkinitcpio_mods} - ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit - mkinitcpio -P || exit - ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit - hwclock --systohc || exit - echo ${HOSTNAME} > /etc/hostname || exit - echo " - 127.0.0.1 localhost - ::1 localhost - 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit - echo root:${ROOTPASSWD2} | chpasswd || exit - useradd -m -G wheel -s /bin/bash ${USERNAME} || exit - echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit - echo "%wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit - visudo -c /etc/sudoers.d/sudoersd || exit -VANILLA_CONF - stage_ok - else - stage_fail - fi + main_chroot if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then cnfg if [[ "${packages}" == "7" ]]; then @@ -5196,37 +5787,10 @@ NETWORK completion fi #-------------------------------------------------------------------------------------------------- - # 'Custom System' Configuration (Add any extra configuration below): + # 'Custom System' Configuration: if [[ "${packages}" == "12" ]]; then cnfg - stage_prompt="Basic System" - if arch-chroot /mnt <<-CUSTOM_CONF > /dev/null 2>&1 ; then - sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit - locale-gen || exit - echo LANG=${SETLOCALE} > /etc/locale.conf || exit - export LANG=${SETLOCALE} || exit - echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit - echo " - ${mkinitcpio_mods} - ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit - mkinitcpio -P || exit - ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit - hwclock --systohc || exit - echo ${HOSTNAME} > /etc/hostname || exit - echo " - 127.0.0.1 localhost - ::1 localhost - 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit - echo root:${ROOTPASSWD2} | chpasswd || exit - useradd -m -G wheel -s /bin/bash ${USERNAME} || exit - echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit - echo "%wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit - visudo -c /etc/sudoers.d/sudoersd || exit -CUSTOM_CONF - stage_ok - else - stage_fail - fi + main_chroot if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then cnfg if [[ "${greeternmbr}" == "1" ]]; then @@ -5278,7 +5842,7 @@ CUSTOM_SERV completion fi #-------------------------------------------------------------------------------------------------- - # NOTE: Plasma / Gnome & Systemd-boot Optimized-System Configuration: + # Plasma / Gnome & Systemd-boot Optimized System Configuration: if [[ "${packages}" == "2" || "${packages}" == "4" ]]; then stage_prompt="Custom System" cnfg @@ -5292,7 +5856,7 @@ CUSTOM_SERV ${nrg_plc} performance NRG fi - if arch-chroot /mnt <<-OPTIMIZED_CONF > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-CUSTOM_CONF > /dev/null 2>&1 ; then sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit locale-gen || exit echo LANG=${SETLOCALE} > /etc/locale.conf || exit @@ -5423,8 +5987,8 @@ NRG Defaults editor=/usr/bin/nano %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit visudo -c /etc/sudoers.d/sudoersd || exit - systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd systemd-boot-update irqbalance ${displaymanager} ${trim} ${vm_services} ${nvidia_services} || exit -OPTIMIZED_CONF + systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd systemd-boot-update ${displaymanager} ${trim} ${vm_services} ${nvidia_services} || exit +CUSTOM_CONF stage_ok else stage_fail @@ -5485,18 +6049,19 @@ OPTIMIZED_CONF nvidia_services="" nvidia_suspend="" autoroot="" - autoboot="" + autoesp="" + autoxboot="" autohome="" autoswap="" - bootsize="" + espsize="" rootprt="" - bootprt="" + espprt="" + xbootprt="" homeprt="" swapprt="" smartpart="" partok="" use_manpreset="" - manpart="" instl_drive="" sgdsk_nmbr="" part_mode="" @@ -5513,10 +6078,14 @@ OPTIMIZED_CONF stage_prompt="" zram="" zram_bootopts="" + xbootloader="" + multibooting="" + hypervisor="" + mkinitcpio_mods="" clear first_check - sleep 1 + sleep 0.2 line3 CYANBG "************************************************************************************************* " CYANBG " "