V8.00.000.2025.06.17
Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
@@ -25,137 +25,75 @@ partition_formatting() {
|
||||
### Declare Arrays and Variables.
|
||||
declare var_dev var_part \
|
||||
var_encryption_enable var_encryption_label var_fs_btrfs_checksum var_fs_btrfs_compress var_fs_btrfs_dedup \
|
||||
var_fs_format var_fs_label var_fs_options var_fs_version var_mount_path
|
||||
var_fs_format var_fs_label var_fs_options var_fs_version var_mount_path var_node
|
||||
declare -a ary_devs ary_parts ary_opts ary_fmt_opts
|
||||
|
||||
### Iterate over all devices in the recipe.
|
||||
for var_dev in $(yq e ".recipe.${VAR_RECIPE_STRING}.dev | keys | .[]" "${VAR_SETUP_PART}"); do
|
||||
readarray -t ary_devs < <(yq e ".recipe.${VAR_RECIPE_STRING}.dev | keys | .[]" "${VAR_SETUP_PART}")
|
||||
for var_dev in "${ary_devs[@]}"; do
|
||||
|
||||
### Iterate over all partitions for this device.
|
||||
for var_part in $(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev} | keys | .[]" "${VAR_SETUP_PART}"); do
|
||||
readarray -t ary_parts < <(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev} | keys | .[]" "${VAR_SETUP_PART}")
|
||||
for var_part in "${ary_parts[@]}"; do
|
||||
|
||||
### Extract parameters from YAML.
|
||||
var_encryption_enable=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.encryption.enable" "${VAR_SETUP_PART}")
|
||||
var_encryption_label=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.encryption.label" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_checksum=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.checksum" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_compress=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.compress" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_dedup=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.dedup" "${VAR_SETUP_PART}")
|
||||
var_fs_format=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.format" "${VAR_SETUP_PART}")
|
||||
var_fs_label=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.label" "${VAR_SETUP_PART}")
|
||||
var_fs_options=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.options" "${VAR_SETUP_PART}")
|
||||
var_fs_version=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.version" "${VAR_SETUP_PART}")
|
||||
var_mount_path=$(yq e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.mount.path" "${VAR_SETUP_PART}")
|
||||
var_encryption_enable=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.encryption.enable" "${VAR_SETUP_PART}")
|
||||
var_encryption_label=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.encryption.label" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_checksum=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.checksum" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_compress=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.compress" "${VAR_SETUP_PART}")
|
||||
var_fs_btrfs_dedup=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.btrfs.dedup" "${VAR_SETUP_PART}")
|
||||
var_fs_format=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.format" "${VAR_SETUP_PART}")
|
||||
var_fs_label=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.label" "${VAR_SETUP_PART}")
|
||||
var_fs_options=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.options" "${VAR_SETUP_PART}")
|
||||
var_fs_version=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.filesystem.version" "${VAR_SETUP_PART}")
|
||||
var_mount_path=$(yq_val e ".recipe.${VAR_RECIPE_STRING}.dev.${var_dev}.${var_part}.mount.path" "${VAR_SETUP_PART}")
|
||||
|
||||
if [[ "${var_encryption_enable,,}" == "true" && "${var_mount_path}" == "SWAP" ]]; then
|
||||
[[ "${var_fs_format,,}" != "true" ]] && continue
|
||||
|
||||
mkfs.ext4 -L "${var_fs_label}" "/dev/${var_dev}${var_part}" 1M
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
|
||||
elif [[ "${var_encryption_enable,,}" == "true" && "${var_mount_path}" == "/tmp" ]]; then
|
||||
|
||||
mkfs.ext4 -L "${var_fs_label}" "/dev/${var_dev}${var_part}" 1M
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
### Preparation of Ephemeral 'SWAP' and '/tmp' as per https://wiki.archlinux.org/title/Dm-crypt/Swap_encryption#UUID_and_LABEL
|
||||
case "${var_mount_path,,}" in
|
||||
swap|/tmp)
|
||||
mkfs.ext4 -L "${var_fs_label}" "/dev/${var_dev}${var_part}" 1M
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' ephemeral encryption prepared for: '${var_mount_path}'."
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "${var_encryption_enable,,}" == "true" ]]; then
|
||||
var_node="/dev/mapper/${var_encryption_label}"
|
||||
else
|
||||
var_node="/dev/${var_dev}${var_part}"
|
||||
fi
|
||||
|
||||
### Formatting partition
|
||||
if [[ "${var_encryption_enable,,}" == "true" && "${var_mount_path}" != "SWAP" && "${var_mount_path}" != "/tmp" ]]; then
|
||||
case "${var_fs_version,,}" in
|
||||
|
||||
if [[ "${var_fs_format,,}" == "true" && "${var_fs_version}" == "btrfs" ]]; then
|
||||
btrfs)
|
||||
ary_opts=( -L "${var_fs_label}" -f --csum "${var_fs_btrfs_checksum}" -O compress="${var_fs_btrfs_compress}" )
|
||||
[[ "${var_fs_btrfs_dedup,,}" == "true" ]] && ary_opts+=( -m dup )
|
||||
mkfs.btrfs "${ary_opts[@]}" "${var_node}"
|
||||
do_log "info" "false" "Partition: '${var_node}' formatted: btrfs."
|
||||
echo "Partition: '${var_node}':" >> "${DIR_LOG}/btrfs.log"
|
||||
btrfs filesystem show "${var_node}" >> "${DIR_LOG}/btrfs.log"
|
||||
;;
|
||||
|
||||
if [[ "${var_fs_btrfs_dedup,,}" == "true" ]]; then
|
||||
ext4)
|
||||
read -r -a ary_fmt_opts <<< "${var_fs_options}"
|
||||
mkfs.ext4 -L "${var_fs_label}" "${ary_fmt_opts[@]}" "${var_node}"
|
||||
do_log "info" "false" "Partition: '${var_node}' formatted: ext4."
|
||||
echo "Partition: '${var_node}':" >> "${DIR_LOG}/ext4.log"
|
||||
tune2fs -l "${var_node}" >> "${DIR_LOG}/ext4.log"
|
||||
;;
|
||||
|
||||
mkfs.btrfs -L "${var_fs_label}" "/dev/mapper/${var_encryption_label}" -f --csum "${var_fs_btrfs_checksum}" -m dup -O compress="${var_fs_btrfs_compress}"
|
||||
do_log "info" "false" "Partition: '/dev/mapper/${var_encryption_label}' formatted: '${var_fs_version}'."
|
||||
fat32)
|
||||
mkfs.fat -F 32 -n "${var_fs_label}" "${var_node}"
|
||||
do_log "info" "false" "Partition: '${var_node}' formatted: FAT32."
|
||||
;;
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/mapper/${var_encryption_label}':" >> "${DIR_LOG}/btrfs.log"
|
||||
btrfs filesystem show "/dev/mapper/${var_encryption_label}" >> "${DIR_LOG}/btrfs.log"
|
||||
echo "" >> "${DIR_LOG}/btrfs.log"
|
||||
*)
|
||||
do_log "error" "false" "Unsupported filesystem format: '${var_fs_version}'."
|
||||
;;
|
||||
|
||||
elif [[ "${var_fs_btrfs_dedup,,}" == "false" ]]; then
|
||||
|
||||
mkfs.btrfs -L "${var_fs_label}" "/dev/mapper/${var_encryption_label}" -f --csum "${var_fs_btrfs_checksum}" -O compress="${var_fs_btrfs_compress}"
|
||||
do_log "info" "false" "Partition: '/dev/mapper/${var_encryption_label}' formatted: '${var_fs_version}'."
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/mapper/${var_encryption_label}':" >> "${DIR_LOG}/btrfs.log"
|
||||
btrfs filesystem show "/dev/mapper/${var_encryption_label}" >> "${DIR_LOG}/btrfs.log"
|
||||
echo "" >> "${DIR_LOG}/btrfs.log"
|
||||
|
||||
else
|
||||
|
||||
do_log "error" "false" "Partition: '/dev/mapper/${var_encryption_label}': Unsupported deduplication method: '${var_fs_btrfs_dedup}'."
|
||||
|
||||
fi
|
||||
|
||||
elif [[ "${var_fs_format,,}" == "true" && "${var_fs_version}" == "ext4" ]]; then
|
||||
|
||||
mkfs.ext4 -L "${var_fs_label}" "/dev/mapper/${var_encryption_label}" "${var_fs_options:+ $var_fs_options}"
|
||||
do_log "info" "false" "Partition: '/dev/mapper/${var_encryption_label}' formatted: '${var_fs_version}'."
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/mapper/${var_encryption_label}':" >> "${DIR_LOG}/ext4.log"
|
||||
tune2fs -l "/dev/mapper/${var_encryption_label}" >> "${DIR_LOG}/ext4.log"
|
||||
echo "" >> "${DIR_LOG}/ext4.log"
|
||||
|
||||
else
|
||||
|
||||
do_log "error" "false" "Partition: '/dev/mapper/${var_encryption_label}': Unsupported filesystem format: '${var_fs_version}'."
|
||||
|
||||
fi
|
||||
|
||||
elif [[ "${var_encryption_enable,,}" == "false" && "${var_mount_path}" != "SWAP" && "${var_mount_path}" != "/tmp" ]]; then
|
||||
|
||||
if [[ "${var_fs_format,,}" == "true" && "${var_fs_version}" == "btrfs" ]]; then
|
||||
|
||||
if [[ "${var_fs_btrfs_dedup,,}" == "true" ]]; then
|
||||
|
||||
mkfs.btrfs -L "${var_fs_label}" "/dev/${var_dev}${var_part}" -f --csum "${var_fs_btrfs_checksum}" -m dup -O compress="${var_fs_btrfs_compress}"
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/${var_dev}${var_part}':" >> "${DIR_LOG}/btrfs.log"
|
||||
btrfs filesystem show "/dev/${var_dev}${var_part}" >> "${DIR_LOG}/btrfs.log"
|
||||
echo "" >> "${DIR_LOG}/btrfs.log"
|
||||
|
||||
elif [[ "${var_fs_btrfs_dedup,,}" == "false" ]]; then
|
||||
|
||||
mkfs.btrfs -L "${var_fs_label}" "/dev/${var_dev}${var_part}" -f --csum "${var_fs_btrfs_checksum}" -O compress="${var_fs_btrfs_compress}"
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/${var_dev}${var_part}':" >> "${DIR_LOG}/btrfs.log"
|
||||
btrfs filesystem show "/dev/${var_dev}${var_part}" >> "${DIR_LOG}/btrfs.log"
|
||||
echo "" >> "${DIR_LOG}/btrfs.log"
|
||||
|
||||
else
|
||||
|
||||
do_log "error" "false" "Partition: '/dev/${var_dev}${var_part}': Unsupported deduplication method: '${var_fs_btrfs_dedup}'."
|
||||
|
||||
fi
|
||||
|
||||
elif [[ "${var_fs_format,,}" == "true" && "${var_fs_version}" == "ext4" ]]; then
|
||||
|
||||
mkfs.ext4 -L "${var_fs_label}" "/dev/${var_dev}${var_part}" "${var_fs_options:+ $var_fs_options}"
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
|
||||
# shellcheck disable=SC2129
|
||||
echo "Partition: '/dev/${var_dev}${var_part}':" >> "${DIR_LOG}/ext4.log"
|
||||
tune2fs -l "/dev/${var_dev}${var_part}" >> "${DIR_LOG}/ext4.log"
|
||||
echo "" >> "${DIR_LOG}/ext4.log"
|
||||
|
||||
elif [[ "${var_fs_format,,}" == "true" && "${var_fs_version}" == "FAT32" ]]; then
|
||||
|
||||
mkfs.fat -F 32 "/dev/${var_dev}${var_part}"
|
||||
do_log "info" "false" "Partition: '/dev/${var_dev}${var_part}' formatted: '${var_fs_version}'."
|
||||
|
||||
else
|
||||
|
||||
do_log "error" "false" "Partition: '/dev/${var_dev}${var_part}': Unsupported filesystem format: '${var_fs_version}'."
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user