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; }
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
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.
fi
boot_space=0
-first=false
+first=true
boot_devs=()
for dev in ${devs[@]}; do
if ifclass frodo; then
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
exit 1
fi
fi
-first_boot_dev=${boot_devs[0]}
bpart() { # btrfs a partition
# 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
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
#
# 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))
if [[ $DISTRO == debianbuster_bootstrap ]]; then
cat > /tmp/fai/fstab <<EOF
$first_boot_dev / btrfs noatime,subvol=$boot_vol 0 0
+$first_efi /boot/efi vfat nofail 0 0
EOF
cat >/tmp/fai/disk_var.sh <<EOF
BOOT_DEVICE="${short_devs[@]}"