#!/bin/bash
+# This file is part of Ian Kelling's automated-distro-installer
+# Copyright (C) 2024 Ian Kelling
+
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
x=$(readlink -f "$BASH_SOURCE"); cd ${x%/*}
usage() {
- cat <<EOF
-usage: ${0##*/} [-h|--help] [hostname|ip|default]...
+ cat <<EOF
+usage: ${0##*/} [OPTIONS] [HOSTNAME|IP|default]
-Sets up tftp pxe config on host "faiserver". Argument sets the host to
-enable it for, "default" is for all hosts. No argument disables for all
-hosts.
-EOF
- exit $1
-}
+Sets up tftp pxe config and nfs server on host "faiserver".
+If our kernel has no nfs support, uses apache intead of nfs, and depends
+on another repo of Ian Kelling, basic-https-conf, where the file is at
+/a/exe/web-conf.
+Usng this, you can boot into fai with pxe-kexec without changing
+the dhcp server.
+
+Argument sets the host to enable it for. No argument disables pxe
+config for all hosts, but leaves nfs server alone. Use faiserver-disable
+to disable the nfs server.
+
+-S sets FAI_ACTION=sysinfo, and remove fai flag reboot.
+ Usefull for doing a system recovery. It reboots automatically anyways :(
+-k Add serial port output for kgped16
+-i sets FAI_ACTION=inventory and remove fai flag reboot.
+ I'm not sure what this is usefull for.
+-h|--help Print help and exit.
+
+EOF
+ exit $1
+}
case $1 in
- -h|--help) usage ;;
+ -h|--help) usage ;;
esac
-host=$(chost faiserver)
-ssh root@$host bash -s "$@" <myfai-chboot-local
+faiserver_addr=$(host faiserver | sed -rn 's/^\S+ has address //p;T;q' ||:)
+host=$(./chost faiserver)
+if ip a | grep "^ *inet.\? $faiserver_addr" &>/dev/null; then
+ ./myfai-chboot-local "$@"
+else
+ ssh root@$host bash -s -- "$@" <myfai-chboot-local
+fi