# s
# source /b/fai/fai-wrapper
# - set any appropriate classes with: fai-setclass OPT1... which sets CLASS_OPT1=true...
-# or run eval-fai-classfile FILE
-# export luks_dir=/q/root/luks
+# or run eval-fai-classfile FILE.
+# - Set a VOL_DISTROVER, eg:
+# fai-setclass VOL_NABIA
+# - export luks_dir=/q/root/luks
#
# OPTIONS:
#
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,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s 0 0
EOF
cat >/tmp/fai/disk_var.sh <<EOF
BOOT_DEVICE="${short_devs[@]}"
else
# note, fai creates the mountpoints listed here
cat > /tmp/fai/fstab <<EOF
-$first_root_crypt / btrfs noatime,subvol=root_$DISTRO$mopts 0 0
-$first_root_crypt /mnt/root btrfs nofail,noatime,subvolid=0$mopts 0 0
-$first_boot_dev /boot btrfs nofail,noatime,subvol=$boot_vol 0 0
-$first_efi /boot/efi vfat nofail 0 0
-$first_boot_dev /mnt/boot btrfs nofail,noatime,subvolid=0 0 0
+$first_root_crypt / btrfs x-systemd.device-timeout=90s,x-systemd.mount-timeout=90s,noatime,subvol=root_$DISTRO$mopts 0 0
+$first_root_crypt /mnt/root btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,subvolid=0$mopts 0 0
+$first_boot_dev /boot btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,subvol=$boot_vol 0 0
+$first_efi /boot/efi vfat nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s 0 0
+$first_boot_dev /mnt/boot btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,subvolid=0 0 0
EOF
swaps=()
rm -f /tmp/fai/crypttab
$(swap-cryptname) $(swapdev) /dev/urandom swap,cipher=aes-xts-plain64,size=256,hash=ripemd160
EOF
cat >> /tmp/fai/fstab <<EOF
-$(swap-cryptdev) none swap nofail,sw 0 0
+$(swap-cryptdev) none swap nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,sw 0 0
EOF
done
SWAPLIST=\${SWAPLIST:-"${swaps[@]}"}
EOF
fi
+
+# initial setup of extra data fs, mounted,
+# btrfs subvol create nocow
+# chattr +C nocow
+# chown iank.iank nocow
+
+if [[ $HOSTNAME == kd ]]; then
+ cat >>/tmp/fai/crypttab <<EOF
+crypt_dev_ata-Samsung_SSD_870_QVO_8TB_S5VUNG0N900656V-part6 /dev/disk/by-id/ata-Samsung_SSD_870_QVO_8TB_S5VUNG0N900656V-part6 none keyscript=decrypt_keyctl,discard,luks,initramfs
+crypt_dev_ata-TOSHIBA_MD04ACA500_84R2K773FS9A-part1 /dev/disk/by-id/ata-TOSHIBA_MD04ACA500_84R2K773FS9A-part1 keyscript=decrypt_keyctl,discard,luks,initramfs
+EOF
+ cat >> /tmp/fai/fstab <<EOF
+/dev/mapper/crypt_dev_ata-Samsung_SSD_870_QVO_8TB_S5VUNG0N900656V-part6 /d btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,compress=zstd,subvol=nocow 0 0
+# r6 = root partition6
+/dev/mapper/crypt_dev_ata-Samsung_SSD_870_QVO_8TB_S5VUNG0N900656V-part6 /mnt/r6 btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,compress=zstd,subvolid=0 0 0
+/dev/mapper/crypt_dev_ata-TOSHIBA_MD04ACA500_84R2K773FS9A-part1 /mnt/rust btrfs nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,noatime,compress=zstd,subvolid=0 0 0
+EOF
+fi