static usb ethnet addresses
[automated-distro-installer] / fai / config / scripts / LAST / 50-misc
1 #! /bin/bash
2
3 # copyright Thomas Lange 2001-2016, lange@debian.org
4
5 error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
6
7 # remove crypt password from format.log
8 if [ -f $LOGDIR/format.log ]; then
9 perl -i -pane "s/Executing: yes '.+?' \| cryptsetup/Executing: yes 'XXXXXXXXXXXXX' | cryptsetup/" $LOGDIR/format.log
10 fi
11
12 if [ "$FAI_ACTION" = "dirinstall" -o $do_init_tasks -eq 0 ] ; then
13 :
14 else
15 # check if mdadm has been forgotten
16 if grep -q active /proc/mdstat 2>/dev/null; then
17 if [ ! -d $target/etc/mdadm ]; then
18 echo ERROR: Found Software RAID, but the mdadm package was not installed
19 error=1
20 fi
21 fi
22
23 if [ -f $target/etc/crypttab ] && [ ! -f $target/sbin/cryptsetup ]; then
24 echo ERROR: Encrypted devices used, but the crypsetup package was not installed.
25 echo ERROR: You want to add cryptsetup-initramfs or dracut to some package_config file.
26 fi
27
28 # note, if we used dm for crypt, not lvm, so would givee false positive. todo, send patch to fix
29 usedm=$(dmsetup ls 2>/dev/null | egrep -v '^live-rw|^live-base|^No devices found' | wc -l)
30 if [ $usedm -ne 0 ]; then
31 if [ ! -d $target/etc/lvm ]; then
32 echo ERROR: Found lvm devices, but the lvm2 package was not installed
33 error=1
34 fi
35 fi
36 fi
37
38 # remove backup files from cfengine, but only if cfengine is installed
39 if [ -x /usr/sbin/cfagent ] || [ -x $target/usr/sbin/cfagent ] ; then
40 dirs="root etc var"
41 for path in $dirs; do
42 find $target/$path -maxdepth 20 -name \*.cfedited -o -name \*.cfsaved | xargs -r rm
43 done
44 fi
45
46 [ "$FAI_DEBMIRROR" ] &&
47 ainsl /etc/fstab "#$FAI_DEBMIRROR $MNTPOINT nfs ro 0 0"
48
49 # set bios clock
50 if [ $do_init_tasks -eq 1 ] ; then
51 case "$UTC" in
52 no|"") hwopt="--localtime" ;;
53 yes) hwopt="--utc" ;;
54 esac
55 hwclock $hwopt --systohc || true
56 fi
57
58 # Make sure everything is configured properly
59 if ifclass DEBIAN || ifclass UBUNTU; then
60 $ROOTCMD apt-get -f install -y
61 fi
62
63 if [ $FAI_ACTION = "install" ]; then
64 lskernels=$(echo $target/boot/vmlinu*)
65 if [ ! -f ${lskernels%% *} ]; then
66 echo "ERROR: No kernel was installed. Have a look at shell.log" >&2
67 error=1
68 fi
69 fi
70
71 # copy sources.list
72 fcopy -iSM /etc/apt/sources.list
73
74
75 setrel() {
76
77 # if release is not set, try to determine it
78
79 if [ -n "$release" ]; then
80 return
81 fi
82 if [ ! -f $target/etc/os-release ]; then
83 return
84 fi
85
86 dists="jessie stretch buster bullseye bookworm trixie forky noble jammy focal bionic xenial trusty aramo nabia etiona"
87 for d in $dists; do
88 if grep -iq $d $target/etc/os-release; then
89 release=$d
90 break
91 fi
92 done
93 }
94
95 # if installation was done from CD, replace useless sources.list
96 setrel
97 if [ -f $target/etc/apt/sources.list ] && [ -n "$release" ]; then
98 if grep -q 'file generated by fai-cd' $target/etc/apt/sources.list; then
99 echo "Create new sources.list for $release"
100 cat <<EOF > $target/etc/apt/sources.list
101 deb $apt_cdn/debian $release main contrib non-free non-free-firmware
102 deb $security_cdn/debian-security ${secsuite} main contrib non-free non-free-firmware
103 #deb [trusted=yes] http://fai-project.org/download $release koeln
104 EOF
105 fi
106 # if the package fai-server was installed, enable the project's repository
107 if dpkg-query --admindir=$target/var/lib/dpkg -W fai-server >/dev/null 2>&1; then
108 fai-sed '/fai-project.org/s/^#//' /etc/apt/sources.list
109 fi
110 fi
111
112 # install default sources.list for Debian based distributions
113 if [ -d $target/etc/apt ] && [ ! -f $target/etc/apt/sources.list ]; then
114 fcopy -Svc DEBIAN_DEFAULT /etc/apt/sources.list
115 fi
116
117 # older releases do not have the non-free-firmware section
118 if [ -n "$release" ] && [[ "buster bullseye" =~ "$release" ]]; then
119 sed -i -e 's/non-free-firmware//g' $target/etc/apt/sources.list
120 fi
121
122 # for ARM architecture, we may need the kernel and initrd to boot or flash the device
123 if ifclass ARM64; then
124 cp -pv $target/boot/vmlinuz* $target/boot/initrd* $FAI_RUNDIR
125 fi
126
127 exit $error