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"
 
 
 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
 
 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.
 
 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.
 $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 "+ $@"; "$@"; }
 
 
 e() { echo "+ $@"; "$@"; }
 
 
-base=${1:-stretch}
+base=${1:-buster}
 arch=${2:-64}
 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
 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
   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.
   # 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
 
   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
       ;;
 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
       ;;
   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 -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.
 
 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
 cat >/etc/fai/apt/sources.list <<EOF
 deb $r $base main contrib
-deb http://security.debian.org/debian-security $base/updates main contrib
 EOF
 EOF
-
-
 case $base in
   jessie|stretch|buster)
     cat >>/etc/fai/apt/sources.list <<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
 # 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'
 
 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
 
 
 # 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
 # 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
 EOF
-fi
 
 if armhf; then
   cd /srv/fai
 
 if armhf; then
   cd /srv/fai