You've already forked al-installer
Fix: lvm. New: erroshow(), select wm/de seperately. Change: use dialog --no-cancel
This commit is contained in:
@ -10,7 +10,7 @@
|
||||
|
||||
|
||||
# immutable globals
|
||||
readonly VER="1.7.48" # Installer version
|
||||
readonly VER="1.7.52" # Installer version
|
||||
readonly DIST="ArchLabs" # Linux distributor
|
||||
readonly MNT="/mnt" # Install mountpoint
|
||||
readonly ERR="/tmp/errlog" # Built-in error log
|
||||
@ -25,8 +25,8 @@ main()
|
||||
elif [[ $CURRENT_MENU != "main" ]]; then
|
||||
SELECTED=1
|
||||
CURRENT_MENU="main"
|
||||
elif (( SELECTED < 9 )); then
|
||||
((SELECTED++)) # increment the highlighted menu item
|
||||
elif (( SELECTED < 10 )); then
|
||||
((SELECTED++))
|
||||
fi
|
||||
|
||||
tput civis
|
||||
@ -39,9 +39,10 @@ main()
|
||||
"4" "$_PrepLVM" \
|
||||
"5" "$_PrepMount" \
|
||||
"6" "$_PrepConfig" \
|
||||
"7" "Pick Packages" \
|
||||
"8" "Check Choices" \
|
||||
"9" "$_PrepInstall")
|
||||
"7" "Select WM/DE(s)" \
|
||||
"8" "Select Packages" \
|
||||
"9" "Check Choices" \
|
||||
"10" "$_PrepInstall")
|
||||
|
||||
if [[ $WARN != true && $SELECTED =~ (2|5) ]]; then
|
||||
WARN=true
|
||||
@ -49,16 +50,44 @@ main()
|
||||
fi
|
||||
|
||||
case $SELECTED in
|
||||
1) device_tree ;;
|
||||
2) partition || SELECTED=$((SELECTED - 1)) ;;
|
||||
3) luks_menu || SELECTED=$((SELECTED - 1)) ;;
|
||||
4) lvm_menu || SELECTED=$((SELECTED - 1)) ;;
|
||||
5) mnt_menu || SELECTED=$((SELECTED - 1)) ;;
|
||||
6) preinstall_checks && { cfg_menu || SELECTED=$((SELECTED - 1)); } ;;
|
||||
7) preinstall_checks 1 && { select_packages || SELECTED=$((SELECTED - 2)); } ;;
|
||||
8) preinstall_checks 1 && show_cfg ;;
|
||||
9) preinstall_checks 1 && install ;;
|
||||
*) yesno "$_CloseInst" "$_CloseInstBody" "Exit" "Back" && die
|
||||
1)
|
||||
device_tree
|
||||
;;
|
||||
2)
|
||||
partition || SELECTED=$((SELECTED - 1))
|
||||
;;
|
||||
3)
|
||||
luks_menu || SELECTED=$((SELECTED - 1))
|
||||
;;
|
||||
4)
|
||||
lvm_menu || SELECTED=$((SELECTED - 1))
|
||||
;;
|
||||
5)
|
||||
mnt_menu || SELECTED=$((SELECTED - 1))
|
||||
;;
|
||||
6)
|
||||
if preinstall_checks; then
|
||||
cfg_menu || SELECTED=$((SELECTED - 1))
|
||||
fi
|
||||
;;
|
||||
7)
|
||||
if preinstall_checks 1; then
|
||||
select_wm_or_de || SELECTED=$((SELECTED - 1))
|
||||
fi
|
||||
;;
|
||||
8)
|
||||
if preinstall_checks 1; then
|
||||
select_packages || SELECTED=$((SELECTED - 1))
|
||||
fi
|
||||
;;
|
||||
9)
|
||||
preinstall_checks 1 && show_cfg
|
||||
;;
|
||||
10)
|
||||
preinstall_checks 1 && install
|
||||
;;
|
||||
*)
|
||||
yesno "$_CloseInst" "$_CloseInstBody" "Exit" "Back" && die
|
||||
esac
|
||||
}
|
||||
|
||||
|
@ -53,8 +53,8 @@ setup_grub()
|
||||
fi
|
||||
BCMDS[grub]+=" --target=i386-pc $BOOT_DEVICE && grub-mkconfig -o /boot/grub/grub.cfg"
|
||||
else
|
||||
if [[ $ROOT_PART =~ /dev/mapper && ! $LVM && ! $LUKS_PASS ]]; then
|
||||
luks_pass "$_LuksOpen" "$ROOT_PART" || return 1
|
||||
if [[ $ROOT_PART == */dev/mapper/* && ! $LVM && ! $LUKS_PASS ]]; then
|
||||
luks_pass "$_LuksOpen" "" || return 1
|
||||
fi
|
||||
|
||||
# the mount mess is needed for os-prober to work properly in the chroot
|
||||
@ -78,27 +78,6 @@ setup_systemd-boot()
|
||||
EDIT_FILES[9]="/boot/loader/entries/$DIST.conf"
|
||||
}
|
||||
|
||||
setup_boot_device()
|
||||
{
|
||||
infobox "$_PrepMount" "\nSetting device flags for: $BOOT_PART\n" 1
|
||||
|
||||
if [[ $BOOT_PART = /dev/nvme* ]]; then
|
||||
BOOT_DEVICE="${BOOT_PART%p[1-9]}"
|
||||
else
|
||||
BOOT_DEVICE="${BOOT_PART%[1-9]}"
|
||||
fi
|
||||
|
||||
BOOT_PART_NUM="${BOOT_PART: -1}"
|
||||
|
||||
if [[ $SYS == 'UEFI' ]]; then
|
||||
parted -s $BOOT_DEVICE set $BOOT_PART_NUM esp on >/dev/null 2>&1
|
||||
else
|
||||
parted -s $BOOT_DEVICE set $BOOT_PART_NUM boot on >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
prerun_grub()
|
||||
{
|
||||
local cfg="$MNT/etc/default/grub"
|
||||
@ -210,11 +189,10 @@ install_bootloader()
|
||||
|
||||
prerun_$BOOTLDR
|
||||
printf "\nInstalling and setting up $BOOTLDR in ${BMNTS[$SYS-$BOOTLDR]}\n\n"
|
||||
chrun "${BCMDS[$BOOTLDR]}" #2>$ERR
|
||||
chrun "${BCMDS[$BOOTLDR]}"
|
||||
echeck "${BCMDS[$BOOTLDR]}"
|
||||
|
||||
if [[ -d $MNT/hostrun ]]; then
|
||||
printf "\n"
|
||||
umount $MNT/hostrun/udev >/dev/null 2>&1
|
||||
umount $MNT/hostrun/lvm >/dev/null 2>&1
|
||||
rm -rf $MNT/hostrun >/dev/null 2>&1
|
||||
|
@ -153,7 +153,6 @@ cfg_menu()
|
||||
fi
|
||||
|
||||
select_mirrorcmd || return 1
|
||||
select_wm_or_de || return 1
|
||||
|
||||
CONFIG_DONE=true
|
||||
return 0
|
||||
@ -328,7 +327,7 @@ select_timezone()
|
||||
select_wm_or_de()
|
||||
{
|
||||
tput civis
|
||||
if ! INSTALL_WMS="$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
||||
if ! INSTALL_WMS="$(dialog --cr-wrap --stdout --no-cancel --backtitle "$BT" \
|
||||
--title " $_WMChoice " --checklist "$_WMChoiceBody\n" 0 0 0 \
|
||||
"i3-gaps" "A fork of i3 window manager with more features including gaps" off \
|
||||
"dwm" "A customized fork of dwm, with patches and modifications" off \
|
||||
@ -364,13 +363,18 @@ select_wm_or_de()
|
||||
LOGIN_WM="${WM_SESSIONS[$LOGIN_WM]}"
|
||||
fi
|
||||
fi
|
||||
yesno "$_WMLogin" "$_AutoLoginBody\n" && AUTOLOGIN=true || AUTOLOGIN=false
|
||||
|
||||
if yesno "$_WMLogin" "$_AutoLoginBody\n"; then
|
||||
AUTOLOGIN=true
|
||||
else
|
||||
AUTOLOGIN=false
|
||||
fi
|
||||
else
|
||||
AUTOLOGIN=false
|
||||
fi
|
||||
|
||||
# add packages to the main package list
|
||||
PACKAGES="$WM_PACKAGES"
|
||||
PACKAGES+=" ${WM_PACKAGES/^ /}"
|
||||
}
|
||||
|
||||
select_login()
|
||||
@ -380,10 +384,13 @@ select_login()
|
||||
"lightdm" "Lightweight display manager with a gtk greeter")"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ $LOGIN_TYPE == 'lightdm' ]]; then
|
||||
WM_PACKAGES+=" lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice"
|
||||
EDIT_FILES[11]="/etc/lightdm/lightdm.conf /etc/lightdm/lightdm-gtk-greeter.conf"
|
||||
else
|
||||
WM_PACKAGES="$(sed 's/ lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice//g' <<< "$WM_PACKAGES")"
|
||||
PACKAGES="$(sed 's/ lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice//g' <<< "$PACKAGES")"
|
||||
EDIT_FILES[11]="/home/$NEWUSER/.xinitrc /home/$NEWUSER/.xprofile"
|
||||
fi
|
||||
}
|
||||
@ -399,7 +406,7 @@ select_packages()
|
||||
fi
|
||||
|
||||
tput civis
|
||||
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
||||
SELECTED=$(dialog --cr-wrap --stdout --no-cancel --backtitle "$BT" \
|
||||
--title " $_Packages " --default-item $SELECTED \
|
||||
--menu "$_PackageMenu" 0 0 0 \
|
||||
"1" "Browsers" \
|
||||
@ -498,7 +505,7 @@ edit_configs()
|
||||
local exitstr="Exit & reboot"
|
||||
fi
|
||||
|
||||
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
||||
SELECTED=$(dialog --cr-wrap --no-cancel --stdout --backtitle "$BT" \
|
||||
--title " $_EditTitle " --default-item $SELECTED \
|
||||
--menu "$_EditBody" 0 0 0 \
|
||||
"1" "$exitstr" \
|
||||
|
@ -26,19 +26,15 @@ luks_open()
|
||||
if (( COUNT == 1 )); then
|
||||
LUKS_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
|
||||
infobox "$_LuksOpen" "${_OnlyOne}: $LUKS_PART\n" 1
|
||||
else
|
||||
tput civis
|
||||
if ! LUKS_PART="$(menubox "$_LuksOpen" "$_LuksMenuBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
fi
|
||||
elif ! LUKS_PART="$(menubox "$_LuksOpen" "$_LuksMenuBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
elif ! luks_pass "$_LuksOpen" "$LUKS_NAME"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# get password and name for encryption
|
||||
luks_pass "$_LuksOpen" "$LUKS_NAME" || return 1
|
||||
|
||||
infobox "$_LuksOpen" "$_LuksWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
infobox "$_LuksOpen" "$_LuksOpenWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
cryptsetup open --type luks $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
|
||||
echeck "cryptsetup open --type luks $LUKS_PART $LUKS_NAME"
|
||||
errshow "cryptsetup open --type luks $LUKS_PART $LUKS_NAME"
|
||||
|
||||
LUKS=' encrypted'
|
||||
luks_show
|
||||
@ -55,17 +51,32 @@ luks_pass()
|
||||
|
||||
tput cnorm
|
||||
local values
|
||||
if ! values="$(dialog --stdout --separator '~' --ok-label "Submit" --backtitle "$BT" \
|
||||
--title " $title " --insecure --mixedform "$_LuksOpenBody" 16 75 4 \
|
||||
"$_Name" 1 1 "$name" 1 $((${#_Name} + 2)) 71 0 0 \
|
||||
"$_Password" 2 1 "" 2 $((${#_Password} + 2)) 71 0 1 \
|
||||
"$_Password2" 3 1 "" 3 $((${#_Password2} + 2)) 71 0 1)"; then
|
||||
return 1
|
||||
fi
|
||||
if [[ $name == "" ]]; then
|
||||
if ! values="$(dialog --stdout --separator '~' --ok-label "Submit" \
|
||||
--backtitle "$BT" --title " $title " --insecure --mixedform \
|
||||
"\nEnter the password to decrypt $ROOT_PART.
|
||||
\nThis is needed to create a keyfile." 16 75 3 \
|
||||
"$_Password" 1 1 "" 1 $((${#_Password} + 2)) 71 0 1 \
|
||||
"$_Password2" 2 1 "" 2 $((${#_Password2} + 2)) 71 0 1)"; then
|
||||
return 1
|
||||
fi
|
||||
pass="$(awk -F'~' '{print $1}' <<< "$values")"
|
||||
pass2="$(awk -F'~' '{print $2}' <<< "$values")"
|
||||
else
|
||||
if ! values="$(dialog --stdout --separator '~' --ok-label "Submit" --backtitle "$BT" \
|
||||
--title " $title " --insecure --mixedform "$_LuksOpenBody" 16 75 4 \
|
||||
"$_Name" 1 1 "$name" 1 $((${#_Name} + 2)) 71 0 0 \
|
||||
"$_Password" 2 1 "" 2 $((${#_Password} + 2)) 71 0 1 \
|
||||
"$_Password2" 3 1 "" 3 $((${#_Password2} + 2)) 71 0 1)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
name="$(awk -F'~' '{print $1}' <<< "$values")"
|
||||
pass="$(awk -F'~' '{print $2}' <<< "$values")"
|
||||
pass2="$(awk -F'~' '{print $3}' <<< "$values")"
|
||||
name="$(awk -F'~' '{print $1}' <<< "$values")"
|
||||
pass="$(awk -F'~' '{print $2}' <<< "$values")"
|
||||
pass2="$(awk -F'~' '{print $3}' <<< "$values")"
|
||||
|
||||
LUKS_NAME="$name"
|
||||
fi
|
||||
|
||||
if [[ $pass == "" || "$pass" != "$pass2" ]]; then
|
||||
msgbox "$_ErrTitle" "$_PassErr\n$_TryAgain"
|
||||
@ -73,7 +84,6 @@ luks_pass()
|
||||
fi
|
||||
|
||||
LUKS_PASS="$pass"
|
||||
LUKS_NAME="$name"
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -82,40 +92,31 @@ luks_setup()
|
||||
LUKS_PART=""
|
||||
modprobe -a dm-mod dm_crypt
|
||||
umount_dir $MNT
|
||||
find_partitions 'part|lvm' || return 1
|
||||
tput civis
|
||||
|
||||
if [[ ! $ROOT_PART || $LVM ]]; then
|
||||
find_partitions 'part|lvm' || return 1
|
||||
[[ $BOOT_PART != "" ]] && decr_count "$BOOT_PART"
|
||||
|
||||
if (( COUNT == 1 )); then
|
||||
LUKS_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
|
||||
infobox "$_LuksEncrypt" "${_OnlyOne}: $LUKS_PART\n" 1
|
||||
else
|
||||
tput civis
|
||||
if ! LUKS_PART="$(menubox "$_LuksEncrypt" "$_LuksEncryptBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
infobox "$_PrepMount" "\nUsing root partition created earlier: $ROOT_PART\n" 1
|
||||
LUKS_PART="$ROOT_PART"
|
||||
if (( COUNT == 1 )); then
|
||||
LUKS_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
|
||||
infobox "$_LuksEncrypt" "${_OnlyOne}: $LUKS_PART\n" 1
|
||||
elif ! LUKS_PART="$(menubox "$_LuksEncrypt" "$_LuksEncryptBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
elif ! luks_pass "$_LuksEncrypt" "$LUKS_NAME"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# get password and name for encrypted device
|
||||
luks_pass "$_LuksEncrypt" "$LUKS_NAME" || return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
luks_default()
|
||||
{
|
||||
luks_setup || return 1
|
||||
infobox "$_LuksEncrypt" "$_LuksWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
infobox "$_LuksEncrypt" "$_LuksCreateWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
|
||||
cryptsetup -q luksFormat $LUKS_PART <<< "$LUKS_PASS" 2>$ERR
|
||||
echeck "cryptsetup -q luksFormat $LUKS_PART"
|
||||
errshow "cryptsetup -q luksFormat $LUKS_PART"
|
||||
|
||||
cryptsetup open $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
|
||||
echeck "cryptsetup open $LUKS_PART $LUKS_NAME"
|
||||
errshow "cryptsetup open $LUKS_PART $LUKS_NAME"
|
||||
|
||||
LUKS=' encrypted'
|
||||
luks_show
|
||||
@ -130,14 +131,13 @@ luks_keycmd()
|
||||
if ! cipher="$(getinput "$_PrepLUKS" "$_LuksCipherKey" "-s 512 -c aes-xts-plain64")"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
infobox "$_LuksEncryptAdv" "$_LuksWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
infobox "$_LuksEncryptAdv" "$_LuksCreateWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
|
||||
|
||||
cryptsetup -q $cipher luksFormat $LUKS_PART <<< "$LUKS_PASS" 2>$ERR
|
||||
echeck "cryptsetup -q $cipher luksFormat $LUKS_PART"
|
||||
errshow "cryptsetup -q $cipher luksFormat $LUKS_PART"
|
||||
|
||||
cryptsetup open $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
|
||||
echeck "cryptsetup open $LUKS_PART $LUKS_NAME"
|
||||
errshow "cryptsetup open $LUKS_PART $LUKS_NAME"
|
||||
|
||||
luks_show
|
||||
return 0
|
||||
@ -149,14 +149,15 @@ luks_show()
|
||||
{
|
||||
tput civis
|
||||
sleep 0.5
|
||||
msgbox "$_LuksEncrypt" "${_LuksEncryptSucc}\n$(lsblk $LUKS_PART -o NAME,MODEL,TYPE,FSTYPE,SIZE)"
|
||||
msgbox "$_LuksEncrypt" "${_LuksEncryptSucc}\n$(lsblk $LUKS_PART -o NAME,MODEL,TYPE,FSTYPE,SIZE)\n"
|
||||
}
|
||||
|
||||
luks_menu()
|
||||
{
|
||||
tput civis
|
||||
local choice
|
||||
choice="$(menubox "$_PrepLUKS" "${_LuksMenuBody}${_LuksMenuBody2}${_LuksMenuBody3}" 0 0 0 \
|
||||
choice="$(menubox "$_PrepLUKS" \
|
||||
"${_LuksMenuBody}${_LuksMenuBody2}${_LuksMenuBody3}" 0 0 0 \
|
||||
"$_LuksEncrypt" "cryptsetup -q luksFormat" \
|
||||
"$_LuksOpen" "cryptsetup open --type luks" \
|
||||
"$_LuksEncryptAdv" "cryptsetup -q -s -c luksFormat" \
|
||||
|
@ -48,7 +48,7 @@ lvm_detect()
|
||||
infobox "$_PrepLVM" "$_LvmDetBody" 0
|
||||
|
||||
modprobe dm-mod 2>$ERR
|
||||
echeck 'modprobe dm-mod'
|
||||
errshow 'modprobe dm-mod'
|
||||
|
||||
vgscan >/dev/null 2>&1
|
||||
vgchange -ay >/dev/null 2>&1
|
||||
@ -190,7 +190,7 @@ lvm_extra_lvs()
|
||||
|
||||
# create it
|
||||
lvcreate -L "$VOLUME_SIZE" "$VOLUME_GROUP" -n "$VOLUME_NAME" 2>$ERR
|
||||
echeck "lvcreate -L $VOLUME_SIZE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
errshow "lvcreate -L $VOLUME_SIZE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "$_Done LV $VOLUME_NAME ($VOLUME_SIZE) $_LvmPvDoneBody2."
|
||||
|
||||
((VOL_COUNT--)) # decrement the number of volumes chosen after each loop
|
||||
@ -237,7 +237,7 @@ lvm_create_group()
|
||||
|
||||
# create it
|
||||
vgcreate -f "$VOLUME_GROUP" "$GROUP_PARTS" >/dev/null 2>$ERR
|
||||
echeck "vgcreate -f $VOLUME_GROUP $GROUP_PARTS"
|
||||
errshow "vgcreate -f $VOLUME_GROUP $GROUP_PARTS"
|
||||
|
||||
GROUP_SIZE=$(vgdisplay "$VOLUME_GROUP" | awk '/VG Size/ {
|
||||
gsub(/[^0-9.]/, "")
|
||||
@ -281,17 +281,22 @@ lvm_create()
|
||||
# last or only logical volume
|
||||
lvm_volume_name "$_LvmLvNameBody1 $_LvmLvNameBody2 (${VOL_GROUP_MB}MB)" || return 1
|
||||
lvcreate -l +100%FREE "$VOLUME_GROUP" -n "$VOLUME_NAME" 2>$ERR
|
||||
echeck "lvcreate -l +100%FREE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
errshow "lvcreate -l +100%FREE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
|
||||
LVM=' logical volume'
|
||||
show_devices
|
||||
|
||||
tput civis
|
||||
sleep 0.5
|
||||
local msg="${_Done}$_LvmPvDoneBody1 $VOLUME_NAME ($VOLUME_SIZE) $_LvmPvDoneBody2."
|
||||
msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "$msg\n\n$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE $GROUP_PARTS)"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
lvm_del_vg()
|
||||
{
|
||||
if lvm_show_vg; then
|
||||
yesno "$_LvmDelVG" "$_LvmDelQ" && vgremove -f "$DEL_VG" >/dev/null 2>&1
|
||||
if lvm_show_vg && yesno "$_LvmDelVG" "$_LvmDelQ"; then
|
||||
vgremove -f "$DEL_VG" >/dev/null 2>&1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
@ -312,7 +317,7 @@ lvm_del_all()
|
||||
for i in $PHYSICAL_VOLUMES; do
|
||||
pvremove -f "$i" >/dev/null 2>&1
|
||||
done
|
||||
LVM=' logical volume'
|
||||
LVM=''
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
@ -30,10 +30,6 @@ mnt_menu()
|
||||
lvm_detect
|
||||
umount_dir $MNT
|
||||
find_partitions 'part|lvm|crypt' || return 1
|
||||
|
||||
# remove boot partition from dialog list if we auto partitioned one
|
||||
[[ $BOOT_PART != "" ]] && decr_count "$BOOT_PART"
|
||||
|
||||
select_root_partition || return 1
|
||||
|
||||
if [[ $BOOT_PART ]]; then
|
||||
@ -54,7 +50,12 @@ select_swap()
|
||||
{
|
||||
# Ask user to select partition or create swapfile
|
||||
tput civis
|
||||
if ! SWAP_PART="$(menubox "$_SelSwpSetup" "$_SelSwpBody" 0 0 0 "$_SelSwpNone" "-" "$_SelSwpFile" "$SYS_MEM" $PARTS)" || [[ $SWAP_PART == "$_SelSwpNone" ]]; then
|
||||
if ! SWAP_PART="$(menubox "$_SelSwpSetup" "$_SelSwpBody" 0 0 0 \
|
||||
"$_SelSwpNone" "-" \
|
||||
"$_SelSwpFile" "$SYS_MEM" \
|
||||
$PARTS)" ||
|
||||
[[ $SWAP_PART == "$_SelSwpNone" ]]
|
||||
then
|
||||
SWAP_PART=""
|
||||
return 0
|
||||
fi
|
||||
@ -72,7 +73,6 @@ select_swap()
|
||||
fi
|
||||
((i++))
|
||||
done
|
||||
|
||||
enable_swap "$MNT/swapfile"
|
||||
SWAP_PART="/swapfile"
|
||||
else
|
||||
@ -106,18 +106,16 @@ select_mount_opts()
|
||||
local opts="${FS_OPTS[$fs]}"
|
||||
|
||||
# check for ssd
|
||||
if [[ $LUKS && ! $LVM && $part == "$ROOT_PART" ]]; then
|
||||
ssd "$LUKS_PART" && opts=$(sed 's/discard - off/discard - on/' <<< "$opts")
|
||||
else
|
||||
ssd "$part" && opts=$(sed 's/discard - off/discard - on/' <<< "$opts")
|
||||
fi
|
||||
ssd "$part" >/dev/null 2>&1 && opts=$(sed 's/discard - off/discard - on/' <<< "$opts")
|
||||
|
||||
tput civis
|
||||
if ! MNT_OPTS="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $title " \
|
||||
--checklist "$_MntBody" 0 0 0 $opts | sed 's/ /,/g; $s/,$//')" || [[ $MNT_OPTS == "" ]]; then
|
||||
--checklist "$_MntBody" 0 0 0 $opts)" || [[ $MNT_OPTS == "" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
MNT_OPTS="$(sed 's/ /,/g; $s/,$//' <<< "$MNT_OPTS" )"
|
||||
|
||||
if ! yesno "$title" "$_MntConfBody $MNT_OPTS\n"; then
|
||||
select_mount_opts "$part" "$fs" || return 1
|
||||
fi
|
||||
@ -129,20 +127,13 @@ select_filesystem()
|
||||
{
|
||||
local part="$1"
|
||||
local fs cur_fs
|
||||
if [[ $LUKS && ! $LVM && $part == "$ROOT_PART" ]]; then
|
||||
cur_fs="$(lsblk -lno FSTYPE $LUKS_PART)"
|
||||
else
|
||||
cur_fs="$(lsblk -lno FSTYPE $part)"
|
||||
fi
|
||||
|
||||
|
||||
local title="\nSelect which filesystem you want to use for $part\n\nPartition Name: "
|
||||
cur_fs="$(lsblk -lno FSTYPE $part 2>/dev/null)"
|
||||
local msg="\nSelect which filesystem you want to use for $part\n\nPartition Name: "
|
||||
|
||||
tput civis
|
||||
|
||||
if [[ $cur_fs && $part != "$ROOT_PART" ]]; then
|
||||
fs="$(menubox "$_FSTitle: $part" \
|
||||
"${title}${part}\nExisting Filesystem: ${cur_fs}$_FSBody" 0 0 0 \
|
||||
"${msg}${part}\nExisting Filesystem: ${cur_fs}$_FSBody" 0 0 0 \
|
||||
"$_Skip" "-" \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
@ -156,7 +147,7 @@ select_filesystem()
|
||||
"xfs" "${FS_CMDS[xfs]}")"
|
||||
else
|
||||
fs="$(menubox "$_FSTitle: $part" \
|
||||
"${title}${part}$_FSBody" 0 0 0 \
|
||||
"${msg}${part}$_FSBody" 0 0 0 \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
"ext2" "${FS_CMDS[ext2]}" \
|
||||
@ -223,30 +214,12 @@ select_boot_partition()
|
||||
|
||||
select_root_partition()
|
||||
{
|
||||
# if we used LUKS and no LVM or LUKS+LVM remove the relevant partition labels from the list
|
||||
if [[ $LUKS && ! $LVM ]]; then
|
||||
ROOT_PART="/dev/mapper/$LUKS_NAME"
|
||||
decr_count "$LUKS_PART"
|
||||
elif [[ $LVM ]]; then
|
||||
if [[ $LUKS ]]; then
|
||||
decr_count "$LUKS_PART"
|
||||
fi
|
||||
for part in $(printf "%s" "$GROUP_PARTS"); do
|
||||
decr_count "$part"
|
||||
done
|
||||
ROOT_PART=""
|
||||
fi
|
||||
|
||||
if [[ $COUNT -eq 1 && ! $ROOT_PART ]]; then
|
||||
tput civis
|
||||
if [[ $COUNT -eq 1 ]]; then
|
||||
ROOT_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
|
||||
infobox "$_PrepMount" "$_OnlyOne for root (/): $ROOT_PART\n" 1
|
||||
elif [[ ! $ROOT_PART || $LVM ]]; then
|
||||
tput civis
|
||||
if ! ROOT_PART="$(menubox "$_PrepMount" "$_SelRootBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
infobox "$_PrepMount" "\nUsing${LUKS} root partition: $ROOT_PART\n" 1
|
||||
elif ! ROOT_PART="$(menubox "$_PrepMount" "$_SelRootBody" 0 0 0 $PARTS)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
select_filesystem "$ROOT_PART" || { ROOT_PART=""; return 1; }
|
||||
|
@ -25,9 +25,9 @@ declare -Agr FS_OPTS=([vfat]="" [ntfs]="" [ext2]="" [ext3]=""
|
||||
|
||||
format()
|
||||
{
|
||||
infobox "$_FSTitle" "\nFormatting: $1\n\nCommand: ${FS_CMDS[$2]}\n" 0
|
||||
infobox "$_FSTitle" "\nRunning: ${FS_CMDS[$2]} $1\n" 0
|
||||
${FS_CMDS[$2]} $1 >/dev/null 2>$ERR
|
||||
echeck "${FS_CMDS[$2]} $1"
|
||||
errshow "${FS_CMDS[$2]} $1"
|
||||
}
|
||||
|
||||
partition()
|
||||
@ -42,10 +42,25 @@ partition()
|
||||
|
||||
tput civis
|
||||
local choice
|
||||
if ! choice="$(menubox "$_PartTitle" "$_PartBody" 0 0 0 "$_PartShowTree" "-" "$_PartAuto" "-" \
|
||||
$({ [[ $DISPLAY ]] && hash gparted >/dev/null 2>&1; } && printf "gparted -") \
|
||||
"cfdisk" "-" "parted" "-" "$_PartWipe" "-")"; then
|
||||
return 1
|
||||
if [[ $DISPLAY ]] && hash gparted >/dev/null 2>&1; then
|
||||
if ! choice="$(menubox "$_PartTitle" "$_PartBody" 0 0 0 \
|
||||
"$_PartShowTree" "-" \
|
||||
"$_PartAuto" "-" \
|
||||
"gparted -" \
|
||||
"cfdisk" "-" \
|
||||
"parted" "-" \
|
||||
"$_PartWipe" "-")"; then
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if ! choice="$(menubox "$_PartTitle" "$_PartBody" 0 0 0 \
|
||||
"$_PartShowTree" "-" \
|
||||
"$_PartAuto" "-" \
|
||||
"cfdisk" "-" \
|
||||
"parted" "-" \
|
||||
"$_PartWipe" "-")"; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
tput civis
|
||||
@ -59,7 +74,7 @@ partition()
|
||||
partition $device
|
||||
else
|
||||
# if auto_partition fails we need to empty the partition variables
|
||||
auto_partition $device || { ROOT_PART=""; BOOT_PART=""; BOOT_DEVICE=""; return 1; }
|
||||
auto_partition $device || return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@ -78,14 +93,14 @@ enable_swap()
|
||||
{
|
||||
if [[ $1 == "$MNT/swapfile" && $SWAP_SIZE ]]; then
|
||||
fallocate -l $SWAP_SIZE $1 2>$ERR
|
||||
echeck "fallocate -l $SWAP_SIZE $1"
|
||||
errshow "fallocate -l $SWAP_SIZE $1"
|
||||
chmod 600 $1 2>$ERR
|
||||
echeck "chmod 600 $1"
|
||||
errshow "chmod 600 $1"
|
||||
fi
|
||||
mkswap $1 >/dev/null 2>$ERR
|
||||
echeck "mkswap $1"
|
||||
errshow "mkswap $1"
|
||||
swapon $1 >/dev/null 2>$ERR
|
||||
echeck "swapon $1"
|
||||
errshow "swapon $1"
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -95,10 +110,10 @@ device_tree()
|
||||
local msg
|
||||
if [[ $IGNORE_DEV != "" ]]; then
|
||||
msg="$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE,MOUNTPOINT |
|
||||
awk "!/$IGNORE_DEV/"' && /disk|part|lvm|crypt|NAME/ {print $0}')"
|
||||
awk "!/$IGNORE_DEV/"' && /disk|part|lvm|crypt|NAME/')"
|
||||
else
|
||||
msg="$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE,MOUNTPOINT |
|
||||
awk '/disk|part|lvm|crypt|NAME/ {print $0}')"
|
||||
awk '/disk|part|lvm|crypt|NAME/')"
|
||||
fi
|
||||
msgbox "$_PrepShowDev" "$msg"
|
||||
}
|
||||
@ -144,9 +159,11 @@ confirm_mount()
|
||||
fi
|
||||
|
||||
if [[ $(mount) == *"$mount"* ]]; then
|
||||
infobox "$_MntTitle" "$_MntSucc\n$msg\n" 1; decr_count "$part"
|
||||
infobox "$_MntTitle" "$_MntSucc\n$msg\n" 1
|
||||
decr_count "$part"
|
||||
else
|
||||
infobox "$_MntTitle" "$_MntFail\n$msg\n" 1; return 1
|
||||
infobox "$_MntTitle" "$_MntFail\n$msg\n" 1
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
@ -247,19 +264,18 @@ auto_partition()
|
||||
|
||||
sleep 0.1
|
||||
BOOT_DEVICE="$device"
|
||||
BOOT_PART=$(lsblk -lno NAME,TYPE $device | awk 'NR == 2 {print "/dev/"$1}')
|
||||
bp=$(lsblk -lno NAME,TYPE $device | awk 'NR == 2 {print "/dev/"$1}')
|
||||
|
||||
if [[ $SYS == "BIOS" ]]; then
|
||||
mkfs.ext4 -q $BOOT_PART >/dev/null 2>&1
|
||||
mkfs.ext4 -q $bp >/dev/null 2>&1
|
||||
else
|
||||
mkfs.vfat -F32 $BOOT_PART >/dev/null 2>&1
|
||||
mkfs.vfat -F32 $bp >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
infobox "$_PrepParts" "\nCreating a $size ext4 root partition.\n" 0
|
||||
parted -s $device mkpart primary ext4 513MiB 100% >/dev/null 2>&1
|
||||
sleep 0.1
|
||||
ROOT_PART=$(lsblk -lno NAME,TYPE $device | awk 'NR == 3 {print "/dev/"$1}')
|
||||
mkfs.ext4 -q $ROOT_PART >/dev/null 2>&1
|
||||
mkfs.ext4 -q $(lsblk -lno NAME,TYPE $device | awk 'NR == 3 {print "/dev/"$1}') >/dev/null 2>&1
|
||||
|
||||
tput civis; sleep 0.5
|
||||
msgbox "$_PrepParts" "\nAuto partitioning complete.\n\n$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE $device)"
|
||||
@ -270,15 +286,14 @@ mount_partition()
|
||||
local part="$1"
|
||||
local mountp="${MNT}$2"
|
||||
local fs="$(lsblk -lno FSTYPE $part)"
|
||||
|
||||
mkdir -p "$mountp"
|
||||
|
||||
if [[ ${FS_OPTS[$fs]} != "" && $part != "$BOOT_PART" ]] && select_mount_opts "$part" "$fs"; then
|
||||
if [[ ${FS_OPTS[$fs]} && $part != "$BOOT_PART" ]] && select_mount_opts "$part" "$fs"; then
|
||||
mount -o $MNT_OPTS $part "$mountp" 2>$ERR
|
||||
echeck "mount -o $MNT_OPTS $part $mountp"
|
||||
errshow "mount -o $MNT_OPTS $part $mountp"
|
||||
else
|
||||
mount $part "$mountp" 2>$ERR
|
||||
echeck "mount $part $mountp"
|
||||
errshow "mount $part $mountp"
|
||||
fi
|
||||
|
||||
confirm_mount $part "$mountp" || return 1
|
||||
@ -336,5 +351,26 @@ find_partitions()
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
||||
}
|
||||
|
||||
setup_boot_device()
|
||||
{
|
||||
infobox "$_PrepMount" "\nSetting device flags for: $BOOT_PART\n" 1
|
||||
|
||||
if [[ $BOOT_PART = /dev/nvme* ]]; then
|
||||
BOOT_DEVICE="${BOOT_PART%p[1-9]}"
|
||||
else
|
||||
BOOT_DEVICE="${BOOT_PART%[1-9]}"
|
||||
fi
|
||||
|
||||
BOOT_PART_NUM="${BOOT_PART: -1}"
|
||||
|
||||
if [[ $SYS == 'UEFI' ]]; then
|
||||
parted -s $BOOT_DEVICE set $BOOT_PART_NUM esp on >/dev/null 2>&1
|
||||
else
|
||||
parted -s $BOOT_DEVICE set $BOOT_PART_NUM boot on >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -203,6 +203,23 @@ preinstall_checks()
|
||||
return 0
|
||||
}
|
||||
|
||||
errshow()
|
||||
{
|
||||
local last_exit_code=$?
|
||||
if (( last_exit_code == 0 )); then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local err
|
||||
err="$(sed 's/[^[:print:]]//g; s/\[[0-9\;:]*\?m//g; s/==> //g; s/] ERROR:/]\nERROR:/g' "$ERR")"
|
||||
|
||||
if [[ $err != "" ]]; then
|
||||
msgbox "$_ErrTitle" "\nERROR: $err"
|
||||
else
|
||||
msgbox "$_ErrTitle" "\nThe command exited abnormally: $1\n\nWith the no error message.\n"
|
||||
fi
|
||||
}
|
||||
|
||||
echeck()
|
||||
{
|
||||
local last_exit_code=$?
|
||||
@ -214,7 +231,7 @@ echeck()
|
||||
err="$(sed 's/[^[:print:]]//g; s/\[[0-9\;:]*\?m//g; s/==> //g; s/] ERROR:/]\nERROR:/g' "$ERR")"
|
||||
|
||||
if [[ $err != "" ]]; then
|
||||
msgbox "$_ErrTitle" "\nThe command exited abnormally: $1\n\nWith the following error message:\n\n$err"
|
||||
msgbox "$_ErrTitle" "\nERROR: $err"
|
||||
else
|
||||
msgbox "$_ErrTitle" "\nThe command exited abnormally: $1\n\nWith the no error message.\n"
|
||||
fi
|
||||
@ -258,7 +275,7 @@ menubox()
|
||||
local n=$5
|
||||
shift 5
|
||||
local response
|
||||
if ! response="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $title " --menu "$body" $h $w $n "$@")"; then
|
||||
if ! response="$(dialog --cr-wrap --no-cancel --stdout --backtitle "$BT" --title " $title " --menu "$body" $h $w $n "$@")"; then
|
||||
return 1
|
||||
fi
|
||||
printf "%s" "$response"
|
||||
@ -273,7 +290,7 @@ checkbox()
|
||||
local n=$5
|
||||
shift 5
|
||||
local response
|
||||
if ! response="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $title " --checklist "$body" $h $w $n "$@")"; then
|
||||
if ! response="$(dialog --cr-wrap --no-cancel --stdout --backtitle "$BT" --title " $title " --checklist "$body" $h $w $n "$@")"; then
|
||||
return 1
|
||||
fi
|
||||
printf "%s" "$response"
|
||||
@ -282,7 +299,7 @@ checkbox()
|
||||
getinput()
|
||||
{
|
||||
local answer
|
||||
if ! answer="$(dialog --cr-wrap --max-input 63 --stdout --no-cancel --backtitle "$BT" --title " $1 " --inputbox "$2" 0 0 "$3")" || [[ $answer == '' ]]; then
|
||||
if ! answer="$(dialog --cr-wrap --max-input 63 --stdout --backtitle "$BT" --title " $1 " --inputbox "$2" 0 0 "$3")" || [[ $answer == '' ]]; then
|
||||
return 1
|
||||
fi
|
||||
printf "%s" "$answer"
|
||||
@ -299,7 +316,6 @@ infobox()
|
||||
yesno()
|
||||
{
|
||||
# usage: yesno <title> <text> [<yes_label> <no_label> [<no>]]
|
||||
# three options: one --default-no and custom labels, one just custom labels, and one basic.
|
||||
tput civis
|
||||
if [[ $# -eq 5 && $5 == "no" ]]; then
|
||||
dialog --cr-wrap --backtitle "$BT" --defaultno --title " $1 " \
|
||||
|
Reference in New Issue
Block a user