#!/bin/bash -x set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR if [[ $EUID != 0 ]]; then echo "$0: error: expected to be root." exit 1 fi if ! type -t fcopy &>/dev/null; then sudo apt-get -y install fai-client fi if [[ -e /a/bin/fai/fai-wrapper ]]; then chroot() { shift "$@" } fi chroot $FAI_ROOT bash <<'EOFOUTER' set -eE -o pipefail if getent group systemd-journal >/dev/null; then # makes the journal be saved to disk. mkdir -p /var/log/journal chmod 755 /var/log/journal fi debconf-set-selections < 60*60*2 )); then i=0 while fuser $FAI_ROOT/var/lib/dpkg/lock &>/dev/null; do sleep 1 i=$(( i+1 )) if (( i > 300 )); then echo "error: timed out waiting for /var/lib/dpkg/lock" >&2 exit 1 fi $ROOTCMD apt-get update done fi chroot $FAI_ROOT bash <<'EOF' #### begin .ssh setup ### set -x set -eE -o pipefail mkdir -p /home/iank/.ssh f=/root/.ssh/authorized_keys if [[ -e $f ]]; then cp $f /home/iank/.ssh fi chown -R 1000:1000 /home/iank/.ssh chmod -R u=Xrw,og= /home/iank/.ssh rm -rf /root/.ssh # remove broken symlinks or the following cp will fail find /home/iank/.ssh -xtype l -exec rm '{}' \; cp -rL /home/iank/.ssh /root chown -R root:root /root/.ssh chmod 700 /root/.ssh # https://ticktockhouse.svbtle.com/my-obligatory-ubuntu-ssh-agent-post # systemctl --user is not available at fai time, so create the link ourselves d=/home/iank/.config/systemd/user/default.target.wants sudo -u iank mkdir -p $d sudo -u iank ln -sf /usr/lib/systemd/user/ssh-agent.service $d #### end .ssh setup ### ### duplicated in ssh-emacs-setup # done here so its setup earlier for convenience line='AcceptEnv INSIDE_EMACS BRC COLUMNS' f=/etc/ssh/sshd_config grep -xFq "$line" $f || tee -a $f <<<"$line" # default jessie groups + kvm, systemd-journal, adm for g in adm cdrom floppy sudo audio dip video plugdev netdev; do if getent gropu $g >/dev/null; then usermod -aG $g iank fi done if getent group systemd-journal >/dev/null; then usermod -aG systemd-journal iank fi # this is usefull. Only thing reason I see this being disabled by default is # that a normal user can disrupt the system, eg cause a reboot. sed -i '$a kernel.sysrq=1 /^kernel.sysrq=/d' /etc/sysctl.conf EOF if [[ $FAI_ACTION != dirinstall ]]; then # luks options, see man systemd-cryptsetup-generator # all i know is that with luks.crypttab=no, swap still timed out on boot. # and with rd.luks.crypttab=no, it works. if ifclass LINODE; then speed=19200 cmdline="rd.luks.crypttab=no net.ifnames=0 console=ttyS0,${speed}n8" else speed=115200 cmdline="rd.luks.crypttab=no net.ifnames=0 console=ttyS0,${speed}n8 console=tty0" fi cat >$FAI_ROOT/etc/grub.d/40_custom <$target/etc/NetworkManager/conf.d/99-iank.conf <<'EOF' [main] dns=systemd-resolved EOF else cat > $target/etc/network/interfaces <<-EOF # generated by FAI auto lo eth0 iface lo inet loopback iface eth0 inet dhcp iface eth0 inet6 auto EOF # previously had an else condition after #elif ifclass VM || ifclass LINODE; then # iface $NIC1 inet manual # iface br0 inet dhcp # bridge_ports $NIC1 # bridge_stp off # bridge_maxwait 0 # however, on t9, on startup, br0, became # rename1 and didn't come up. i dunno why, # but the bridge is for vms that I rarely use, # so not bothering to figure it out. fi rm -f $target/etc/resolv.conf ln -s ../run/systemd/resolve/stub-resolv.conf $target/etc/resolv.conf if ifclass LINODE; then mkdir -p $target/etc/initramfs-tools/conf.d cat >$target/etc/initramfs-tools/conf.d/mine <