X-Git-Url: https://iankelling.org/git/?p=automated-distro-installer;a=blobdiff_plain;f=fai%2Fconfig%2Fscripts%2FGRUB_PC%2F11-iank;h=ecc093e09153a1c6117d67358b58087c797bdbc4;hp=b0392278c97b34e6976d5323805926e8207583ea;hb=bfd6bbd3a188aac6871f8b5e1116a0979682d52b;hpb=45a2a286083772abc0688e663a6ecc68af0a8d0e diff --git a/fai/config/scripts/GRUB_PC/11-iank b/fai/config/scripts/GRUB_PC/11-iank index b039227..ecc093e 100755 --- a/fai/config/scripts/GRUB_PC/11-iank +++ b/fai/config/scripts/GRUB_PC/11-iank @@ -19,25 +19,15 @@ if [[ -e /a/bin/fai/fai-wrapper ]]; then } 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 <$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. @@ -78,63 +71,30 @@ if [[ ! -r $f ]] || (( $(( $(date +%s) - $(stat -c %Y $f ) )) > 60*60*2 )); then $ROOTCMD apt-get update done fi +### end sources install + updates -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 - +#### 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 <$target/etc/systemd/system/myncq.service <<'EOF' +[Unit] +Description=fix ncq errors + +[Service] +Type=oneshot +ExecStart=/usr/bin/myncq +TimeoutStartSec=20 + +[Install] +# https://www.enricozini.org/blog/2017/debian/systemd-07-devices/ +WantedBy=dev-disk-by\x2did-ata\x2dSamsung_SSD_870_QVO_8TB_S5VUNG0N900656V.device +EOF + + chroot $FAI_ROOT 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 fi cat >$FAI_ROOT/etc/grub.d/40_custom </dev/null; then + update-grub2 +else + update-grub +fi -# reading through the groups that iank is in but user2 isn't, -for g in plugdev audio video cdrom; do - $ROOTCMD usermod -a -G $g user2 -done +EOF +fi ##### end != dirinstall && != NOCRYPT -## begin network setup +###### begin network setup #### # use old names. the idea of them changing between boots has never # happened to me and I usually only have 1 wired or other type. @@ -197,8 +191,31 @@ done # https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ ln -sf /dev/null $target/etc/systemd/network/99-default.link + +# bitfolk installer handles the rest +case $HOSTNAME in + bk|je) exit 0 ;; +esac + + +# bug fix, somewhere between t9's xorg 1.19.6 +# and 1.20.1-3ubuntu2 +# xserver-xorg-video-nouveau 1:1.0.15-3 +# xorg stopped load nouveau +# https://www.linuxquestions.org/questions/slackware-14/kernel-modules-conflicting-with-nouveau-driver-4175623867/ +# https://nouveau.freedesktop.org/InstallNouveau.html +if lspci|grep -q 'GeForce GTX 6[0-9][0-9]\]'; then + mkdir -p $target/etc/X11/xorg.conf.d/ + cat >$target/etc/X11/xorg.conf.d/10-nouveau.conf <<'EOF' +Section "Device" +Identifier "Device0" +Driver "nouveau" +EndSection +EOF +fi + # use networkmanager if this host has wireless. -if [[ $(iw dev) ]]; then +if type -p iw &>/dev/null && [[ $(iw dev) ]]; then chroot $FAI_ROOT bash < $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 @@ -226,16 +252,17 @@ iface eth0 inet dhcp iface eth0 inet6 auto EOF -# previously had an else condition after -#elif ifclass VM || ifclass LINODE; then -# 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. + # 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 @@ -249,6 +276,28 @@ if ifclass LINODE; then # /usr/share/initramfs-tools/scripts/functions IP=$linode_ip::$linode_gw:255.255.255.0::eth0:off EOF + + + if [[ $HOSTNAME == li ]]; then + + cat > $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 @@ -258,5 +307,73 @@ systemctl disable systemd-networkd.socket systemd-networkd networkd-dispatcher s systemctl mask systemd-networkd.socket systemd-networkd networkd-dispatcher systemd-networkd-wait-online EOF +##### end network setup ##### + + +if ifclass VOL_BULLSEYE_BOOTSTRAP; then + fcopy /etc/systemd/system/faicheck.service + chroot $FAI_ROOT bash <<'EOFOUTER' +systemctl enable faicheck.service +EOFOUTER + exit 0 # avoid unnecessary stuff in bootstrap vol +fi + -## end network setup +## misc settings +chroot $FAI_ROOT bash <<'EOFOUTER' +#### 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 debian groups (jessie through buster) + adm, sudo, root, admin +for g in cdrom floppy audio dip video plugdev netdev adm sudo admin; do + if getent group $g >/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, +for g in plugdev audio video cdrom; do + $ROOTCMD usermod -a -G $g user2 +done