#!/bin/bash -x # This file is part of Ian Kelling's automated-distro-installer # Copyright (C) 2024 Ian Kelling # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 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 m() { printf "%s\n" "$*"; "$@"; } fcopy -riB /root # in bullseye, installing systemd-resolved says: Converting # /etc/resolv.conf to a symlink to # /run/systemd/resolve/stub-resolv.conf... which breaks # resolution. This happens to be the first script we install a package # after that. This should do nothing in a fai-wrapper situation. if [[ ! -s $target/etc/resolv.conf ]]; then m ls -la $target/etc/resolv.conf ||: # Keep the symlink in place, systemd-resolved should change the file # when it runs. mkdir -p $target/run/systemd/resolve if [[ ! -s /etc/resolv.conf ]] && ! host google.com; then echo "ERROR: empty resolv.conf & failed dns resolution. exiting 1" >&2 exit 1 fi cat /etc/resolv.conf >$target/etc/resolv.conf fi #### misc configurations chroot $FAI_ROOT bash <<'EOFOUTER' set -xe 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 <>/etc/default/grub sed -ri 's/^ *GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="$cmdline"/' /etc/default/grub sed -ri 's/^ *GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub sed -ri 's/^ *GRUB_TIMEOUT=.*/GRUB_TIMEOUT=6/' /etc/default/grub # on xenial, no grub is displayed at all. fix that. # found just by noticing this in the config file, and a # warning about it in error.log sed -i '/^ *GRUB_HIDDEN_TIMEOUT/d' /etc/default/grub if type -P update-grub2 &>/dev/null; then update-grub2 else update-grub fi EOF # I prefer to stick with ifup/down or networkmanager: networkd is not in its # own package, so cant use in other init systems. b. it works fine. chroot $FAI_ROOT bash <