Remove: For reduced complexity, the 'Installation Disk & Encryption' stage has been removed from the 'Disk Management' submenu.

It is now part of the auto-guided 'Start Installation' stage.
Change: 'Disk Management' > 'Partition Manager' > 'Automatic Partitioning': Now detects user's current preferences and offers/selects the appropriate 'Partition Layout Preset' automatically.
Add: Packages: 'gnome-shell-extension-appindicator' and 'glib2-devel' have been added to the 'Custom Gnome Setup'
Change: Silence verbosity of stdout/stderr when a 'Swapfile' is created.
Minor visual changes and indentation.
This commit is contained in:
Jane Doe 2024-06-22 21:35:17 +00:00
parent 19f086195a
commit 6271e0a9d3

185
Amelia.sh
View file

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