1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#! /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" ] || ! inside_nfsroot ; 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 scripts.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 <<EOF > $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
|