#!/bin/bash -x
+# 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
}
fi
-
+if [[ $FAI_ROOT == / ]]; then
+ source /a/bin/bash_unpublished/source-state
+ bprogs_dir=/a/opt/btrfs-progs-release
+else
+ bprogs_dir=/srv/btrfs-progs-release
+ chroot="chroot $FAI_ROOT"
+fi
# -r = recursive
# -i = ignore non-matching class warnings, always exit 0
# I run this as a single post-fai script to update things that have changed.
tmpfile1=$(mktemp)
# this can fail if we need an apt update
-chroot $FAI_ROOT /usr/bin/apt-cache policy >$tmpfile1 ||:
+$chroot /usr/bin/apt-cache policy >$tmpfile1 ||:
fcopy -riB /etc/apt
tmpfile2=$(mktemp)
-chroot $FAI_ROOT /usr/bin/apt-cache policy >$tmpfile2
+$chroot /usr/bin/apt-cache policy >$tmpfile2
if ! diff -q $tmpfile1 $tmpfile2; then
- chroot $FAI_ROOT /usr/bin/apt update
+ $chroot /usr/bin/apt update
fi
# outside of fai, this seems to regularly lead to
# E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
WantedBy=dev-disk-by\x2did-ata\x2dSamsung_SSD_870_QVO_8TB_S5VUNG0N900656V.device
EOF
- chroot $FAI_ROOT bash <<'EOFOUTER'
+ $chroot bash <<'EOFOUTER'
systemctl enable myncq.service
/usr/bin/myncq no-upgrub
EOFOUTER
- ;;
+ ;;&
# per rubens suggestion to make a d16 more stable
kd|kw) cmdline+=" pci=realloc=off" ;;
esac
# use networkmanager if this host has wireless.
if [[ $HOSTNAME == bo ]] || type -p iw &>/dev/null && [[ $(iw dev) ]]; then
- chroot $FAI_ROOT bash <<EOF
+ $chroot bash <<EOF
apt-get -y install network-manager
EOF
fi
-# for btrfs bug reporting, install latest kernel and btrfs progs, as of
-# 2023-07-21
case $HOSTNAME in
sy)
- mkdir -p $FAI_ROOT/tmp/kernel-debs
- cd $FAI_ROOT/tmp/kernel-debs
- va=6.4.3
- vb=$va-060403
- vc=${vb}.202307110536
- pre="https://kernel.ubuntu.com/~kernel-ppa/mainline/v$va/amd64/linux-"
- urls=(
- ${pre}headers-${vb}_${vc}_all.deb
- ${pre}{headers,image-unsigned,modules}-${vb}-generic_${vc}_amd64.deb
- )
- wget "${urls[@]}"
- chroot $FAI_ROOT make install
-
- chroot $FAI_ROOT bash <<EOF
-cd /tmp/kernel-debs
-dpkg -i *.deb
-EOF
-
+ $FAI/distro-install-common/install-stable-kernel-debs
;;
*)
- chroot $FAI_ROOT apt-get install linux-libre
+ $chroot apt-get -y install linux-libre
;;
esac
-cp -ra /srv/a/opt/btrfs-progs-release/btrfs-progs-v6.3.2 $FAI_ROOT/tmp/btrfs-progs
-chroot $FAI_ROOT bash <<EOF
-cd /tmp/btrfs-progs
+pre=https://mirrors.edge.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs
+tarball=$(curl -s $pre/sha256sums.asc \
+ | awk '$2 ~ /^btrfs-progs-v/ { print $2 }' | grep -v -- -rc | grep "^btrfs-progs-v.*gz\$" | sort -V | tail -n1)
+url="$pre/$tarball"
+dir=${tarball%.tar.gz}
+ver=${dir#btrfs-progs-}
+cur_ver=$(btrfs --version 2>/dev/null | awk '{print $2}') ||:
+if [[ $ver != "$cur_ver" ]]; then
+ if [[ $HOST2 == "$HOSTNAME" && $ver != "$($bprogs_dir/btrfs --version 2>/dev/null | awk '{print $2}')" ]]; then
+ rm -rf $bprogs_dir
+ cd /tmp
+ wget $url
+ sudo -u iank tar xzf $tarball
+ mv ${tarball%.tar.gz} $bprogs_dir
+ cd $bprogs_dir
+ apt-get -y build-dep btrfs-progs
+ sudo -u iank ./configure --disable-documentation
+ sudo -u iank make
+ make install
+ else
+ $chroot bash -xe <<EOF
+cd $bprogs_dir
make install
EOF
-
+ fi
+fi
if ifclass LINODE; then
mkdir -p $target/etc/initramfs-tools/conf.d
if ifclass VOL_BULLSEYE_BOOTSTRAP; then
fcopy /etc/systemd/system/faicheck.service
- chroot $FAI_ROOT bash <<'EOFOUTER'
+ $chroot bash <<'EOFOUTER'
systemctl enable faicheck.service
EOFOUTER
exit 0 # avoid unnecessary stuff in bootstrap vol
## misc settings
-chroot $FAI_ROOT bash <<'EOFOUTER'
+$chroot bash <<'EOFOUTER'
#### begin .ssh setup ###
set -x
set -eE -o pipefail
# but that made a service that started too soon and didn't pick up our
# x env vars. instead, copy from the root ssh-agent just the
# appropriate things into a new service.
-rm -f /home/iank/.config/systemd/user/default.target.wants/ssh-agent.service
rm -f /home/iank/.local/share/systemd/user/sshaiank.service \
/home/iank/.config/systemd/user/default.target.wants/sshaiank.service