X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai%2Fconfig%2Fscripts%2FGRUB_PC%2F11-iank;h=29be58e2769532b0a803da8a1be9670d2d2fedd1;hb=21353fd35096ba6786c1bae3046b763bfeac5890;hp=8f2c7604e9bfd6b1e150c9cbe33fc7c0d3b01b56;hpb=ed3681256885d295f39d5df60784d3281a2f8719;p=automated-distro-installer diff --git a/fai/config/scripts/GRUB_PC/11-iank b/fai/config/scripts/GRUB_PC/11-iank index 8f2c760..29be58e 100755 --- a/fai/config/scripts/GRUB_PC/11-iank +++ b/fai/config/scripts/GRUB_PC/11-iank @@ -12,25 +12,21 @@ if ! type -t fcopy &>/dev/null; then sudo apt-get -y install fai-client 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 +if [[ -e /a/bin/fai/fai-wrapper ]]; then + chroot() { + shift + "$@" + } fi -debconf-set-selections <$tmpfile1 ||: fcopy -riBM /etc/apt +tmpfile2=$(mktemp) +chroot $FAI_ROOT /usr/bin/apt-cache policy >$tmpfile2 +if ! diff -q $tmpfile1 $tmpfile2; then + chroot $FAI_ROOT /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) # so add a sleep. 1 sec is probably way more than needed. sleep 1 f=$FAI_ROOT/var/cache/apt/pkgcache.bin if [[ ! -r $f ]] || (( $(( $(date +%s) - $(stat -c %Y $f ) )) > 60*60*2 )); then - $ROOTCMD apt-get update + 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 +### end sources install + updates -chroot $FAI_ROOT bash <<'EOF' -#### begin .ssh setup ### -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 -#### end .ssh setup ### - -# this is needed to enable resolvconf, making /etc/resolv.conf be a symlink. -# why? i dun know, it\'s really dumb. -dpkg-reconfigure -fnoninteractive resolvconf - -# default jessie groups + kvm, systemd-journal, adm -usermod -aG adm,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev iank - +#### misc configurations +chroot $FAI_ROOT bash <<'EOFOUTER' if getent group systemd-journal >/dev/null; then - usermod -aG systemd-journal iank + # makes the journal be saved to disk. + mkdir -p /var/log/journal + chmod 755 /var/log/journal fi - +debconf-set-selections <$FAI_ROOT/etc/grub.d/40_custom </dev/null && [[ $(iw dev) ]]; then + chroot $FAI_ROOT bash </etc/initramfs-tools/modules -update-initramfs -u -k all + # allow networkmanager to manage interfaces + #https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1638842 + touch $target/etc/NetworkManager/conf.d/10-globally-managed-devices.conf + # in a default desktop install, it looks like netplan creates this file under + # run/NetworkManager/conf.d in early boot. + + # By default, dns=default is set in etiona, and dns is just broken. + # Maybe with resolvconf it would work, but theres no need for that. + # https://wiki.gnome.org/Projects/NetworkManager/DNS + cat >$target/etc/NetworkManager/conf.d/99-iank.conf <<'EOF' +[main] +dns=systemd-resolved +EOF + if [[ $HOSTNAME == frodo ]]; then + cat > $target/etc/network/interfaces <<-EOF +# generated by FAI +auto lo eth0 +iface lo inet loopback +iface eth0 inet static +address 10.3.0.2/16 +EOF + fi + +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 + +if ifclass LINODE; then + mkdir -p $target/etc/initramfs-tools/conf.d + cat >$target/etc/initramfs-tools/conf.d/mine < $target/etc/network/interfaces <<-EOF +# generated by FAI +auto lo eth0 +iface lo inet loopback +iface eth0 inet dhcp +# for the standard network config, uncomment this and comment the lines after it. +#iface eth0 inet6 auto + +iface eth0 inet6 static +# this is really a /128. it seems like we need to assign it for ipv6 to work. +address 2600:3c00::f03c:91ff:fe6d:baf8/64 +gateway fe80::1 + +iface eth0 inet6 static +# from a requested /64 pool +address 2600:3c00:e000:280::2/64 +EOF + fi + +fi + +# I prefer to stick with ifup/down for now. a. networkd is not in its +# own package, so cant use in other init systems. b. it works fine. +chroot $FAI_ROOT bash </dev/null; then + usermod -aG $g iank fi +done + +if getent group systemd-journal >/dev/null; then + usermod -aG systemd-journal iank fi +EOFOUTER + +rm -f $target/etc/resolv.conf +ln -s ../run/systemd/resolve/stub-resolv.conf $target/etc/resolv.conf +# needed for bitfolk image +if [[ -e /a/bin/fai/fai-wrapper ]]; then + systemctl enable systemd-resolved + systemctl start systemd-resolved +fi + # reading through the groups that iank is in but user2 isn't,