#! /bin/bash # copyright Thomas Lange 2001-2016, lange@debian.org error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code # remove crypt password from format.log if [ -f $LOGDIR/format.log ]; then perl -i -pane "s/Executing: yes '.+?' \| cryptsetup/Executing: yes 'XXXXXXXXXXXXX' | cryptsetup/" $LOGDIR/format.log fi if [ "$FAI_ACTION" = "dirinstall" -o $do_init_tasks -eq 0 ] ; then : else # check if mdadm has been forgotten if grep -q active /proc/mdstat 2>/dev/null; then if [ ! -d $target/etc/mdadm ]; then echo ERROR: Found Software RAID, but the mdadm package was not installed error=1 fi fi if [ -f $target/etc/crypttab ] && [ ! -f $target/sbin/cryptsetup ]; then echo ERROR: Encrypted devices used, but the crypsetup package was not installed. echo ERROR: You want to add cryptsetup-initramfs or dracut to some package_config file. fi usedm=$(dmsetup ls 2>/dev/null | egrep -v '^live-rw|^live-base|^No devices found' | wc -l) if [ $usedm -ne 0 ]; then if [ ! -d $target/etc/lvm ]; then echo ERROR: Found lvm devices, but the lvm2 package was not installed error=1 fi fi fi # remove backup files from cfengine, but only if cfengine is installed if [ -x /usr/sbin/cfagent ] || [ -x $target/usr/sbin/cfagent ] ; then dirs="root etc var" for path in $dirs; do find $target/$path -maxdepth 20 -name \*.cfedited -o -name \*.cfsaved | xargs -r rm done fi [ "$FAI_DEBMIRROR" ] && ainsl /etc/fstab "#$FAI_DEBMIRROR $MNTPOINT nfs ro 0 0" # set bios clock if [ $do_init_tasks -eq 1 ] ; then case "$UTC" in no|"") hwopt="--localtime" ;; yes) hwopt="--utc" ;; esac hwclock $hwopt --systohc || true fi # Make sure everything is configured properly if ifclass DEBIAN ; then $ROOTCMD apt-get -f install -y fi if [ $FAI_ACTION = "install" ]; then lskernels=$(echo $target/boot/vmlinu*) if [ ! -f ${lskernels%% *} ]; then echo "ERROR: No kernel was installed. Have a look at shell.log" >&2 error=1 fi fi # copy sources.list fcopy -iSM /etc/apt/sources.list setrel() { # if release is not set, try to determine it if [ -n "$release" ]; then return fi if [ ! -f $target/etc/os-release ]; then return fi dists="jessie stretch buster bullseye bookworm trixie forky noble jammy focal bionic xenial trusty" for d in $dists; do if grep -iq $d $target/etc/os-release; then release=$d break fi done } # if installation was done from CD, replace useless sources.list setrel if [ -f $target/etc/apt/sources.list ] && [ -n "$release" ]; then if grep -q 'file generated by fai-cd' $target/etc/apt/sources.list; then echo "Create new sources.list for $release" cat < $target/etc/apt/sources.list deb $apt_cdn/debian $release main contrib non-free non-free-firmware deb $security_cdn/debian-security ${secsuite} main contrib non-free non-free-firmware #deb [trusted=yes] http://fai-project.org/download $release koeln EOF fi # if the package fai-server was installed, enable the project's repository if dpkg-query --admindir=$target/var/lib/dpkg -W fai-server >/dev/null 2>&1; then fai-sed '/fai-project.org/s/^#//' /etc/apt/sources.list fi fi # install default sources.list for Debian based distributions if [ -d $target/etc/apt ] && [ ! -f $target/etc/apt/sources.list ]; then fcopy -Svc DEBIAN_DEFAULT /etc/apt/sources.list fi # older releases do not have the non-free-firmware section if [ -n "$release" ] && [[ "buster bullseye" =~ "$release" ]]; then sed -i -e 's/non-free-firmware//g' $target/etc/apt/sources.list fi # for ARM architecture, we may need the kernel and initrd to boot or flash the device if ifclass ARM64; then cp -pv $target/boot/vmlinuz* $target/boot/initrd* $FAI_RUNDIR fi exit $error