set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-fai_check=false
+# keep it short so we don't delay too much wnen we don't have networking.
+NETWORK_TIMOUT_SECS=10
+did_fai_check=false
check-fai() {
# we could just as well check if last_boot != /debianstable_boostrap
# the intent with this one is just a little clearer.
if [[ $did_fai_check == true ]]; then
- fai_check=true
+ grub-editenv /mnt/grubenv set did_fai_check=os_true
+ # ref: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
+ deadline=$(( `date +%s` + NETWORK_TIMOUT_SECS ))
+ while ! systemctl status network-online.target && \
+ (( `date +%s` < deadline )); do
+ sleep 1
+ done
pxe-kexec -n --ignore-whitelist -l fai-generated faiserver ||:
else
return 0
umount /mnt
done
-if $fai_check && [[ $last_boot != /debianstable_boostrap ]]; then
+# the check for last_boot is not needed afaik, just sanity check.
+if [[ $did_fai_check == true && $last_boot != /debianstable_boostrap ]]; then
# no need to reboot if we actually want to boot into this os.
reboot
fi