+ isopath=$BASEFILE_DIR/$iso
+ isosrc=$BASEFILE_DIR/BOOKWORM64.tar.zst
+ if [[ ! -e $isopath || $(stat -c %Y $isopath) -lt $(stat -c %Y $isosrc) ]]; then
+ e fai-cd -g $(readlink -f grub.cfg.${iso%%.*}) -f -A $isopath
+ fi
+ boot_arg="--cdrom $isopath"
+ e fai-redep
+ /a/exe/cedit -s /srv/fai/nfsroot/root/.ssh/authorized_keys <~/.ssh/demo.pub
+ e myfai-chboot default
+ fi
+ # I don't think these variants actually make a diff for us, but I
+ # use the appropriate one when trying a new distro just in case.
+ #variant=ubuntu14.04
+ #variant=ubuntu16.04
+ #variant=debian8
+ variant=ubuntu20.04
+fi
+
+name=demohost
+
+e virsh destroy $name ||:
+sleep 1
+e virsh destroy $name ||:
+e virsh undefine $name ||:
+sleep 1
+
+## begin virtual disk creation ##
+disk_arg=()
+for ((i=1; i <= disk_count; i++)); do
+ f=/var/lib/libvirt/images/${name}$i
+ disk_arg+=("--disk path=$f")
+ if $new_disk || [[ ! -e $f ]]; then
+ rm -f $f
+ # https://btrfs.wiki.kernel.org/index.php/FAQ
+ touch $f
+ chattr +C $f
+ e qemu-img create -o preallocation=metadata -f qcow2 $f 50G
+ fi
+done
+## end virtual disk creation ##
+
+if [[ $SSH_CLIENT ]]; then
+ console_arg=--noautoconsole
+fi
+
+# docker makes forward default to drop, which blocks the vm pxe on flidas. easiest solution:
+e iptables -P FORWARD ACCEPT
+
+# --cpu host: this causes mkfs.btrfs to fail with a stack trace which began
+# something like:
+# init_module+0x108/0x1000 [raid6_pq]
+#
+# uniq is to stop gtk-warning spam
+# e virt-install --os-variant $variant -n $name --pxe -r 2048 --vcpus 1 \
+ # ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
+ # --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
+
+cpus=1
+if (( $(nproc) > 2 )); then
+ cpus=2
+fi
+
+e systemctl start libvirtd
+e virt-install --rng /dev/urandom --os-variant $variant -n $name $boot_arg -r 2048 --vcpus $cpus \
+ ${disk_arg[*]} $net_arg $reboot_arg \
+ --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
+
+
+if [[ $SSH_CLIENT ]]; then
+ fg
+fi
+
+sleep 90
+while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name true; do
+ e sleep 5