changes for bullseye
[automated-distro-installer] / faiserver-setup
index d8489eda2c0a1e31b8998ce6a9c41f25100ca7fd..086a351d97760ed72385323fc422a899b2f7773e 100755 (executable)
@@ -17,7 +17,9 @@
 
 x="$(readlink -f "$BASH_SOURCE")"; source "${x%/*}/bash-trace"
 
-[[ $EUID == 0 ]] || exec sudo -i "${BASH_SOURCE}" "$@"
+[[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@"
+
+LC_USEBASHRC=t; . ~/.bashrc
 
 usage() {
   cat <<EOF
@@ -29,7 +31,7 @@ as the tftp server. I vaguely remember that using a hostname does not
 work.  Separate from running this, faiserver needs to be setup in dns to
 point to whatever host this is run on.
 
-Default BASE_CODENAME is stretch. Default ARCH is 64. The script expects corresponding
+Default BASE_CODENAME is buster. Default ARCH is 64. The script expects corresponding
 $BASEFILE_DIR/${UPCASED_BASE_CODENAME}${ARCH}.tar.(gz|xz) to exist, and it must have been
 generated around the same time as the nfsroot, at least so it has the
 same kernel version.
@@ -45,9 +47,15 @@ esac
 e() { echo "+ $@"; "$@"; }
 
 
-base=${1:-stretch}
+base=${1:-buster}
 arch=${2:-64}
-basefile=($BASEFILE_DIR/${base^^}${arch^^}.tar.[gx]z)
+
+if [[ $base == [[:upper:]] ]]; then
+  echo $0: error: use lowercase base
+  exit 1
+fi
+
+basefile=($BASEFILE_DIR/${base^^}${arch^^}.tar.gz)
 sed="sed -ri --follow-symlinks"
 
 if [[ ! -e $basefile ]]; then
@@ -74,21 +82,20 @@ if grep -xFq 'VERSION="8 (jessie)"' /etc/os-release; then
   cat >/etc/apt/sources.list.d/fai.list <<'EOF'
 deb https://fai-project.org/download jessie koeln
 EOF
-elif grep -iE 'VERSION=.*(stretch|flidas|xenail)' /etc/os-release; then
+elif grep -iE 'VERSION=.*(stretch|flidas|xenail|buster|bullseye|etiona)' /etc/os-release; then
   # fai on ubuntu only has official support using the universe repo, but newer
   # tends to have less bugs.
-  gpg --keyserver hkp://pool.sks-keyservers.net -a --recv-keys 2BF8D9FE074BCDE4; gpg -a --export 2BF8D9FE074BCDE4 | apt-key add -
+  wget -O - https://fai-project.org/download/2BF8D9FE074BCDE4.asc | apt-key add -
 
   case $base in
-    stretch)
-      cat >/etc/apt/sources.list.d/fai.list <<'EOF'
-deb https://fai-project.org/download stretch koeln
+    stretch|buster|bullseye)
+      cat >/etc/apt/sources.list.d/fai.list <<EOF
+deb https://fai-project.org/download $base koeln
 EOF
       ;;
-    buster)
-      cat >/etc/apt/sources.list.d/fai.list <<'EOF'
-deb https://fai-project.org/download buster koeln
-EOF
+    *)
+      echo "$0: error: script needs updating for new base" >&2
+      exit 1
       ;;
   esac
 else
@@ -114,27 +121,35 @@ fi
 e apt-get install -y ${pkgs[@]}
 # confnew since we edit /etc/fai/NFSROOT in an automated way
 # fai-client is already a fai-server dependency, but make sure it gets upgraded
-e apt-get install --no-install-recommends -y -o Dpkg::Options::="--force-confnew" fai-server fai-client
+e apt-get install --no-install-recommends -y -o Dpkg::Options::=--no-force-confdef -o Dpkg::Options::=--force-confnew fai-server fai-client
 
 r=http://http.us.debian.org/debian
 # like default, but scrap httpredir, and nonfree.
 # All my systems should be able to get along without nonfree
 # for a base working system afaik.
+
 cat >/etc/fai/apt/sources.list <<EOF
 deb $r $base main contrib
-deb http://security.debian.org/debian-security $base/updates main contrib
 EOF
-
-
 case $base in
   jessie|stretch|buster)
     cat >>/etc/fai/apt/sources.list <<EOF
+deb http://security.debian.org/debian-security $base/updates main contrib
+EOF
+    ;;
+  *)
+    # new naming convention
+    cat >>/etc/fai/apt/sources.list <<EOF
+deb http://security.debian.org/debian-security $base-security main contrib
+EOF
+esac
+
+
+cat >>/etc/fai/apt/sources.list <<EOF
 # use fai repo. it's commented in the defaults. it's got bug fixes.
 # and may contain newer packages.
 deb http://fai-project.org/download $base koeln
 EOF
-    ;;
-esac
 
 if [[ $base == jessie ]]; then
   cat >>/etc/fai/apt/sources.list <<'EOF'
@@ -174,13 +189,19 @@ echo "LOGUSER=fai" >>/etc/fai/fai.conf
 # figured out after partitioning ignored my crypt partition
 
 
-if ! grep cryptsetup /etc/fai/NFSROOT &>/dev/null; then
-  cat >>/etc/fai/NFSROOT <<'EOF'
+cedit /etc/fai/NFSROOT <<'EOF' || [[ $? == 1 ]]
 # inserted by faserver-setup
 PACKAGES install
 cryptsetup
+# default one is linux-image-server, doesnt exist anymore
+linux-image-amd64
+# default is btrfs-tools which doesnt exist anymore
+btrfs-progs
+iw
+# got an error in error.log about not having gpg.
+# system seemed to still install ok, so i havent tested if this fixes it.
+gpg
 EOF
-fi
 
 if armhf; then
   cd /srv/fai