static usb ethnet addresses
[automated-distro-installer] / myfai-chboot
index 1abead8c5922a7feb7bcc1df6c1adcbf9b4e9841..a653ae6a020240208dbb20913d1bcf5b673762f1 100755 (executable)
@@ -1,19 +1,70 @@
 #!/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 [hostname|ip|default]...
+  cat <<EOF
+usage: ${0##*/} [OPTIONS] [HOSTNAME|IP|default]
+
+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.
+
+Using this, you can boot into fai with pxe-kexec without changing the
+dhcp server. Note, if you are booting using fai-cd, the pxe config does
+nothing, and only flags affecting FAI_ACTION will have any affect. You
+can change the fai flags in the grub config, for example in
+./grub.cfg.autodiscover, or at runtime by editing a grub menu option.
+We could probably also set FAI_FLAGS the same way we set FAI_ACTION,
+but I haven't tried it.
+
+HOSTNAME|IP|default  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.
+-b          Setup bonded ethernet.
+--no-r      Tell fai-chboot not to reboot when its done. This is implied by -i and -S.
+-h|--help   Print help and exit.
 
-Sets up tftp pxe config. No argument disables for all hosts.
 EOF
-    exit $1
+  exit $1
 }
+case $1 in
+  -h|--help) usage ;;
+esac
 
-cd "${BASH_SOURCE%/*}" # directory of the script
 
-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