diff --git a/Amelia.sh b/Amelia.sh index fff30f7..e8fb004 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -1,7 +1,7 @@ #!/bin/bash # Amelia Installer -# Version: 5.7 +# Version: 5.8 set -euo pipefail trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR @@ -1152,14 +1152,14 @@ Enter Swap size ${bwhite}(in GB)${blue}: " dtct_vga (){ if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel & Bootloader Selection" + local stage_prompt="Kernel & Bootloader Setup" completion_err until slct_krnl; do : ; done until ask_bootldr; do : ; done return 1 fi if [[ -z "${fs}" ]]; then - local stage_prompt="Filesystem & Swap Selection" + local stage_prompt="Filesystem & Swap Setup" completion_err until ask_fs; do : ; done until ask_swap; do : ; done @@ -2143,8 +2143,6 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk [2] Partition Manager - [3] Installation Disk & Encryption - [ ] Return to Main Menu " BLUE " @@ -2158,20 +2156,6 @@ Enter a number: " until gpt_mngr; do : ; done ;; 2) until disk_mngr; do : ; done ;; - 3) - until instl_dsk; do : ; done - if [[ -z "${fs}" ]]; then - sleep 0.3 - CYAN " - - - - [!] Please complete 'Filesystem Selection' to continue - " - until ask_fs; do : ; done - fi - until ask_crypt; do : ; done - return 1 ;; "") until main_menu; do : ; done ;; *) @@ -2296,11 +2280,13 @@ auto_part(){ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automatic Partitioning${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} " - sgdsk_nmbr=" " - while [[ -n "${sgdsk_nmbr}" ]]; do YELLOW " - > Select a disk to Manage: " + > Select a disk for Auto-Partitioning: " + RED " + + [!] WARNING: All data on selected disk will be destroyed [!] + " NC " ${disks}" @@ -2313,9 +2299,9 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " echo if [[ -n "${sgdsk_nmbr}" ]]; then - drive="$(echo "${disks}" | awk "\$1 == ${sgdsk_nmbr} {print \$2}")" - if [[ -e "${drive}" ]]; then - partsize="$(fdisk -l "${drive}" | grep -E 'bytes'| grep -E 'Disk'| awk "{print \$5}")" + sgdrive="$(echo "${disks}" | awk "\$1 == ${sgdsk_nmbr} {print \$2}")" + if [[ -e "${sgdrive}" ]]; then + partsize="$(fdisk -l "${sgdrive}" | grep -E 'bytes'| grep -E 'Disk'| awk "{print \$5}")" rootsize="$((partsize*25/100/1024000000))" if [[ "${run_as}" != "root" ]]; then sleep 0.3 @@ -2326,13 +2312,60 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " until dsks_submn; do : ; done fi + if [[ "${fs}" == "2" && "${swapmode}" == "1" ]] ; then + preset="2" + elif [[ "${fs}" == "2" && "${swapmode}" == "2" ]] ; then + preset="1" + elif [[ "${fs}" == "1" ]] ; then + sleep 0.3 + YELLOW " + + ### NOTE: Creation of a separate /Home Partition is supported + + + > Create a separate /Home Partition ? [y/n] " + BLUE " + + +Enter [y/n]: " + read -r -p " +==> " sep_home + + case "${sep_home}" in + y) + sleep 0.3 + YELLOW " + + + ### A separate /Home Partition will be created + ";; + n) + echo + skip ;; + "") + sleep 0.3 + echo + RED " + [!] Please type 'y' or 'n' to continue.. " + reload + return 1 ;; + *) + invalid + return 1 ;; + esac + if [[ "${sep_home}" == "y" && "${swapmode}" == "1" ]] ; then + preset="4" + elif [[ "${sep_home}" == "y" && "${swapmode}" == "2" ]] ; then + preset="3" + elif [[ "${sep_home}" == "n" && "${swapmode}" == "1" ]] ; then + preset="2" + elif [[ "${sep_home}" == "n" && "${swapmode}" == "2" ]] ; then + preset="1" + fi + else YELLOW " > Select a Partition Layout Preset: " - RED " - - [!] WARNING: All data on selected disk will be ${nc}INSTANTLY ${red}destroyed [!] - " NC " * [${cyan}Ext4${nc}] filesystem support Layout @@ -2341,9 +2374,9 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " - [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}] @@ -2352,33 +2385,34 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " Enter a Preset number: " - read -r -p " + read -r -p " ==> " preset - echo + fi + case "${preset}" in 1) - sgdisk -o "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:0 -t 2:8304 -c 2:Root "${drive}" > /dev/null 2>&1 || stage_fail ;; + 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 ;; 2) until set_swapsize; do : ; done - sgdisk -o "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 3:0:0 -t 3:8304 -c 3:Root "${drive}" > /dev/null 2>&1 || stage_fail ;; + 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 ;; 3) - sgdisk -o "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${rootsize}"G -t 2:8304 -c 2:Root "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 3:0:0 -t 3:8302 -c 3:Home "${drive}" > /dev/null 2>&1 || stage_fail ;; + 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 ;; 4) until set_swapsize; do : ; done - sgdisk -o "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 1:0:+512M -t 1:ef00 -c 1:ESP "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 2:0:+"${swapsize}"G -t 2:8200 -c 2:Swap "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 3:0:+"${rootsize}"G -t 3:8304 -c 3:Root "${drive}" > /dev/null 2>&1 || stage_fail - sgdisk -n 4:0:0 -t 4:8302 -c 4:Home "${drive}" > /dev/null 2>&1 || stage_fail ;; + 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 ;; "") sleep 0.3 RED " @@ -2393,9 +2427,12 @@ Enter a Preset number: " sleep 0.3 NC " -==> [${green}Disk ${drive} OK${nc}] - - " + +==> [${green}Disk ${sgdrive} OK${nc}] " + if [[ "${install}" == "yes" ]]; then + return 0 + fi + until dsks_submn; do : ; done else invalid return 1 @@ -2417,7 +2454,6 @@ Enter a Preset number: " until dsks_submn; do : ; done fi fi - done } ################################################################################################### manual_part(){ @@ -2465,23 +2501,23 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ==> " cgdsk_nmbr if [[ -n "${cgdsk_nmbr}" ]]; then - drive="$(echo "${disks}" | awk "\$1 == ${cgdsk_nmbr} {print \$2}")" - if [[ -e "${drive}" ]]; then - if [[ "${run_as}" != "root" ]]; then - sleep 0.3 - RED " + cgdrive="$(echo "${disks}" | awk "\$1 == ${cgdsk_nmbr} {print \$2}")" + if [[ -e "${cgdrive}" ]]; then + if [[ "${run_as}" != "root" ]]; then + sleep 0.3 + RED " [!] Root Privileges Missing.. " - reload - until dsks_submn; do : ; done - fi - cgdisk "${drive}" + reload + until dsks_submn; do : ; done + fi + cgdisk "${cgdrive}" clear sleep 0.3 NC " -==> [${green}Disk ${drive} OK${nc}] " +==> [${green}Disk ${cgdrive} OK${nc}] " return 1 else invalid @@ -2530,12 +2566,12 @@ Enter a disk number: " echo if [[ -n "${instl_dsk_nmbr}" ]]; then - instl_drive="$(echo "${disks}" | awk "\$1 == ${instl_dsk_nmbr} {print \$2}")" + instl_drive="$(echo "${disks}" | awk "\$1 == ${instl_dsk_nmbr} {print \$2}")" if [[ -e "${instl_drive}" ]]; then if [[ "${run_as}" != "root" ]]; then sleep 0.3 RED " - + [!] Root Privileges Missing.. " reload until dsks_submn; do : ; done @@ -2558,7 +2594,7 @@ Enter a disk number: " until gpt_mngr; do : ; done return 0 fi - until sanity_check; do : ; done + until sanity_check; do : ; done else invalid return 1 @@ -2699,7 +2735,7 @@ ${multi_boot} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done retry_boot="yes" @@ -2847,7 +2883,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -2862,7 +2898,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -2886,7 +2922,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -2911,7 +2947,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -2926,7 +2962,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -2983,7 +3019,7 @@ ${multi_swap} RED " [!] Sanity Check Failed [!] " - sleep 4 + sleep 2 reload until disk_mngr; do : ; done return 0 @@ -3149,14 +3185,14 @@ instl (){ fi if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel & Bootloader Selection" + local stage_prompt="Kernel & Bootloader Setup" completion_err until slct_krnl; do : ; done until ask_bootldr; do : ; done fi if [[ -z "${fs}" ]]; then - local stage_prompt="Filesystem & Swap Selection" + local stage_prompt="Filesystem & Swap Setup" completion_err until ask_fs; do : ; done until ask_swap; do : ; done @@ -3186,12 +3222,8 @@ instl (){ until wireless_rgd; do : ; done fi - if [[ "${sanity}" != "ok" ]]; then - local stage_prompt="Installation Disk' & 'Encryption" - completion_err until instl_dsk; do : ; done until ask_crypt; do : ; done - fi if [[ "${swapmode}" == "1" ]]; then until "${swaptype}"; do : ; done @@ -4349,7 +4381,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs 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-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 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 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}" ;; + 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 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: @@ -4426,7 +4458,7 @@ swapfile (){ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swapfile Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " - if arch-chroot /mnt <<-SWAP ; then + if arch-chroot /mnt <<-SWAP > /dev/null 2>&1 ; then mkswap -U clear --size ${swapsize}G --file /swapfile > /dev/null 2>&1 || exit SWAP cat >> /mnt/etc/fstab <<-FSTAB || err_abort @@ -4447,7 +4479,7 @@ swapfile_btrfs (){ ${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Btrfs Swapfile Setup${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " - if arch-chroot /mnt <<-SWAP ; then + if arch-chroot /mnt <<-SWAP > /dev/null 2>&1 ; then btrfs filesystem mkswapfile --size ${swapsize}g --uuid clear /swap/swapfile > /dev/null 2>&1 || exit SWAP cat >> /mnt/etc/fstab <<-FSTAB || err_abort @@ -4952,12 +4984,8 @@ NRG MODULES_DECOMPRESS="yes"' | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit mkinitcpio -P || exit echo ' - CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \ - -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ - -fstack-clash-protection -fcf-protection \ - -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" - LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \ - -Wl,-z,pack-relative-relocs,-fuse-ld=mold" + CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" + LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs,-fuse-ld=mold" RUSTFLAGS="-C force-frame-pointers=yes -C opt-level=3 -C target-cpu=native -C link-arg=-fuse-ld=mold" MAKEFLAGS="-j$(nproc)" BUILDENV=(!distcc color ccache check !sign) @@ -5364,6 +5392,9 @@ NVIDIA_HOOK preset="" partsize="" rootsize="" + sgdrive="" + cgdrive="" + sep_home="" clear first_check