#!/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 # -r = recursive # -i = ignore non-matching class warnings, always exit 0 # -B = no backup files fcopy -riBM /boot chpw() { # generating a hashed password: # under debian, you can do # mkpasswd -m sha-512 -s >/q/root/shadow/standard # On arch, best seems to be copy your shadow file to a temp location, # then passwd, get out the new pass, then copy the shadow file back. user=$1 pwfile=$2 if [[ $pwfile && -e $pwfile ]]; then printf "$user:" | cat - "$pwfile" | $ROOTCMD chpasswd -e else echo "$0: warning: no pw set for $user" >&2 fi } chpw root $FAI/distro-install-common/shadow/community0p #### misc configurations chroot $FAI_ROOT bash <<'EOFOUTER' 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 <$FAI_ROOT/etc/grub.d/40_custom </dev/null; then update-grub2 else update-grub fi EOF cat > $target/etc/network/interfaces <<-EOF # generated by FAI auto lo eth0 iface lo inet loopback iface eth0 inet dhcp iface eth0 inet6 auto source-directory /etc/network/interfaces.d 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. 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 source-directory /etc/network/interfaces.d 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, for g in plugdev audio video cdrom; do $ROOTCMD usermod -a -G $g user2 done