diff --git a/scripts/internal_config.sh b/scripts/internal_config.sh index 8cb59a9..b50cc2e 100644 --- a/scripts/internal_config.sh +++ b/scripts/internal_config.sh @@ -26,15 +26,15 @@ USED_LUKS=false # An array of disk related actions to perform DISK_ACTIONS=() # An associative array from disk id to a resolvable string -declare -A DISK_ID_TO_RESOLVABLE +declare -Ax DISK_ID_TO_RESOLVABLE # An associative from uuid to device -declare -A DISK_UUID_TO_DEVICE +declare -Ax DISK_UUID_TO_DEVICE # An associative array from disk id to parent gpt disk id (only for partitions) -declare -A DISK_ID_PART_TO_GPT_ID +declare -Ax DISK_ID_PART_TO_GPT_ID # An associative array to check for existing ids (maps to uuids) -declare -A DISK_ID_TO_UUID +declare -Ax DISK_ID_TO_UUID # An associative set to check for correct usage of size=remaining in gpt tables -declare -A DISK_GPT_HAD_SIZE_REMAINING +declare -Ax DISK_GPT_HAD_SIZE_REMAINING only_one_of() { local previous="" diff --git a/scripts/main.sh b/scripts/main.sh index 610817f..be1bdcc 100755 --- a/scripts/main.sh +++ b/scripts/main.sh @@ -119,12 +119,12 @@ install_kernel_bios() { # Install syslinux MBR record einfo "Copying syslinux MBR record" - local biosdev="$(resolve_device_by_id "$DISK_ID_BIOS")" local gptdev="$(resolve_device_by_id "${DISK_ID_PART_TO_GPT_ID[$DISK_ID_BIOS]}")" try dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of="$gptdev" # Install syslinux einfo "Installing syslinux" + local biosdev="$(resolve_device_by_id "$DISK_ID_BIOS")" syslinux --install "$biosdev" } diff --git a/scripts/utils.sh b/scripts/utils.sh index 330f571..ab38ffb 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -138,12 +138,11 @@ get_device_by_uuid() { get_device_by_blkid_field 'UUID' "$1" } -get_device_by_ptuuid() { - echo -n "${DISK_UUID_TO_DEVICE[${1,,}]}" -} - -get_device_by_mdadm_uuid() { - echo -n "${DISK_UUID_TO_DEVICE[${1,,}]}" +get_device_by_stored_uuid() { + local key="${1,,}" + [[ -v "DISK_UUID_TO_DEVICE[$key]" ]] \ + || die "Could not resolve uuid $key to device" + echo -n "${DISK_UUID_TO_DEVICE[$key]}" } get_device_by_luks_uuid() { @@ -203,11 +202,11 @@ resolve_device_by_id() { local arg="${DISK_ID_TO_RESOLVABLE[$id]#*:}" case "$type" in - 'partuuid') get_device_by_partuuid "$arg" ;; - 'ptuuid') get_device_by_ptuuid "$arg" ;; - 'uuid') get_device_by_uuid "$arg" ;; - 'mdadm') get_device_by_mdadm_uuid "$arg" ;; - 'luks') get_device_by_luks_uuid "$arg" ;; + 'partuuid') get_device_by_partuuid "$arg" ;; + 'ptuuid') get_device_by_ptuuid "$arg" ;; + 'uuid') get_device_by_uuid "$arg" ;; + 'mdadm') get_device_by_stored_uuid "$arg" ;; + 'luks') get_device_by_stored_uuid "$arg" ;; *) die "Cannot resolve '$type:$arg' to device (unknown type)" esac }