Disk configurator finished except for encryption keys
This commit is contained in:
parent
07470e8806
commit
dd7482da5e
|
@ -47,7 +47,7 @@ done
|
||||||
echo "Please install dialog on your system to use the configurator"
|
echo "Please install dialog on your system to use the configurator"
|
||||||
|
|
||||||
# Wrap dialog in two functions to prevent it from cluttering stderr.
|
# Wrap dialog in two functions to prevent it from cluttering stderr.
|
||||||
function dialog_wrapper() { dialog_out=$(command dialog "$@" 3>&2 2>&1 1>&3 3>&-); }
|
function dialog_wrapper() { dialog_out=$(command dialog --colors "$@" 3>&2 2>&1 1>&3 3>&-); }
|
||||||
function dialog() { dialog_wrapper "$@" 2>&1; }
|
function dialog() { dialog_wrapper "$@" 2>&1; }
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,10 +125,35 @@ function recalculate_locales() {
|
||||||
LOCALES="${LOCALES:1}"
|
LOCALES="${LOCALES:1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function define_disk_configuration_function() {
|
||||||
|
cat << EOF
|
||||||
|
function disk_configuration() {
|
||||||
|
$* ;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function define_swap() {
|
||||||
|
if [[ $PARTITIONING_USE_SWAP == "true" ]]; then
|
||||||
|
echo -n "${PARTITIONING_SWAP@Q}"
|
||||||
|
else
|
||||||
|
echo -n "false"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function define_disk_layout() {
|
function define_disk_layout() {
|
||||||
# Show function declaration, trim trailing whitespace
|
|
||||||
|
case "$PARTITIONING_SCHEME" in
|
||||||
|
"classic_single_disk") define_disk_configuration_function "create_classic_single_disk_layout swap=$(define_swap) type=${PARTITIONING_BOOT_TYPE@Q} luks=${PARTITIONING_USE_LUKS@Q} root_fs=${PARTITIONING_ROOT_FS@Q}" "${PARTITIONING_DEVICE@Q}" ;;
|
||||||
|
"zfs_centric") define_disk_configuration_function "create_zfs_centric_layout swap=$(define_swap) type=${PARTITIONING_BOOT_TYPE@Q} encrypt=${PARTITIONING_ZFS_ENCRYPTION@Q} pool_type=${PARTITIONING_ZFS_POOL_TYPE@Q}" "${PARTITIONING_DEVICES[@]@Q}" ;;
|
||||||
|
"btrfs_centric") define_disk_configuration_function "create_btrfs_centric_layout swap=$(define_swap) type=${PARTITIONING_BOOT_TYPE@Q} raid_type=${PARTITIONING_BTRFS_RAID_TYPE@Q} luks=${PARTITIONING_USE_LUKS@Q}" "${PARTITIONING_DEVICES[@]@Q}" ;;
|
||||||
|
"raid0_luks") define_disk_configuration_function "create_raid0_luks_layout swap=$(define_swap) type=${PARTITIONING_BOOT_TYPE@Q} root_fs=${PARTITIONING_ROOT_FS@Q}" "${PARTITIONING_DEVICES[@]@Q}" ;;
|
||||||
|
"custom")
|
||||||
|
# Show current function declaration, trim trailing whitespace
|
||||||
declare -f disk_configuration \
|
declare -f disk_configuration \
|
||||||
| sed -e 's/\s*$//'
|
| sed -e 's/\s*$//'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
ALL_PARTITIONING_SCHEMES=(
|
ALL_PARTITIONING_SCHEMES=(
|
||||||
|
@ -139,8 +164,9 @@ ALL_PARTITIONING_SCHEMES=(
|
||||||
"custom" "Custom (edit the config manually later)"
|
"custom" "Custom (edit the config manually later)"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
PARTITIONING_BOOT_TYPES=("efi" "bios")
|
||||||
PARTITIONING_ROOT_FS_TYPES=("ext4" "btrfs")
|
PARTITIONING_ROOT_FS_TYPES=("ext4" "btrfs")
|
||||||
PARTITIONING_RAID_TYPES=("raid0" "raid1")
|
PARTITIONING_BTRFS_RAID_TYPES=("raid0" "raid1")
|
||||||
PARTITIONING_ZFS_POOL_TYPES=("stripe" "mirror")
|
PARTITIONING_ZFS_POOL_TYPES=("stripe" "mirror")
|
||||||
|
|
||||||
function create_single_disk_layout() {
|
function create_single_disk_layout() {
|
||||||
|
@ -150,7 +176,7 @@ function create_single_disk_layout() {
|
||||||
function parse_swap() {
|
function parse_swap() {
|
||||||
if [[ $1 == "false" ]]; then
|
if [[ $1 == "false" ]]; then
|
||||||
PARTITIONING_USE_SWAP=false
|
PARTITIONING_USE_SWAP=false
|
||||||
PARTITIONING_SWAP=0
|
PARTITIONING_SWAP=8GiB
|
||||||
else
|
else
|
||||||
PARTITIONING_USE_SWAP=true
|
PARTITIONING_USE_SWAP=true
|
||||||
PARTITIONING_SWAP="$1"
|
PARTITIONING_SWAP="$1"
|
||||||
|
@ -172,7 +198,7 @@ function create_classic_single_disk_layout() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_raid0_luks_layout() {
|
function create_raid0_luks_layout() {
|
||||||
PARTITIONING_SCHEME="classic_single_disk"
|
PARTITIONING_SCHEME="raid0_luks"
|
||||||
|
|
||||||
local known_arguments=('+swap' '?type' '?root_fs')
|
local known_arguments=('+swap' '?type' '?root_fs')
|
||||||
local extra_arguments=()
|
local extra_arguments=()
|
||||||
|
@ -213,7 +239,7 @@ function create_btrfs_centric_layout() {
|
||||||
parse_swap "${arguments[swap]}"
|
parse_swap "${arguments[swap]}"
|
||||||
PARTITIONING_BOOT_TYPE="${arguments[type]}"
|
PARTITIONING_BOOT_TYPE="${arguments[type]}"
|
||||||
PARTITIONING_USE_LUKS="${arguments[luks]:-false}"
|
PARTITIONING_USE_LUKS="${arguments[luks]:-false}"
|
||||||
PARTITIONING_RAID_TYPE="${arguments[raid_type]:-raid0}"
|
PARTITIONING_BTRFS_RAID_TYPE="${arguments[raid_type]:-raid0}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -636,7 +662,7 @@ function menu() {
|
||||||
|
|
||||||
SELECTED_MENU_ITEM=""
|
SELECTED_MENU_ITEM=""
|
||||||
MENU_SIZE=("20" "76" "12")
|
MENU_SIZE=("20" "76" "12")
|
||||||
INPUTBOX_SIZE=("8" "76")
|
INPUTBOX_SIZE=("11" "76")
|
||||||
EDITTEXT_SIZE=("16" "76")
|
EDITTEXT_SIZE=("16" "76")
|
||||||
RADIOLIST_SIZE=("20" "76" "8")
|
RADIOLIST_SIZE=("20" "76" "8")
|
||||||
BUILDLIST_SIZE=("20" "76" "8")
|
BUILDLIST_SIZE=("20" "76" "8")
|
||||||
|
@ -654,11 +680,11 @@ MENU_ITEMS=(
|
||||||
"PARTITIONING_SWAP"
|
"PARTITIONING_SWAP"
|
||||||
"PARTITIONING_ROOT_FS"
|
"PARTITIONING_ROOT_FS"
|
||||||
"PARTITIONING_USE_LUKS"
|
"PARTITIONING_USE_LUKS"
|
||||||
"PARTITIONING_DEVICE"
|
|
||||||
"PARTITIONING_DEVICES"
|
|
||||||
"PARTITIONING_ZFS_ENCRYPTION"
|
"PARTITIONING_ZFS_ENCRYPTION"
|
||||||
"PARTITIONING_ZFS_POOL_TYPE"
|
"PARTITIONING_ZFS_POOL_TYPE"
|
||||||
"PARTITIONING_RAID_TYPE"
|
"PARTITIONING_BTRFS_RAID_TYPE"
|
||||||
|
"PARTITIONING_DEVICE"
|
||||||
|
"PARTITIONING_DEVICES"
|
||||||
"--------"
|
"--------"
|
||||||
"HOSTNAME"
|
"HOSTNAME"
|
||||||
"TIMEZONE"
|
"TIMEZONE"
|
||||||
|
@ -699,9 +725,9 @@ function PARTITIONING_SCHEME_menu() {
|
||||||
# Set disk scheme
|
# Set disk scheme
|
||||||
case "$dialog_out" in
|
case "$dialog_out" in
|
||||||
"classic_single_disk") create_classic_single_disk_layout swap=8GiB type=efi luks=false root_fs=ext4 /dev/sdX ;;
|
"classic_single_disk") create_classic_single_disk_layout swap=8GiB type=efi luks=false root_fs=ext4 /dev/sdX ;;
|
||||||
"zfs_centric") ;;
|
"zfs_centric") create_zfs_centric_layout swap=8GiB type=efi encrypt=true pool_type=stripe /dev/sdX ;;
|
||||||
"btrfs_centric") ;;
|
"btrfs_centric") create_btrfs_centric_layout swap=8GiB type=efi raid_type=raid0 luks=false /dev/sdX ;;
|
||||||
"raid0_luks") ;;
|
"raid0_luks") create_raid0_luks_layout swap=8GiB type=efi root_fs=ext4 /dev/sdX /dev/sdY ;;
|
||||||
"custom") PARTITIONING_SCHEME="$dialog_out" ;;
|
"custom") PARTITIONING_SCHEME="$dialog_out" ;;
|
||||||
esac
|
esac
|
||||||
UNSAVED_CHANGES=true
|
UNSAVED_CHANGES=true
|
||||||
|
@ -711,6 +737,26 @@ function PARTITIONING_SCHEME_menu() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_BOOT_TYPE_tag() { echo " ├ Boot type"; }
|
||||||
|
function PARTITIONING_BOOT_TYPE_label() { echo " ├ ($PARTITIONING_BOOT_TYPE)"; }
|
||||||
|
function PARTITIONING_BOOT_TYPE_show() { [[ $PARTITIONING_SCHEME != "custom" ]]; }
|
||||||
|
function PARTITIONING_BOOT_TYPE_help() { echo "Select whether to use EFI or BIOS boot."; }
|
||||||
|
function PARTITIONING_BOOT_TYPE_menu() {
|
||||||
|
if menu_radiolist \
|
||||||
|
"Select boot type" \
|
||||||
|
"Select whether your want to use EFI or BIOS boot." \
|
||||||
|
"$PARTITIONING_BOOT_TYPE" \
|
||||||
|
"${PARTITIONING_BOOT_TYPES[@]}"
|
||||||
|
then
|
||||||
|
# Set timezone
|
||||||
|
PARTITIONING_BOOT_TYPE="$dialog_out"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
else
|
||||||
|
# Return to menu
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function PARTITIONING_USE_SWAP_tag() { echo " ├ Use swap"; }
|
function PARTITIONING_USE_SWAP_tag() { echo " ├ Use swap"; }
|
||||||
function PARTITIONING_USE_SWAP_label() { on_off_label "$PARTITIONING_USE_SWAP" " ├ "; }
|
function PARTITIONING_USE_SWAP_label() { on_off_label "$PARTITIONING_USE_SWAP" " ├ "; }
|
||||||
function PARTITIONING_USE_SWAP_show() { [[ $PARTITIONING_SCHEME != "custom" ]]; }
|
function PARTITIONING_USE_SWAP_show() { [[ $PARTITIONING_SCHEME != "custom" ]]; }
|
||||||
|
@ -753,6 +799,123 @@ function PARTITIONING_ROOT_FS_menu() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_USE_LUKS_tag() { echo " ├ Use LUKS"; }
|
||||||
|
function PARTITIONING_USE_LUKS_label() { on_off_label "$PARTITIONING_USE_LUKS" " ├ "; }
|
||||||
|
function PARTITIONING_USE_LUKS_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "classic_single_disk" "btrfs_centric"; }
|
||||||
|
function PARTITIONING_USE_LUKS_help() { echo "Determines if LUKS will be used to encrypt your root partition."; }
|
||||||
|
function PARTITIONING_USE_LUKS_menu() {
|
||||||
|
on_off_toggle "PARTITIONING_USE_LUKS"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_ZFS_ENCRYPTION_tag() { echo " ├ ZFS Encryption"; }
|
||||||
|
function PARTITIONING_ZFS_ENCRYPTION_label() { on_off_label "$PARTITIONING_ZFS_ENCRYPTION" " ├ "; }
|
||||||
|
function PARTITIONING_ZFS_ENCRYPTION_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "zfs_centric"; }
|
||||||
|
function PARTITIONING_ZFS_ENCRYPTION_help() { echo "Determines if ZFS encryption will be used to encrypt your root partition."; }
|
||||||
|
function PARTITIONING_ZFS_ENCRYPTION_menu() {
|
||||||
|
on_off_toggle "PARTITIONING_ZFS_ENCRYPTION"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_ZFS_POOL_TYPE_tag() { echo " ├ Pool type"; }
|
||||||
|
function PARTITIONING_ZFS_POOL_TYPE_label() { echo " ├ ($PARTITIONING_ZFS_POOL_TYPE)"; }
|
||||||
|
function PARTITIONING_ZFS_POOL_TYPE_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "zfs_centric"; }
|
||||||
|
function PARTITIONING_ZFS_POOL_TYPE_help() { echo "Determines the pool type of the created zfs pool (stripe / mirror)."; }
|
||||||
|
function PARTITIONING_ZFS_POOL_TYPE_menu() {
|
||||||
|
if menu_radiolist \
|
||||||
|
"Select ZFS pool type" \
|
||||||
|
"Select which ZFS pool type you want to use. By default pools are striping in ZFS." \
|
||||||
|
"$PARTITIONING_ZFS_POOL_TYPE" \
|
||||||
|
"${PARTITIONING_ZFS_POOL_TYPES[@]}"
|
||||||
|
then
|
||||||
|
# Set timezone
|
||||||
|
PARTITIONING_ZFS_POOL_TYPE="$dialog_out"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
else
|
||||||
|
# Return to menu
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_BTRFS_RAID_TYPE_tag() { echo " ├ Btrfs raid type"; }
|
||||||
|
function PARTITIONING_BTRFS_RAID_TYPE_label() { echo " ├ ($PARTITIONING_BTRFS_RAID_TYPE)"; }
|
||||||
|
function PARTITIONING_BTRFS_RAID_TYPE_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "btrfs_centric"; }
|
||||||
|
function PARTITIONING_BTRFS_RAID_TYPE_help() { echo "Determines the type of the btrfs pool."; }
|
||||||
|
function PARTITIONING_BTRFS_RAID_TYPE_menu() {
|
||||||
|
if menu_radiolist \
|
||||||
|
"Select raid type" \
|
||||||
|
"Select which raid type to use for the btrfs pool." \
|
||||||
|
"$PARTITIONING_BTRFS_RAID_TYPE" \
|
||||||
|
"${PARTITIONING_BTRFS_RAID_TYPES[@]}"
|
||||||
|
then
|
||||||
|
# Set timezone
|
||||||
|
PARTITIONING_BTRFS_RAID_TYPE="$dialog_out"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
else
|
||||||
|
# Return to menu
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_DEVICE_tag() { echo " └ Device"; }
|
||||||
|
function PARTITIONING_DEVICE_label() {
|
||||||
|
if [[ -e "$PARTITIONING_DEVICE" ]]; then
|
||||||
|
echo " └ ($PARTITIONING_DEVICE)"
|
||||||
|
else
|
||||||
|
echo " └ (\Z1$PARTITIONING_DEVICE\Zn)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function PARTITIONING_DEVICE_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "classic_single_disk"; }
|
||||||
|
function PARTITIONING_DEVICE_help() { echo "The block device to which the layout will be applied."; }
|
||||||
|
function PARTITIONING_DEVICE_menu() {
|
||||||
|
dialog \
|
||||||
|
--title "Select device" \
|
||||||
|
--inputbox "Enter the path of the device which you want to partition. (e.g. /dev/sda)." \
|
||||||
|
"${INPUTBOX_SIZE[@]}" "$PARTITIONING_DEVICE"
|
||||||
|
PARTITIONING_DEVICE="$dialog_out"
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
}
|
||||||
|
|
||||||
|
function PARTITIONING_DEVICES_tag() { echo " └ Devices"; }
|
||||||
|
function PARTITIONING_DEVICES_label() {
|
||||||
|
local invalid=0
|
||||||
|
for dev in "${PARTITIONING_DEVICES[@]}"; do
|
||||||
|
[[ -e "$dev" ]] \
|
||||||
|
|| ((++invalid))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$invalid" -gt 0 ]]; then
|
||||||
|
echo " └ (${#PARTITIONING_DEVICES[@]} devices, \Z1$invalid invalid\Zn)"
|
||||||
|
elif [[ "${#PARTITIONING_DEVICES[@]}" -eq 1 && "$PARTITIONING_SCHEME" == "raid0_luks" ]]; then
|
||||||
|
echo " └ (${#PARTITIONING_DEVICES[@]} devices, \Z1need at least 2\Zn)"
|
||||||
|
elif [[ "${#PARTITIONING_DEVICES[@]}" -eq 0 ]]; then
|
||||||
|
echo " └ (${#PARTITIONING_DEVICES[@]} devices, \Z1need at least 1\Zn)"
|
||||||
|
else
|
||||||
|
echo " └ (${#PARTITIONING_DEVICES[@]} devices)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function PARTITIONING_DEVICES_show() { [[ $PARTITIONING_SCHEME != "custom" ]] && one_of "$PARTITIONING_SCHEME" "raid0_luks" "zfs_centric" "btrfs_centric"; }
|
||||||
|
function PARTITIONING_DEVICES_help() { echo "The block devices to which the layout will be applied."; }
|
||||||
|
function PARTITIONING_DEVICES_menu() {
|
||||||
|
local invalid=()
|
||||||
|
for dev in "${PARTITIONING_DEVICES[@]}"; do
|
||||||
|
[[ -e "$dev" ]] \
|
||||||
|
|| invalid+=("$dev")
|
||||||
|
done
|
||||||
|
|
||||||
|
local invalid_line=""
|
||||||
|
if [[ "${#invalid[@]}" -gt 0 ]]; then
|
||||||
|
invalid_line="\n\nInvalid devices: \Z1${invalid[*]}\Zn"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dialog \
|
||||||
|
--title "Select devices" \
|
||||||
|
--inputbox "Enter the path of all devices which you want to partition, separated by space. (e.g. /dev/sda /dev/sdb).$invalid_line" \
|
||||||
|
"${INPUTBOX_SIZE[@]}" "${PARTITIONING_DEVICES[*]}"
|
||||||
|
PARTITIONING_DEVICES=($dialog_out)
|
||||||
|
UNSAVED_CHANGES=true
|
||||||
|
}
|
||||||
|
|
||||||
function HOSTNAME_tag() { echo "Hostname"; }
|
function HOSTNAME_tag() { echo "Hostname"; }
|
||||||
function HOSTNAME_label() { echo "($HOSTNAME)"; }
|
function HOSTNAME_label() { echo "($HOSTNAME)"; }
|
||||||
function HOSTNAME_show() { return 0; }
|
function HOSTNAME_show() { return 0; }
|
||||||
|
|
Loading…
Reference in New Issue