#!/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 this_file="$(readlink -f -- "${BASH_SOURCE[0]}")" readonly this_file this_dir="${this_file%/*}" cd "$this_dir" usage() { cat <<'EOF' usage: myfai-chboot [OPTIONS] [HOSTNAME|IP|default] Sets up tftp pxe config and nfs server on host "faiserver.b8.nz". 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. EOF exit 0 } case $1 in -h|--help) usage ;; esac faiserver_addr=$(host faiserver.b8.nz | sed -rn 's/^\S+ has address //p;T;q' ||:) host=$(./chost faiserver.b8.nz) if ip a | grep "^ *inet.\? $faiserver_addr" &>/dev/null; then ./myfai-chboot-local "$@" else ssh root@$host bash -s -- "$@"