X-Git-Url: https://iankelling.org/git/?p=automated-distro-installer;a=blobdiff_plain;f=fai%2Fconfig%2Fhooks%2Fpartition.DEFAULT;h=988ce06f925d4abe1f84ac14031fb4337d3b590e;hp=4646e568f3cb710317e4fe7a2579dbb5a32b3aa9;hb=dcc5f68f7fbe9aa86cb3c7402ba4429bd70b369d;hpb=16b5d13dba669aad0b677b2cb636edd4ed414782 diff --git a/fai/config/hooks/partition.DEFAULT b/fai/config/hooks/partition.DEFAULT index 4646e56..988ce06 100755 --- a/fai/config/hooks/partition.DEFAULT +++ b/fai/config/hooks/partition.DEFAULT @@ -120,12 +120,7 @@ add-part() { # add partition suffix to $dev d=$1 part=$2 fi - if [[ $d == /dev/disk/by-id/* ]]; then - ret=$d-part$part - else - ret=$d$part - fi - echo $ret + echo $d-part$part } bootdev() { add-part $@ $bootn; } @@ -142,6 +137,11 @@ swap-cryptdev() { crypt-dev $(swapdev $@); } root-cryptname() { crypt-name $(rootdev $@); } swap-cryptname() { crypt-name $(swapdev $@); } +dev-mib() { + echo $(( $(parted -m $dev unit MiB print | \ + sed -nr "s#^/dev/[^:]+:([0-9]+).*#\1#p") - 1)) +} + ##### end function defs if ifclass REPARTITION; then @@ -203,11 +203,10 @@ fi for dev in ${short_devs[@]}; do if $partition; then break; fi y=$(readlink -f $dev) - arr=($y[0-9]) - [[ ${#arr[@]} == "$lastn" ]] || partition=true - for (( i=1; i <= lastn; i++ )); do - [[ -e ${dev}$i ]] || partition=true - done + arr=($y?*) + if (( ${#arr[@]} != lastn )); then + partition=true + fi # On one system, blkid is missing some partitions. # maybe we need a flag, like FUZZY_BLKID or something, so we # can check that at least some exist. @@ -233,7 +232,7 @@ if [[ ! ${devs[0]} ]]; then fi boot_space=0 -first=false +first=true boot_devs=() for dev in ${devs[@]}; do if ifclass frodo; then @@ -266,12 +265,13 @@ for dev in ${devs[@]}; do sed -nr "s#^/dev/[^:]+:([0-9]+).*#\1#p") - 1)) boot_devs+=($(bootdev)) fi - if [[ $boot_devs && $first ]]; then + if $first && [[ $boot_devs ]]; then first_efi=$(efidev) first_grub_extdev=$(grub_extdev) first=false fi done +first_boot_dev=${boot_devs[0]} even_raid=false if ifclass RAID0 || (( ${#boot_devs[@]} == 1 )); then @@ -339,7 +339,6 @@ if [[ ! $DISTRO ]]; then exit 1 fi fi -first_boot_dev=${boot_devs[0]} bpart() { # btrfs a partition @@ -399,7 +398,7 @@ if $partition; then # if we repartition to the same as an old partition, # we don't want any old fses hanging around. for (( i=1; i <= lastn; i++ )); do - x=$(add-part $dev $i) + x=$(add-part $i) [[ -e $x ]] || continue count_down=10 # wipefs has failed, manual run works, google suggests timing issue @@ -416,10 +415,9 @@ if $partition; then if $even_raid; then for dev in ${devs[@]}; do - disk_mib=$(( $(parted -m $dev unit MiB print | \ - sed -nr "s#^/dev/[^:]+:([0-9]+).*#\1#p") - 1)) - if [[ ! min_disk_mib ]] || (( disk_mib < min_disk_mib )); then - min_disk_mib=$disk_mib + cur_mib=$(dev-mib) + if [[ ! $disk_mib ]] || (( cur_mib < disk_mib )); then + disk_mib=$cur_mib fi done fi @@ -435,11 +433,8 @@ if $partition; then # # Note: parted print error output is expected. example: # Error: /dev/vda: unrecognised disk label - if $even_raid; then - disk_mib=$min_disk_mib - else - disk_mib=$(( $(parted -m $dev unit MiB print | \ - sed -nr "s#^/dev/[^:]+:([0-9]+).*#\1#p") - 1)) + if ! $even_raid; then + disk_mib=$(dev-mib) fi root_end=$(( disk_mib - swap_mib - boot_mib / ${#boot_devs[@]} )) swap_end=$(( root_end + swap_mib)) @@ -614,6 +609,7 @@ umount /mnt if [[ $DISTRO == debianbuster_bootstrap ]]; then cat > /tmp/fai/fstab </tmp/fai/disk_var.sh <