# output: /dev/disk/by-id/model+serial, or if no link exists, the same as input
short_dev=$1
+if [[ ! -e $short_dev ]]; then
+ echo "devbyid: error: argument=$short_dev does not exist"
+ exit 1
+fi
# devices are identified by model+serial num
# and for ssd/hdd: wwn, and for nvme: eui.
# model+serial gives me more info, so use that.
shopt -s extglob
for id in /dev/disk/by-id/!(nvme-eui*|wwn*); do
- [[ -e $id ]] || break # if we matched nothing
- if [[ $(readlink -f $id) == "$short_dev" ]]; then
- printf '%s\n' "$id"
- exit
- fi
+ [[ -e $id ]] || break # if we matched nothing
+ if [[ $(readlink -f $id) == "$short_dev" ]]; then
+ printf '%s\n' "$id"
+ exit
+ fi
done
# a vm may not have a by-id link.
printf '%s\n' "$short_dev"
# todo: update for lvm
doroot2() {
+
# We write to these files instead of just /etc/fstab, /etc/crypttab,
# because these are filesystems created after our current root, and so
# this allows us to update other root filesystems too.
echo $0: error: found partition=true but have mkroot2 arg
exit 1
fi
+
+
root2_devs=()
for vg in ${vgs[@]}; do
+
+
root2_devs+=(/dev/mapper/crypt-$vg-root2)
if $mkroot2; then
+ lvcreate -y -L $root2_part_mib $vg -n root2
+ lvcreate -y -L $boot2_part_mib $vg -n boot2
luks-setup /dev/$vg/root2 crypt-$vg-root2
fi
cat >>/mnt/root/root2-crypttab <<EOF
boot_part_mib=$(( boot_mib * raid_duplication / ${#boot_devs[@]} ))
if zilap; then
- boot2_part_mib=0
- root2_part_mib=0
-else
boot2_part_mib=$(( boot2_mib * raid_duplication / ${#boot_devs[@]} ))
root2_part_mib=$(( root2_mib * raid_duplication / ${#root_devs[@]} ))
+else
+ boot2_part_mib=0
+ root2_part_mib=0
fi
### end calculate boot partition space
# we do lvm removals just for the disks we are using
pv_wipes=()
vg_wipes=()
+ declare -A vg_map
pv_devs=$(pvs --noheadings -o pvname)
for pv_dev in $pv_devs; do
- pv_disk=${pv_dev%%[0-9]*}
for short_dev in ${short_devs[@]}; do
- if [[ $pv_disk == "$short_dev" ]]; then
+ if [[ $pv_dev == $short_dev* ]]; then
pv_wipes+=($pv_dev)
- vgs=$(pvs --noheadings -o vgname $pv_dev)
- for vg in $vgs; do
+ vgs_of_pv=$(pvs --noheadings -o vgname $pv_dev)
+ for vg in $vgs_of_pv; do
+ if [[ ${vg_map[$vg]} ]]; then
+ continue
+ fi
+ vg_map[$vg]=t
vg_wipes+=($vg)
lvs=$(vgs --noheadings -o lv_path $vg)
for lv in $lvs; do
while ! wipefs -a $dev; do
sleep 2
count_down=$((count_down - 1))
- (( count_down > 0 )) || exit 1
+ if (( count_down <= 0 )); then
+ echo "$0: wipefs failed 10 times. exiting" >&2
+ exit 1
+ fi
done
done
fi
fi
fi
- if zilap; then
- # todo: now that we are using lvm, this doesnt need to be done until mkroot2
- lvcreate -y -L $root2_part_mib $vg -n root2
- lvcreate -y -L $boot2_part_mib $vg -n boot2
- fi
-
$pcmd mkpart primary "" ${pv_end}MiB ${disk_mib}MiB
$pcmd name $bootn boot
$pcmd set $bootn boot on
e fai-setup -evf -B $basefile
# fai-setup expert mode avoids writing to /var/log/fai/variables
# at least config_src is needed for autodiscover
+
+
+ # lld /var/log/fai/remote-logs:
+ # d 750 fai nogroup 100 08-07 08:51 pm /var/log/fai/remote-logs
+ # We could change the group or something, but why not just give me more permissions :)
+ e usermod -a -G nogroup iank
$sed '/^FAI_CONFIGDIR|^FAI_CONFIG_SRC|^LOGUSER/d' /var/log/fai/variables
tee -a /var/log/fai/variables <<'EOF'
LOGUSER=fai