Change: Adapt script to a recent systemd 'hostnamectl' change

Change: 'Disk Management' stage/'Partition Manager' stage: Edit prompts for better aesthetics
Add: Greatly re-worked the 'GPT Partitioner' stage.
Now this stage comes with an extra submenu of options for user convenience and enhanced info/aesthetics
This commit is contained in:
Jane Doe
2025-09-22 00:21:51 +03:00
parent 827ab52ebd
commit 08c6a32048
+145 -72
View File
@@ -2,7 +2,7 @@
# Amelia Installer
# Source: https://gitlab.com/prism7/archery
# Version: 9.5.2
# Version: 9.6.0
set -euo pipefail
###################################################################################################
@@ -406,7 +406,6 @@ set_font() {
###################################################################################################
slct_font() {
clear
NC "
@@ -535,10 +534,10 @@ machine_dtct() {
${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Machine Detection${nc} ${magenta}]${nc}------------------------------------${magenta}###
"
CPU="$(grep -E 'vendor_id' /proc/cpuinfo)"
hardw_model="$(hostnamectl | grep -E 'Hardware Model:'| sed 's| Hardware Model: ||')"
hardw_model_vend="$(hostnamectl | grep -E 'Hardware Model:'| sed 's| Hardware Model: ||' | awk "{print \$1}")"
hardw_vendor="$(hostnamectl | grep -E 'Hardware Vendor' | awk "{print \$3}")"
machine="$(hostnamectl | grep -E 'Chassis' | awk "{print \$2}")"
hardw_model="$(hostnamectl | grep -E "Hardware Model:" | sed 's| Hardware Model: ||')"
hardw_model_vend="$(hostnamectl | grep -E "Hardware Model:" | sed 's| Hardware Model: ||' | awk "{print \$1}")"
hardw_vendor="$(hostnamectl | grep -E "Hardware Vendor" | awk "{print \$3}")"
machine="$(hostnamectl | grep -Em 1 "Chassis" | awk "{print \$2}")"
if [[ "${hypervisor}" != "none" ]]; then
vm
@@ -3249,7 +3248,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk
> Select a Submenu: "
NC "
[1] Disk GPT Manager
[1] GPT Manager
[2] Partition Manager
@@ -3266,7 +3265,7 @@ Enter a number: "
1)
until gpt_mngr; do : ; done ;;
2)
until disk_mngr; do : ; done ;;
until part_mngr; do : ; done ;;
"")
until main_menu; do : ; done ;;
*)
@@ -3277,71 +3276,161 @@ Enter a number: "
###################################################################################################
gpt_mngr() {
local prompt="Disk GPT"
local prompt="GPT Manager"
sleep 0.2
NC "
${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Disk GPT Manager${nc} ${magenta}]${nc}------------------------------------${magenta}###
${magenta}###${nc}---------------------------------------${magenta}[ ${bwhite}GPT Manager${nc} ${magenta}]${nc}---------------------------------------${magenta}###
"
gpt_dsk_nmbr=" "
while [[ -n "${gpt_dsk_nmbr}" ]]; do
YELLOW "
> Select a disk to manage its GPT:
if [[ -z "${instl_drive}" ]]; then
YELLOW "
### Select disk and:
### Type ${nc}'?'${yellow} for help, ${nc}'x'${yellow} for extra functionality or ${nc}'q'${yellow} to quit "
NC "
> Select a disk to manage its GPT: "
NC "
${disks}"
BLUE "
BLUE "
Enter a disk number ${bwhite}(empty to skip)${blue}: "
read -r -p "
read -r -p "
==> " gpt_dsk_nmbr
echo
echo
if [[ -n "${gpt_dsk_nmbr}" ]]; then
gptdrive="$(echo "${disks}" | awk "\$1 == ${gpt_dsk_nmbr} {print \$2}")"
if [[ -e "${gptdrive}" ]]; then
if [[ "${run_as}" != "root" ]]; then
sleep 0.2
RED "
if [[ -n "${gpt_dsk_nmbr}" ]]; then
gptdrive="$(echo "${disks}" | awk "\$1 == ${gpt_dsk_nmbr} {print \$2}")"
else
skip
ok
if [[ "${install}" == "yes" ]]; then
until instl_dsk; do : ; done
else
until dsks_submn; do : ; done
fi
return 0
fi
fi
if [[ -n "${instl_drive}" ]]; then
gptdrive="${instl_drive}"
fi
if [[ -e "${gptdrive}" ]]; then
parttable="$(fdisk -l "${gptdrive}" 2> ${void} | grep '^Disklabel type' | awk "{print \$3}")"
if [[ "${parttable}" == "gpt" ]]; then
sleep 0.2
NC "
---------------------
### ${green}Disk GPT OK ${nc}###
---------------------"
elif [[ "${parttable}" != "gpt" && -z "${install}" ]]; then
sleep 0.2
RED "
---------------------------------------
### ${yellow}No GPT found on selected disk ${red}###
---------------------------------------"
fi
if [[ "${run_as}" != "root" ]]; then
sleep 0.2
RED "
-----------------------------------
### ${yellow}Root Privileges Missing.. ${red}###
-----------------------------------"
reload
until dsks_submn; do : ; done
fi
YELLOW "
> Make a Selection: "
NC "
[1] Create new GPT table on selected disk [Destroy any existing GPT/MBR structures]
[2] Use the program interactively [Expert Mode]
[ ] Return to Previous Menu "
BLUE "
Enter a number: "
read -r -p "
==> " gptslct
echo
if [[ "${gptslct}" == "1" ]]; then
sgdisk -Z "${gptdrive}" > ${void} &&
sgdisk -o "${gptdrive}" > ${void} &&
parttable="$(fdisk -l "${gptdrive}" 2> ${void} | grep '^Disklabel type' | awk "{print \$3}")"
if [[ "${parttable}" == "gpt" ]]; then
gptok="yes"
sleep 0.2
NC "
==> [${green}GPT Entries OK${nc}]
"
else
gptok="no"
sleep 0.2
RED "
---------------------------------------
### ${yellow}No GPT found on selected disk ${red}###
---------------------------------------"
reload
until dsks_submn; do : ; done
return 1
fi
elif [[ "${gptslct}" == "2" ]]; then
YELLOW "
### Type ${nc}'?'${yellow} for help, ${nc}'x'${yellow} for extra functionality or ${nc}'q'${yellow} to quit "
NC "
______________________________________________
"
gdisk "${gptdrive}"
sleep 0.2
NC "
parttable="$(fdisk -l "${gptdrive}" 2> ${void} | grep '^Disklabel type' | awk "{print \$3}")"
if [[ "${parttable}" == "gpt" ]]; then
gptok="yes"
sleep 0.2
NC "
==> [${green}${gptdrive} OK${nc}]
"
==> [${green}GPT Entries OK${nc}]
"
else
gptok="no"
sleep 0.2
RED "
---------------------------------------
### ${yellow}No GPT found on selected disk ${red}###
---------------------------------------"
reload
return 1
fi
elif [[ -z "${gptslct}" ]]; then
if [[ -n "${instl_drive}" ]]; then
skip
ok
until instl_dsk; do : ; done
elif [[ -z "${instl_drive}" ]]; then
reload
return 1
fi
else
invalid
return 1
fi
else
skip
ok
if [[ "${install}" == "yes" ]]; then
until instl_dsk; do : ; done
else
until dsks_submn; do : ; done
fi
invalid
return 1
fi
done
}
@@ -3352,7 +3441,7 @@ ask_multibooting() {
sleep 0.2
NC "
${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}MultiBoot Status${nc} ${magenta}]${nc}-------------------------------------${magenta}###
${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}MultiBoot Status${nc} ${magenta}]${nc}------------------------------------${magenta}###
"
YELLOW "
@@ -3401,7 +3490,7 @@ Enter [y/n]: "
ok
}
###################################################################################################
disk_mngr() {
part_mngr() {
if [[ "${multibooting}" == "y" ]]; then
until manual_part; do : ; done
@@ -3646,7 +3735,7 @@ set_partsize() {
### Current ${nc}Root${yellow} partition's size is ${nc}[${rootsize} GiB]${yellow}
> Adjust Root Partition's size (by setting a custom ${nc}% ${yellow}value) ? "
> ${nc}Adjust ${yellow}Root Partition's size (by setting a custom ${nc}% ${yellow}value) ? "
BLUE "
@@ -3703,56 +3792,40 @@ partitioner() {
local prompt="Disk ${sgdrive} Preset-Partitioned"
fi
if [[ "${preset}" == "1" ]]; then
wipefs -af "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
if [[ "${gptok}" != "yes" ]]; then
sgdisk -Z "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -o "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
gptok="yes"
fi
if [[ "${preset}" == "1" ]]; then
sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n2:0:0 -t2:8304 -c2:ROOT "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
partprobe -s "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
if [[ "${install}" == "yes" ]]; then
until sanity_check; do : ; done
else
ok
fi
elif [[ "${preset}" == "2" ]]; then
until set_swapsize; do : ; done
wipefs -af "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -o "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n3:0:0 -t3:8304 -c3:ROOT "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
partprobe -s "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
if [[ "${install}" == "yes" ]]; then
until sanity_check; do : ; done
else
ok
fi
elif [[ "${preset}" == "3" ]]; then
wipefs -af "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -o "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n2:0:+"${rootsize}"G -t2:8304 -c2:ROOT "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n3:0:0 -t3:8302 -c3:HOME "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
partprobe -s "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
if [[ "${install}" == "yes" ]]; then
until sanity_check; do : ; done
else
ok
fi
elif [[ "${preset}" == "4" ]]; then
wipefs -af "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
until set_swapsize; do : ; done
sgdisk -o "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n3:0:+"${rootsize}"G -t3:8304 -c3:ROOT "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
sgdisk -I -n4:0:0 -t4:8302 -c4:HOME "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
partprobe -s "${sgdrive}" > "${void}" 2> "${log}" || stage_fail
if [[ "${install}" == "yes" ]]; then
until sanity_check; do : ; done
else
ok
fi
fi
if [[ "${install}" == "yes" ]]; then
until sanity_check; do : ; done
else
ok
fi
}
###################################################################################################
@@ -5787,7 +5860,7 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In
###################################################################################################
revise() {
reset=(xbootloader="" gfxconf="" vendor_slct="" vendor="" desktop="" terminal="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" autoroot="" autoxboot="" autohome="" autoswap="" vendors="" lowlat="" nogsp="" sanity="" smartpart="" partok="" preset="" presetpart="" set_optm="" ask_param="" kill_watchdog="" genoptm="" desk_setup="" devel="" web="" web_pkg="" web_aur="" web_slct="" set_optm_slct="" oomd="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="")
reset=(xbootloader="" gfxconf="" vendor_slct="" vendor="" desktop="" terminal="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" autoroot="" autoxboot="" autohome="" autoswap="" vendors="" lowlat="" nogsp="" sanity="" smartpart="" partok="" preset="" presetpart="" set_optm="" ask_param="" kill_watchdog="" genoptm="" desk_setup="" devel="" web="" web_pkg="" web_aur="" web_slct="" set_optm_slct="" oomd="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="")
export "${reset[@]}"
gfxpkgs=()
@@ -7420,7 +7493,7 @@ CUSTOMSERV
log="Amelia_log.txt"
disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)"
trg=""
vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" gfxcount="" gfxcard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" gfxconf="" gfx_conf="" gfx_setup="" vendor="" vendor1="" vendor2="" vendor3="" vendor_slct="" desktop="" terminal="" efi_entr_del="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" gfx_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" greeternmbr="" cust_bootopts="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" gfx_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" zram_bootopts="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" mkinitcpio_bins="" uki="" ukify="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" vendors="" dev="" web="" web_pkg="" web_aur="" web_slct="" printer="" print_pkgs="" shellnmbr="" shell="" shellname="" shellname2="" shell_pkgs="" genoptm="" set_optm="" ask_param="" desk_setup="" set_optm_slct="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="")
vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" gfxcount="" gfxcard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" gfxconf="" gfx_conf="" gfx_setup="" vendor="" vendor1="" vendor2="" vendor3="" vendor_slct="" desktop="" terminal="" efi_entr_del="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" gfx_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" greeternmbr="" cust_bootopts="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" gfx_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" zram_bootopts="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" mkinitcpio_bins="" uki="" ukify="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" vendors="" dev="" web="" web_pkg="" web_aur="" web_slct="" printer="" print_pkgs="" shellnmbr="" shell="" shellname="" shellname2="" shell_pkgs="" genoptm="" set_optm="" ask_param="" desk_setup="" set_optm_slct="" irqbalance="" thermald="" rngd="" rtkit="" tlp="" CRYPTPASS="" CRYPTPASS2="" askoptm="" gptslct="" gptok="")
export "${vars[@]}"
sleep 0.2
CYANBG "************************************************************************************************* "