You've already forked al-installer
Update filesystem selection to use looping instead of recursion
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
# Some ideas and code reworked from other resources
|
||||
# AIF, Cnichi, Calamares, Arch Wiki.. Credit where credit is due
|
||||
|
||||
VER="1.8.42" # version
|
||||
VER="1.8.44" # version
|
||||
DIST="ArchLabs" # distributor
|
||||
MNT="/mnt" # install mountpoint
|
||||
|
||||
@ -20,8 +20,8 @@ ROOT_PART="" # root partition
|
||||
BOOT_PART="" # boot partition
|
||||
BOOT_DEVICE="" # device used for BIOS grub install
|
||||
BOOTLDR="" # bootloader selected
|
||||
EXTRA_MNT="" # holder for additional partitions while mounting
|
||||
EXTRA_MNTS="" # when an extra partition is mounted append it's info
|
||||
EXMNT="" # holder for additional partitions while mounting
|
||||
EXMNTS="" # when an extra partition is mounted append it's info
|
||||
SWAP_PART="" # swap partition or file path
|
||||
SWAP_SIZE="" # when using a swapfile use this size
|
||||
NEWUSER="" # username for the primary user
|
||||
@ -30,7 +30,7 @@ ROOT_PASS="" # root password
|
||||
LOGIN_WM="" # default login session
|
||||
LOGIN_TYPE="" # login manager can be lightdm or xinit
|
||||
INSTALL_WMS="" # space separated list of chosen wm/de
|
||||
KERNEL="linux" # kernel can be linux or linux-lts
|
||||
KERNEL="linux" # can be linux, linux-lts, linux-zen, or linux-hardened
|
||||
MYSHELL="" # login shell for root and the primary user
|
||||
PACKAGES="" # list of all packages to install including WM_PACKAGES
|
||||
USER_PKGS="" # packages selected by the user during install
|
||||
@ -57,7 +57,7 @@ CONFIG_DONE=false # basic configuration is finished
|
||||
BROADCOM_WL=false # fixes for broadcom cards eg. BCM4352
|
||||
CHECKED_NET=false # have we checked the network connection already
|
||||
|
||||
AUTO_ROOT_PART="" # values from auto partition
|
||||
AUTO_ROOT_PART="" # values from auto partition
|
||||
AUTO_BOOT_PART=""
|
||||
|
||||
# sane baseline
|
||||
@ -67,7 +67,7 @@ BASE_PKGS+="playerctl ffmpeg gstreamer libmad libmatroska gst-libav gst-plugins-
|
||||
|
||||
# sane extras for window managers
|
||||
WM_BASE_PKGS="arandr archlabs-networkmanager-dmenu xdg-user-dirs nitrogen polkit-gnome volumeicon xclip exo "
|
||||
WM_BASE_PKGS+="xdotool compton gnome-keyring dunst feh gsimplecal xfce4-power-manager xfce4-settings laptop-detect"
|
||||
WM_BASE_PKGS+="xdotool compton wmctrl gnome-keyring dunst feh gsimplecal xfce4-power-manager xfce4-settings laptop-detect"
|
||||
|
||||
SEL=0 # currently selected menu item
|
||||
ERR="/tmp/errlog" # error log used internally
|
||||
@ -109,7 +109,7 @@ CMAPS="$(find /usr/share/kbd/keymaps -name '*.map.gz' | awk '{
|
||||
# command used to install each bootloader
|
||||
declare -A BCMDS=(
|
||||
[grub]="grub-install --recheck --force"
|
||||
[syslinux]="syslinux-install_update -iam"
|
||||
[syslinux]="syslinux-install_update -i -a -m"
|
||||
[systemd-boot]="bootctl --path=/boot install"
|
||||
)
|
||||
|
||||
@ -273,54 +273,56 @@ show_cfg()
|
||||
|
||||
---------- PARTITION CONFIGURATION ------------
|
||||
|
||||
Root: ${ROOT_PART:-None}
|
||||
Boot: ${BOOT_PART:-${BOOT_DEVICE:-None}}
|
||||
Root: ${ROOT_PART:-none}
|
||||
Boot: ${BOOT_PART:-${BOOT_DEVICE:-none}}
|
||||
|
||||
Swap: ${SWAP_PART:-None}
|
||||
Size: ${SWAP_SIZE:-None}
|
||||
Swap: ${SWAP_PART:-none}
|
||||
Size: ${SWAP_SIZE:-none}
|
||||
|
||||
LVM: ${LVM:-None}
|
||||
LUKS: ${LUKS:-None}
|
||||
LVM: ${LVM:-none}
|
||||
LUKS: ${LUKS:-none}
|
||||
|
||||
Extra Mounts: ${EXTRA_MNTS:-${EXTRA_MNT:-None}}
|
||||
Mkinit Hooks: ${HOOKS:-None}
|
||||
Extra Mounts: ${EXMNTS:-${EXMNT:-none}}
|
||||
Mkinit Hooks: ${HOOKS:-none}
|
||||
|
||||
|
||||
---------- BOOTLOADER CONFIGURATION -----------
|
||||
|
||||
Bootloader: ${BOOTLDR:-None}
|
||||
Mountpoint: ${mnt:-None}
|
||||
Command: ${cmd:-None}
|
||||
Bootloader: ${BOOTLDR:-none}
|
||||
Mountpoint: ${mnt:-none}
|
||||
Command: ${cmd:-none}
|
||||
|
||||
|
||||
------------ SYSTEM CONFIGURATION -------------
|
||||
|
||||
Locale: ${LOCALE:-None}
|
||||
Keymap: ${KEYMAP:-None}
|
||||
Hostname: ${HOSTNAME:-None}
|
||||
Timezone: ${ZONE:-None}/${SUBZONE:-None}
|
||||
Locale: ${LOCALE:-none}
|
||||
Keymap: ${KEYMAP:-none}
|
||||
Hostname: ${HOSTNAME:-none}
|
||||
Timezone: ${ZONE:-none}/${SUBZONE:-none}
|
||||
|
||||
|
||||
------------ USER CONFIGURATION --------------
|
||||
|
||||
User: ${NEWUSER:-None}
|
||||
Shell: ${MYSHELL:-None}
|
||||
Session: ${LOGIN_WM:-None}
|
||||
Autologin: ${AUTOLOGIN:-None}
|
||||
Login Method: ${LOGIN_TYPE:-None}
|
||||
User: ${NEWUSER:-none}
|
||||
Shell: ${MYSHELL:-none}
|
||||
Session: ${LOGIN_WM:-none}
|
||||
Autologin: ${AUTOLOGIN:-none}
|
||||
Login Method: ${LOGIN_TYPE:-none}
|
||||
|
||||
|
||||
------------ PACKAGES AND MIRRORS -------------
|
||||
|
||||
Kernel: ${KERNEL:-None}
|
||||
Sessions: ${INSTALL_WMS:-None}
|
||||
Mirrors: ${MIRROR_CMD:-None}
|
||||
Packages: $(print4 "${pkgs:-None}")
|
||||
Kernel: ${KERNEL:-none}
|
||||
Sessions: ${INSTALL_WMS:-none}
|
||||
Mirrors: ${MIRROR_CMD:-none}
|
||||
Packages: $(print4 "${pkgs:-none}")
|
||||
"
|
||||
}
|
||||
|
||||
cfg_menu()
|
||||
{
|
||||
local err=0
|
||||
|
||||
tput civis
|
||||
if ! MYSHELL="$(menubox "$_ShellTitle" "$_ShellBody" '/usr/bin/zsh' '-' '/bin/bash' '-' '/usr/bin/mksh' '-')"; then
|
||||
return 1
|
||||
@ -335,9 +337,13 @@ cfg_menu()
|
||||
return 1
|
||||
fi
|
||||
select_timezone || return 1
|
||||
if ! KERNEL="$(menubox "$_KernelTitle" "$_KernelBody" 'linux' '-' 'linux-lts' '-')"; then
|
||||
return 1
|
||||
fi
|
||||
KERNEL="$(menubox "$_KernelTitle" "$_KernelBody" \
|
||||
'linux' 'Vanilla Linux kernel and modules, with a few patches applied.' \
|
||||
'linux-lts' 'Long-term support (LTS) Linux kernel and modules.' \
|
||||
'linux-zen' 'A collaborative effort of kernel hackers to provide the best Linux kernel for everyday systems' \
|
||||
'linux-hardened' 'A security-focused Linux kernel with hardening patches to mitigate kernel and userspace exploits')"
|
||||
err=$?
|
||||
(( err == 0 )) || return 1
|
||||
select_mirrorcmd || return 1
|
||||
CONFIG_DONE=true
|
||||
return 0
|
||||
@ -887,9 +893,9 @@ partition_menu()
|
||||
local root_size msg ret table boot_fs
|
||||
root_size=$(lsblk -lno SIZE "$device" | awk 'NR == 1 {
|
||||
if ($1 ~ "G") {
|
||||
sub(/G/, ""); print ($1 * 1000 - 512) / 1000"G"
|
||||
sub(/G/, ""); print ($1 * 1000 - 512) / 1000 "G"
|
||||
} else {
|
||||
sub(/M/, ""); print ($1 - 512)"M"
|
||||
sub(/M/, ""); print ($1 - 512) "M"
|
||||
}
|
||||
}')
|
||||
|
||||
@ -899,7 +905,7 @@ partition_menu()
|
||||
msg="$_PartBody2"; table="gpt"; boot_fs="fat32"
|
||||
fi
|
||||
|
||||
if yesno "$_PrepParts" "$_PartBody1 $device $msg ($size)$_PartBody3"; then
|
||||
if yesno "$_PrepParts" "$_PartBody1 $device $msg ($root_size)$_PartBody3"; then
|
||||
auto_partition "$device" "$table" "$boot_fs" "$root_size" || return 1
|
||||
else
|
||||
partition_menu "$device"
|
||||
@ -916,15 +922,6 @@ format_as()
|
||||
errshow "${FS_CMDS[$2]} $1"
|
||||
}
|
||||
|
||||
decr_count()
|
||||
{
|
||||
# remove a partition from the dialog list and decrement the number partitions left
|
||||
local p="$1"
|
||||
PARTS="$(sed "s~${p} [0-9]*[G-M]~~; s~${p} [0-9]*\.[0-9]*[G-M]~~" <<< "$PARTS")"
|
||||
(( COUNT > 0 )) && (( COUNT-- ))
|
||||
return 0
|
||||
}
|
||||
|
||||
enable_swap()
|
||||
{
|
||||
if [[ $1 == "$MNT/swapfile" && $SWAP_SIZE ]]; then
|
||||
@ -983,12 +980,12 @@ confirm_mount()
|
||||
[[ $mount == "$MNT" ]] && local m="/ (root)" || local m="${mount#$MNT}"
|
||||
if [[ $(mount) == *"$mount"* ]]; then
|
||||
infobox "$_MntTitle" "$_MntSucc\nPartition: $part\nMountpoint: $m\n" 1
|
||||
decr_count "$part"
|
||||
PARTS="$(sed "s~${part} [0-9]*[G-M]~~; s~${part} [0-9]*\.[0-9]*[G-M]~~" <<< "$PARTS")"
|
||||
(( COUNT > 0 )) && (( COUNT-- ))
|
||||
else
|
||||
infobox "$_MntTitle" "$_MntFail\n$msg\n" 1
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -1203,7 +1200,8 @@ select_swap()
|
||||
SWAP_PART="/swapfile"
|
||||
else
|
||||
enable_swap "$SWAP_PART"
|
||||
decr_count "$SWAP_PART"
|
||||
PARTS="$(sed "s~${SWAP_PART} [0-9]*[G-M]~~; s~${SWAP_PART} [0-9]*\.[0-9]*[G-M]~~" <<< "$PARTS")"
|
||||
(( COUNT > 0 )) && (( COUNT-- ))
|
||||
SWAP_SIZE="$(lsblk -lno SIZE $SWAP_PART)"
|
||||
fi
|
||||
return 0
|
||||
@ -1211,72 +1209,92 @@ select_swap()
|
||||
|
||||
select_mountpoint()
|
||||
{
|
||||
local err=0
|
||||
tput cnorm
|
||||
EXTRA_MNT="$(getinput "$_PrepMount $part" "$_ExtPartBody1" "/" nolimit)" || return 1
|
||||
if [[ ${EXTRA_MNT:0:1} != "/" || ${#EXTRA_MNT} -le 1 || $EXTRA_MNT =~ \ |\' || $EXTRA_MNTS == *"$EXTRA_MNT"* ]]; then
|
||||
msgbox "$_ErrTitle" "$_ExtErrBody"
|
||||
select_mountpoint || return 1
|
||||
fi
|
||||
return 0
|
||||
while true; do
|
||||
EXMNT="$(getinput "$_PrepMount $part" "$_ExtPartBody1" "/" nolimit)"
|
||||
err=$?
|
||||
(( err == 0 )) || break
|
||||
if [[ ${EXMNT:0:1} != "/" || ${#EXMNT} -le 1 || $EXMNT =~ \ |\' || $EXMNTS == *"$EXMNT"* ]]; then
|
||||
msgbox "$_ErrTitle" "$_ExtErrBody"
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
return $err
|
||||
}
|
||||
|
||||
select_mount_opts()
|
||||
{
|
||||
local part="$1"
|
||||
local fs="$2"
|
||||
local part="$1" fs="$2" err=0
|
||||
local title="${fs^} Mount Options"
|
||||
local opts="${FS_OPTS[$fs]}"
|
||||
|
||||
tput civis
|
||||
is_ssd "$part" >/dev/null 2>&1 && opts=$(sed 's/discard - off/discard - on/' <<< "$opts")
|
||||
MNT_OPTS="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $title " --checklist "$_MntBody" 0 0 0 $opts)"
|
||||
[[ $MNT_OPTS ]] && MNT_OPTS="$(sed 's/ /,/g; $s/,$//' <<< "$MNT_OPTS" )" || return 1
|
||||
yesno "$title" "$_MntConfBody $MNT_OPTS\n" || { select_mount_opts "$part" "$fs" || return 1; }
|
||||
if is_ssd "$part" >/dev/null 2>&1; then
|
||||
opts=$(sed 's/discard - off/discard - on/' <<< "$opts")
|
||||
fi
|
||||
|
||||
return 0
|
||||
tput civis
|
||||
while true; do
|
||||
MNT_OPTS="$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
||||
--title " $title " --checklist "$_MntBody" 0 0 0 $opts)"
|
||||
if [[ $MNT_OPTS ]]; then
|
||||
MNT_OPTS="$(sed 's/ /,/g; $s/,$//' <<< "$MNT_OPTS" )"
|
||||
yesno "$title" "$_MntConfBody $MNT_OPTS\n" && break
|
||||
else
|
||||
err=1; break
|
||||
fi
|
||||
done
|
||||
|
||||
return $err
|
||||
}
|
||||
|
||||
select_filesystem()
|
||||
{
|
||||
local part="$1"
|
||||
local fs cur_fs
|
||||
local part="$1" fs="" cur_fs="" err=0
|
||||
cur_fs="$(lsblk -lno FSTYPE "$part" 2>/dev/null)"
|
||||
local msg="\nSelect which filesystem to use for: $part\n\nCurrent: ${cur_fs:-None}\nDefault: ext4"
|
||||
local msg="\nSelect which filesystem to use for: $part\n\nCurrent: ${cur_fs:-none}\nDefault: ext4"
|
||||
|
||||
[[ $part == $ROOT_PART && $ROOT_PART == $AUTO_ROOT_PART && $LUKS == "" && $LVM == "" ]] && return 0
|
||||
tput civis
|
||||
if [[ $cur_fs && $part != "$ROOT_PART" ]]; then
|
||||
fs="$(menubox "$_FSTitle: $part" "$msg" \
|
||||
"$_Skip" "-" \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
"ext2" "${FS_CMDS[ext2]}" \
|
||||
"vfat" "${FS_CMDS[vfat]}" \
|
||||
"ntfs" "${FS_CMDS[ntfs]}" \
|
||||
"f2fs" "${FS_CMDS[f2fs]}" \
|
||||
"jfs" "${FS_CMDS[jfs]}" \
|
||||
"xfs" "${FS_CMDS[xfs]}"\
|
||||
"nilfs2" "${FS_CMDS[nilfs2]}" \
|
||||
"reiserfs" "${FS_CMDS[reiserfs]}")"
|
||||
[[ $fs == "$_Skip" ]] && return 0
|
||||
else
|
||||
fs="$(menubox "$_FSTitle: $part" "$msg" \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
"ext2" "${FS_CMDS[ext2]}" \
|
||||
"ntfs" "${FS_CMDS[ntfs]}" \
|
||||
"f2fs" "${FS_CMDS[f2fs]}" \
|
||||
"jfs" "${FS_CMDS[jfs]}" \
|
||||
"xfs" "${FS_CMDS[xfs]}" \
|
||||
"nilfs2" "${FS_CMDS[nilfs2]}" \
|
||||
"reiserfs" "${FS_CMDS[reiserfs]}")"
|
||||
fi
|
||||
[[ $fs ]] || return 1
|
||||
if yesno "$_FSTitle" "\nFormat $part as $fs?\n"; then
|
||||
format_as "$part" "$fs" || return 1
|
||||
else
|
||||
select_filesystem "$part" || return 1
|
||||
fi
|
||||
return 0
|
||||
|
||||
while true; do
|
||||
tput civis
|
||||
if [[ $cur_fs && $part != "$ROOT_PART" ]]; then
|
||||
fs="$(menubox "$_FSTitle: $part" "$msg" \
|
||||
"$_Skip" "-" \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
"ext2" "${FS_CMDS[ext2]}" \
|
||||
"vfat" "${FS_CMDS[vfat]}" \
|
||||
"ntfs" "${FS_CMDS[ntfs]}" \
|
||||
"f2fs" "${FS_CMDS[f2fs]}" \
|
||||
"jfs" "${FS_CMDS[jfs]}" \
|
||||
"xfs" "${FS_CMDS[xfs]}"\
|
||||
"nilfs2" "${FS_CMDS[nilfs2]}" \
|
||||
"reiserfs" "${FS_CMDS[reiserfs]}")"
|
||||
|
||||
[[ $fs == "$_Skip" ]] && break
|
||||
else
|
||||
fs="$(menubox "$_FSTitle: $part" "$msg" \
|
||||
"ext4" "${FS_CMDS[ext4]}" \
|
||||
"ext3" "${FS_CMDS[ext3]}" \
|
||||
"ext2" "${FS_CMDS[ext2]}" \
|
||||
"ntfs" "${FS_CMDS[ntfs]}" \
|
||||
"f2fs" "${FS_CMDS[f2fs]}" \
|
||||
"jfs" "${FS_CMDS[jfs]}" \
|
||||
"xfs" "${FS_CMDS[xfs]}" \
|
||||
"nilfs2" "${FS_CMDS[nilfs2]}" \
|
||||
"reiserfs" "${FS_CMDS[reiserfs]}")"
|
||||
|
||||
fi
|
||||
|
||||
[[ $fs ]] || { err=1; break; }
|
||||
|
||||
yesno "$_FSTitle" "\nFormat $part as $fs?\n" && break
|
||||
done
|
||||
|
||||
(( err == 0 )) || return $err
|
||||
[[ $fs == "$_Skip" ]] || format_as "$part" "$fs"
|
||||
}
|
||||
|
||||
select_efi_partition()
|
||||
@ -1311,7 +1329,7 @@ select_efi_partition()
|
||||
select_boot_partition()
|
||||
{
|
||||
tput civis
|
||||
if [[ $AUTO_BOOT_PART == "$BOOT_PART" ]]; then
|
||||
if [[ $AUTO_BOOT_PART && $AUTO_BOOT_PART == "$BOOT_PART" ]]; then
|
||||
BOOT_PART="$AUTO_BOOT_PART"
|
||||
return 0 # were done here
|
||||
else
|
||||
@ -1353,13 +1371,13 @@ select_extra_partitions()
|
||||
|
||||
while (( COUNT > 0 )); do
|
||||
tput civis
|
||||
part="$(menubox "$_PrepMount " "$_ExtPartBody" "$_Done" "Return to the last menu" $PARTS)"
|
||||
part="$(menubox "$_PrepMount " "$_ExtPartBody" "$_Done" "Return to the main menu" $PARTS)"
|
||||
|
||||
if [[ $part == "$_Done" || $part == "" ]]; then
|
||||
break
|
||||
elif select_filesystem "$part" && select_mountpoint && mount_partition "$part" "$EXTRA_MNT"; then
|
||||
EXTRA_MNTS="$EXTRA_MNTS $part: $EXTRA_MNT"
|
||||
[[ $EXTRA_MNT == '/usr' && $HOOKS != *usr* ]] && HOOKS="usr $HOOKS"
|
||||
elif select_filesystem "$part" && select_mountpoint && mount_partition "$part" "$EXMNT"; then
|
||||
EXMNTS="$EXMNTS $part: $EXMNT"
|
||||
[[ $EXMNT == '/usr' && $HOOKS != *usr* ]] && HOOKS="usr $HOOKS"
|
||||
else
|
||||
break; return 1
|
||||
fi
|
||||
@ -1427,7 +1445,7 @@ EOF
|
||||
|
||||
if [[ -e /run/archiso/sfs/airootfs ]]; then
|
||||
printf "Copying vmlinuz and ucode to /boot\n"
|
||||
[[ $KERNEL != 'linux-lts' ]] && cp -vf $RUN/x86_64/vmlinuz $MNT/boot/vmlinuz-linux
|
||||
[[ $KERNEL == 'linux' ]] && cp -vf $RUN/x86_64/vmlinuz $MNT/boot/vmlinuz-linux
|
||||
[[ $UCODE && ! $VM ]] && cp -vf $RUN/${UCODE/-/_}.img $MNT/boot/${UCODE}.img
|
||||
fi
|
||||
|
||||
@ -1530,7 +1548,7 @@ setup_xinit()
|
||||
if [[ -e $MNT/home/$NEWUSER/.xinitrc ]] && grep -q 'exec' $MNT/home/$NEWUSER/.xinitrc; then
|
||||
sed -i "/exec/ c exec ${LOGIN_WM}" $MNT/home/$NEWUSER/.xinitrc
|
||||
else
|
||||
printf "exec %s\n" "$LOGIN_WM" > $MNT/home/$NEWUSER/.xinitrc
|
||||
printf "exec %s\n" "$LOGIN_WM" >> $MNT/home/$NEWUSER/.xinitrc
|
||||
fi
|
||||
|
||||
# automatic startx for login shells
|
||||
@ -1567,10 +1585,7 @@ EOF
|
||||
loginrc=".zprofile"
|
||||
esac
|
||||
|
||||
if ! [[ ${EDIT_FILES[login]} =~ $loginrc ]]; then
|
||||
# add the shell login file to the edit list after install
|
||||
EDIT_FILES[login]+=" /home/$NEWUSER/$loginrc"
|
||||
fi
|
||||
[[ ${EDIT_FILES[login]} == *"$loginrc"* ]] || EDIT_FILES[login]+=" /home/$NEWUSER/$loginrc"
|
||||
|
||||
if [[ $AUTOLOGIN == true ]]; then
|
||||
sed -i "s/root/${NEWUSER}/g" $SERVICE/autologin.conf
|
||||
@ -1666,7 +1681,19 @@ package_operations()
|
||||
|
||||
[[ $MYSHELL == *mksh* ]] && inpkg+=" mksh"
|
||||
[[ $BOOTLDR == 'grub' ]] && inpkg+=" grub"
|
||||
[[ $KERNEL == 'linux-lts' ]] && { inpkg+=" linux-lts"; rmpkg+=" linux"; }
|
||||
|
||||
if [[ $KERNEL == 'linux-lts' ]]; then
|
||||
inpkg+=" linux-lts"; rmpkg+=" linux"
|
||||
elif [[ $KERNEL == 'linux-zen' ]]; then
|
||||
inpkg+=" linux-zen"; rmpkg+=" linux"
|
||||
elif [[ $KERNEL == 'linux-hardened' ]]; then
|
||||
inpkg+=" linux-hardened"; rmpkg+=" linux"
|
||||
fi
|
||||
|
||||
if [[ $MYSHELL == '/usr/bin/zsh' ]]; then
|
||||
inpkg+=" zsh-completions zsh-history-substring-search"
|
||||
fi
|
||||
|
||||
[[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|dwm) ]] && inpkg+=" $WM_BASE_PKGS"
|
||||
[[ $INSTALL_WMS =~ ^(plasma|gnome|cinnamon)$ ]] || inpkg+=" archlabs-ksuperkey"
|
||||
|
||||
@ -1726,13 +1753,13 @@ setup_grub()
|
||||
EDIT_FILES[bootloader]="/etc/default/grub"
|
||||
if [[ $SYS == 'BIOS' ]]; then
|
||||
[[ $BOOT_DEVICE ]] || { select_device 'boot' || return 1; }
|
||||
BCMDS[grub]="${BCMDS[grub]} --target=i386-pc $BOOT_DEVICE"
|
||||
BCMDS[grub]="grub-install --recheck --force --target=i386-pc $BOOT_DEVICE"
|
||||
else
|
||||
if [[ $ROOT_PART == */dev/mapper/* && ! $LVM && ! $LUKS_PASS ]]; then
|
||||
luks_pass "$_LuksOpen" 1 || return 1
|
||||
fi
|
||||
BCMDS[grub]="mount -t efivarfs efivarfs $efidir/efivars || true &&
|
||||
${BCMDS[grub]} --bootloader-id=$DIST"
|
||||
grub-install --recheck --force --bootloader-id=$DIST"
|
||||
|
||||
grep -q $efidir/efivars <<< "$(mount)" || mount -t efivarfs efivarfs $efidir/efivars
|
||||
fi
|
||||
@ -1787,7 +1814,7 @@ prerun_grub()
|
||||
prerun_systemd-boot()
|
||||
{
|
||||
# no LVM then systemd-boot uses PARTUUID
|
||||
[[ $ROOT_PART =~ /dev/mapper ]] || ROOT_PART_ID="PART$ROOT_PART_ID"
|
||||
[[ $ROOT_PART == */dev/mapper* ]] || ROOT_PART_ID="PART$ROOT_PART_ID"
|
||||
|
||||
# create the boot entry configs
|
||||
mkdir -p ${MNT}${BMNTS[$SYS-systemd-boot]}/loader/entries
|
||||
@ -1830,8 +1857,7 @@ prerun_syslinux()
|
||||
{
|
||||
mkdir -pv $MNT${BMNTS[$SYS-syslinux]}/syslinux
|
||||
cp -rfv /usr/lib/syslinux/bios/* $MNT${BMNTS[$SYS-syslinux]}/syslinux/
|
||||
|
||||
cat > $cfgdir/syslinux.cfg << EOF
|
||||
cat > $MNT${BMNTS[$SYS-syslinux]}/syslinux/syslinux.cfg << EOF
|
||||
UI menu.c32
|
||||
PROMPT 0
|
||||
|
||||
@ -1850,16 +1876,27 @@ MENU LABEL $DIST Linux Fallback
|
||||
LINUX ../vmlinuz-$KERNEL
|
||||
APPEND root=$ROOT_PART_ID $([[ $LUKS_DEV ]] && printf "%s " "$LUKS_DEV")rw
|
||||
INITRD ../initramfs-$KERNEL-fallback.img$([[ $UCODE ]] && printf "\nINITRD %s" "../${UCODE}.img")
|
||||
|
||||
#LABEL grub2
|
||||
#MENU LABEL Grub2
|
||||
#COM32 chain.c32
|
||||
#APPEND file=../grub/boot.img
|
||||
|
||||
#LABEL windows
|
||||
#MENU LABEL Windows
|
||||
#COM32 chain.c32
|
||||
#APPEND hd0 3
|
||||
|
||||
EOF
|
||||
return 0
|
||||
}
|
||||
|
||||
install_bootloader()
|
||||
{
|
||||
if ! [[ $ROOT_PART =~ /dev/mapper ]]; then
|
||||
ROOT_PART_ID="UUID=$(blkid -s PARTUUID -o value $ROOT_PART)"
|
||||
else
|
||||
if [[ $ROOT_PART == */dev/mapper* ]]; then
|
||||
ROOT_PART_ID="$ROOT_PART"
|
||||
else
|
||||
ROOT_PART_ID="UUID=$(blkid -s UUID -o value $ROOT_PART)"
|
||||
fi
|
||||
|
||||
if [[ $SYS == 'UEFI' ]]; then
|
||||
@ -1909,20 +1946,19 @@ lvm_menu()
|
||||
|
||||
local choice
|
||||
choice="$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
||||
--title " $_PrepLVM " --menu "$_LvmMenu" 0 0 6 \
|
||||
--title " $_PrepLVM " --menu "$_LvmMenu" 0 0 0 \
|
||||
"$_LvmCreateVG" "vgcreate -f, lvcreate -L -n" \
|
||||
"$_LvmDelVG" "vgremove -f" \
|
||||
"$_LvMDelAll" "lvrmeove, vgremove, pvremove -f" \
|
||||
"$_Back" "Return to the main menu")"
|
||||
|
||||
case $choice in
|
||||
"$_LvmCreateVG") lvm_create && return 0 ;;
|
||||
"$_LvmCreateVG") lvm_create || return 1 ;;
|
||||
"$_LvmDelVG") lvm_del_vg ;;
|
||||
"$_LvMDelAll") lvm_del_all ;;
|
||||
*) return 0
|
||||
esac
|
||||
|
||||
lvm_menu
|
||||
return 0
|
||||
}
|
||||
|
||||
lvm_detect()
|
||||
@ -2002,7 +2038,7 @@ lvm_volume_name()
|
||||
|
||||
tput cnorm
|
||||
local name
|
||||
if ! name="$(getinput "$_LvmCreateVG (LV:$VOL_COUNT)" "$msg" "$default" nolimit)"; then
|
||||
if ! name="$(getinput "$_LvmCreateVG (LV:$VOL_COUNT)" "\n$msg" "$default" nolimit)"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
@ -2039,7 +2075,7 @@ lvm_extra_lvs()
|
||||
get_lv_size || { break; return 1; }
|
||||
lvcreate -L "$VOLUME_SIZE" "$VOLUME_GROUP" -n "$VOLUME_NAME" >/dev/null 2>$ERR
|
||||
errshow "lvcreate -L $VOLUME_SIZE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "$_Done LV $VOLUME_NAME ($VOLUME_SIZE) $_LvmPvDoneBody2."
|
||||
msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "\n$_Done Logical Volume (LV) $VOLUME_NAME ($VOLUME_SIZE) $_LvmPvDoneBody2.\n"
|
||||
(( VOL_COUNT-- ))
|
||||
done
|
||||
|
||||
@ -2103,9 +2139,7 @@ lvm_mkgroup()
|
||||
|
||||
lvm_create()
|
||||
{
|
||||
VOLUME_GROUP=""
|
||||
LVM_PARTS=()
|
||||
VGROUP_MB=0
|
||||
VOLUME_GROUP=""; LVM_PARTS=(); VGROUP_MB=0
|
||||
umount_dir $MNT
|
||||
lvm_partitions || return 1
|
||||
lvm_mkgroup || return 1
|
||||
@ -2114,10 +2148,8 @@ lvm_create()
|
||||
lvm_volume_name "$_LvmLvNameBody1 $_LvmLvNameBody2 (${VGROUP_MB}MB)" || return 1
|
||||
lvcreate -l +100%FREE "$VOLUME_GROUP" -n "$VOLUME_NAME" >/dev/null 2>$ERR
|
||||
errshow "lvcreate -l +100%FREE $VOLUME_GROUP -n $VOLUME_NAME"
|
||||
LVM='logical volume'
|
||||
tput civis
|
||||
sleep 0.5
|
||||
local msg="${_Done}$_LvmPvDoneBody1 $VOLUME_GROUP-$VOLUME_NAME (${VOLUME_SIZE:-${VGROUP_MB}MB}) $_LvmPvDoneBody2."
|
||||
LVM='logical volume'; tput civis; sleep 0.5
|
||||
local msg="\n$_Done $_LvmPvDoneBody1 $VOLUME_GROUP-$VOLUME_NAME (${VOLUME_SIZE:-${VGROUP_MB}MB}) $_LvmPvDoneBody2.\n"
|
||||
msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "$msg\n$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE "${LVM_PARTS[@]}")\n"
|
||||
}
|
||||
|
||||
@ -2165,13 +2197,12 @@ luks_menu()
|
||||
"$_Back" "Return to the main menu")"
|
||||
|
||||
case $choice in
|
||||
"$_LuksEncrypt") luks_default && return 0 ;;
|
||||
"$_LuksOpen") luks_open && return 0 ;;
|
||||
"$_LuksEncryptAdv") luks_keycmd && return 0 ;;
|
||||
*) return 0
|
||||
"$_LuksEncrypt") luks_default || return 1 ;;
|
||||
"$_LuksOpen") luks_open || return 1 ;;
|
||||
"$_LuksEncryptAdv") luks_keycmd || return 1 ;;
|
||||
esac
|
||||
|
||||
luks_menu
|
||||
return 0
|
||||
}
|
||||
|
||||
luks_open()
|
||||
|
Reference in New Issue
Block a user