#!/bin/bash
#
+# fai kexec from upstream live cds, i.e. curl|bash
# You can copy this to a http server, then wget -O- url|sudo bash
-# or curl|bash, if curl is installed.
+# curl is sometimes not preinstalled on a live cd.
#
# This has been tested on trisquel belanos and ubuntu xenial.
#
set -ex
if grep -q ID=ubuntu /etc/os-release; then
+ # add universe, pxe-kexec is there
sed -ri '/^\s*deb/{/universe/!s/$/ universe/}' /etc/apt/sources.list
fi
-apt-get update
-apt-get install -y debconf
-debconf-set-selections <<EOF
+if ! type -p pxe-kexec &>/dev/null; then
+ apt-get update
+ apt-get install -y debconf
+ debconf-set-selections <<EOF
kexec-tools kexec-tools/load_kexec boolean false
EOF
-apt-get install -y pxe-kexec
-# at least on belanos, apt-get goes into the background,
-# and we need to wait for it to finish.
-sleep 5
+ apt-get install -y pxe-kexec
+fi
+# running this piped to bash on belanos, the apt-get goes
+# into the background while it's still installing, and pxe-kexec
+# just exits right away. sleep calls are strangely ignored.
+# I don't know whats going on, but just running the same
+# command again once it finishes works, and this is only
+# rarely used and done manually anyways, so whatever.
pxe-kexec -n --ignore-whitelist -l fai-generated faiserver