7-add-legacy-bios-support #8

Merged
hygienic-books merged 12 commits from 7-add-legacy-bios-support into main 2023-10-24 00:25:35 +00:00
Showing only changes of commit 78053e813a - Show all commits

View File

@ -125,16 +125,21 @@ function get_part_parent () {
} }
function get_parts () { function get_parts () {
local zfs_install_drive local zfs_install_drive part_type_code
declare parttype parts declare parttype parts
parttype="${1:?}" parttype="${1:?}"
zfs_install_drive="${2:-}" zfs_install_drive="${2:-}"
case "${parttype}" in case "${parttype}" in
zfs) zfs)
parts="$(get_partitions | jq --raw-output '.[][] | select(.children | length > 0) | .children[] | select(.parttype=="6a85cf4d-1dd2-11b2-99a6-080020736631") | .path')" || exit 1 if [[ "${part_schema}" = 'mbr' ]]; then
part_type_code="${partition_types[mbr_zfs]}"
else
part_type_code="${partition_types[gpt_zfs]}"
fi
parts="$(get_partitions | jq --raw-output '.[][] | select(.children | length > 0) | .children[] | select(.parttype=="'"${part_type_code}"'") | .path')" || exit 1
;; ;;
efi) efi)
parts="$(get_partitions | jq --raw-output '.[][] | select(.children | length > 0) | select(.path=="'"${zfs_install_drive:?}"'") | .children[] | select(.parttype=="c12a7328-f81f-11d2-ba4b-00a0c93ec93b") | .path')" || exit 1 parts="$(get_partitions | jq --raw-output '.[][] | select(.children | length > 0) | select(.path=="'"${zfs_install_drive:?}"'") | .children[] | select(.parttype=="'"${partition_types[gpt_efi]}"'") | .path')" || exit 1
;; ;;
*) *)
>&3 printf -- '%s\n' 'Unknown partition type '"'"'"${parttype}"'"'"', exiting ...' >&3 printf -- '%s\n' 'Unknown partition type '"'"'"${parttype}"'"'"', exiting ...'
@ -181,7 +186,7 @@ function get_drive_id () {
} }
function select_part () { function select_part () {
local parts enriched_parts enriched_parts_count part_number part_type zfs_install_drive local parts enriched_parts enriched_parts_count part_number part_type zfs_install_drive part_type_code
declare part declare part
part_type="${1:?}" # 'efi' or 'zfs' part_type="${1:?}" # 'efi' or 'zfs'
zfs_install_drive="${2:-}" zfs_install_drive="${2:-}"
@ -198,7 +203,12 @@ function select_part () {
part_type_human_readable='EFI system partition (ESP) with partition type code EF00' part_type_human_readable='EFI system partition (ESP) with partition type code EF00'
;; ;;
zfs) zfs)
part_type_human_readable='ZFS zpool partition with partition type code BF00' if [[ "${part_schema}" = 'mbr' ]]; then
part_type_code='bf'
else
part_type_code='BF00'
fi
part_type_human_readable='ZFS zpool partition with partition type code '"${part_type_code}"
;; ;;
esac esac
>&3 printf -- '%s\n' \ >&3 printf -- '%s\n' \
@ -626,7 +636,7 @@ function get_disks_with_one_efipart () {
# Find disks that have exactly one EFI partition and where that EFI # Find disks that have exactly one EFI partition and where that EFI
# partition is partition number 1. We expect exactly one disk to meet # partition is partition number 1. We expect exactly one disk to meet
# these criteria. Anything else and we bail. # these criteria. Anything else and we bail.
disks_with_one_efipart="$(lsblk --output PATH,PARTTYPE --json --tree | jq --raw-output '.[][] | select(.children | length > 0) | select( any (.children[]; (.path | test("^[^[:digit:]]+1")) and (.parttype=="c12a7328-f81f-11d2-ba4b-00a0c93ec93b")) and ([select(.children[].parttype=="c12a7328-f81f-11d2-ba4b-00a0c93ec93b")] | length == 1) ) | .path')" disks_with_one_efipart="$(lsblk --output PATH,PARTTYPE --json --tree | jq --raw-output '.[][] | select(.children | length > 0) | select( any (.children[]; (.path | test("^[^[:digit:]]+1")) and (.parttype=="'"${partition_types[gpt_efi]}"'")) and ([select(.children[].parttype=="'"${partition_types[gpt_efi]}"'")] | length == 1) ) | .path')"
if [[ "$(wc -l <<<"${disks_with_one_efipart}")" -eq '1' ]] && [[ "$(wc -c <<<"${disks_with_one_efipart}")" -gt '1' ]]; then if [[ "$(wc -l <<<"${disks_with_one_efipart}")" -eq '1' ]] && [[ "$(wc -c <<<"${disks_with_one_efipart}")" -gt '1' ]]; then
printf -- '%s' "${disks_with_one_efipart}" printf -- '%s' "${disks_with_one_efipart}"
return 0 return 0