Add: 'Filesystem Selection': Ext4 > Dedicated /Home partition > The installer offers to create a /Home partition or utilize a previously-used unencrypted /Home partition

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