X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai%2Fconfig%2Fscripts%2FGRUB_PC%2F11-iank;h=8a9eab792b8ebd230366dae0b40df959de60ff2c;hb=61c3a58fcfadab7c333487f887b3f9f3a53bb93a;hp=d8fb48dc5120cf49dbfe8dd2c5ec3bb0916329c7;hpb=cef9b6ede5c1e028bed1b4dc7895f5dfa121ad6b;p=automated-distro-installer diff --git a/fai/config/scripts/GRUB_PC/11-iank b/fai/config/scripts/GRUB_PC/11-iank index d8fb48d..8a9eab7 100755 --- a/fai/config/scripts/GRUB_PC/11-iank +++ b/fai/config/scripts/GRUB_PC/11-iank @@ -24,9 +24,9 @@ fi # -r = recursive # -i = ignore non-matching class warnings, always exit 0 # -B = no backup files -fcopy -riBM /boot -# this is also done by FABASE/10-misc by default. -fcopy -riBM /root +fcopy -riB /boot +# this is also done by FABASE/10-misc by default (without B) +fcopy -riB /root src=$FAI/distro-install-common/shadow @@ -38,18 +38,21 @@ if [[ ! -e $dst && -e $src ]]; then fi $FAI/distro-install-common/end -if ifclass VOL_STRETCH_BOOTSTRAP; then - fcopy -riM /etc/systemd/system - chroot $FAI_ROOT bash <<'EOFOUTER' -systemctl enable fai_check.service -EOFOUTER - exit 0 # avoid unnecessary stuff in bootstrap vol -fi + +### begin sources install + updates # these get copied in an earlier stage by fai, but leaving it here since # 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 ||: 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. @@ -67,7 +70,7 @@ if [[ ! -r $f ]] || (( $(( $(date +%s) - $(stat -c %Y $f ) )) > 60*60*2 )); then $ROOTCMD apt-get update done fi - +### end sources install + updates #### misc configurations @@ -82,58 +85,15 @@ kexec-tools kexec-tools/load_kexec boolean false EOF apt-get install -y pxe-kexec - -#### 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 + EOFOUTER -if [[ $FAI_ACTION != dirinstall ]]; then +if [[ $FAI_ACTION != dirinstall ]] && ! ifclass NOCRYPT; 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. @@ -143,6 +103,14 @@ if [[ $FAI_ACTION != dirinstall ]]; then else speed=115200 cmdline="rd.luks.crypttab=no net.ifnames=0 console=ttyS0,${speed}n8 console=tty0" + case $HOSTNAME in + # https://wiki.archlinux.org/index.php/Solid_state_drive#Resolving_NCQ_errors + # evo-870 doesnt get along well with d16 with etiona. + # the number is based on dmesg errors + kd) cmdline+=" libata.force=4.00:noncq" ;; + # 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 && [[ $(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 @@ -241,9 +218,6 @@ EOF 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 < $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 @@ -263,3 +260,73 @@ systemctl mask systemd-networkd.socket systemd-networkd networkd-dispatcher syst EOF ##### end network setup ##### + + +if ifclass VOL_BUSTER_BOOTSTRAP; then + fcopy -riM /etc/systemd/system + chroot $FAI_ROOT bash <<'EOFOUTER' +systemctl enable fai_check.service +EOFOUTER + exit 0 # avoid unnecessary stuff in bootstrap vol +fi + + + +## 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 +for g in cdrom floppy audio dip video plugdev netdev adm sudo; 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 +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