|
|
# This file contains utility functions used by rpi23-gen-image.sh
|
|
|
|
|
|
cleanup (){
|
|
|
set +x
|
|
|
set +e
|
|
|
|
|
|
# Identify and kill all processes still using files
|
|
|
echo "killing processes using mount point ..."
|
|
|
fuser -k "${R}"
|
|
|
sleep 3
|
|
|
fuser -9 -k -v "${R}"
|
|
|
|
|
|
# Clean up temporary .password file
|
|
|
if [ -r ".password" ] ; then
|
|
|
shred -zu .password
|
|
|
fi
|
|
|
|
|
|
# Clean up all temporary mount points
|
|
|
echo "removing temporary mount points ..."
|
|
|
umount -l "${R}/proc" 2> /dev/null
|
|
|
umount -l "${R}/sys" 2> /dev/null
|
|
|
umount -l "${R}/dev/pts" 2> /dev/null
|
|
|
umount "$BUILDDIR/mount/boot/firmware" 2> /dev/null
|
|
|
umount "$BUILDDIR/mount" 2> /dev/null
|
|
|
cryptsetup close "${CRYPTFS_MAPPING}" 2> /dev/null
|
|
|
losetup -d "$ROOT_LOOP" 2> /dev/null
|
|
|
losetup -d "$FRMW_LOOP" 2> /dev/null
|
|
|
trap - 0 1 2 3 6
|
|
|
}
|
|
|
|
|
|
chroot_exec() {
|
|
|
# Exec command in chroot
|
|
|
LANG=C LC_ALL=C DEBIAN_FRONTEND=noninteractive chroot "${R}" "$@"
|
|
|
}
|
|
|
|
|
|
as_nobody() {
|
|
|
# Exec command as user nobody
|
|
|
sudo -E -u nobody LANG=C LC_ALL=C "$@"
|
|
|
}
|
|
|
|
|
|
install_readonly() {
|
|
|
# Install file with user read-only permissions
|
|
|
install -o root -g root -m 644 "$@"
|
|
|
}
|
|
|
|
|
|
install_exec() {
|
|
|
# Install file with root exec permissions
|
|
|
install -o root -g root -m 744 "$@"
|
|
|
}
|
|
|
|
|
|
use_template () {
|
|
|
# Test if configuration template file exists
|
|
|
if [ ! -r "./templates/${CONFIG_TEMPLATE}" ] ; then
|
|
|
echo "error: configuration template ${CONFIG_TEMPLATE} not found"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
# Load template configuration parameters
|
|
|
. "./templates/${CONFIG_TEMPLATE}"
|
|
|
}
|
|
|
|
|
|
chroot_install_cc() {
|
|
|
# Install c/c++ build environment inside the chroot
|
|
|
if [ -z "${COMPILER_PACKAGES}" ] ; then
|
|
|
COMPILER_PACKAGES=$(chroot_exec apt-get -s install g++ make bc | grep "^Inst " | awk -v ORS=" " '{ print $2 }')
|
|
|
# Install COMPILER_PACKAGES in chroot
|
|
|
chroot_exec apt-get -q -y --allow-unauthenticated --no-install-recommends install "${COMPILER_PACKAGES}"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
chroot_remove_cc() {
|
|
|
# Remove c/c++ build environment from the chroot
|
|
|
if [ -n "${COMPILER_PACKAGES}" ] ; then
|
|
|
chroot_exec apt-get -qq -y --auto-remove purge "${COMPILER_PACKAGES}"
|
|
|
COMPILER_PACKAGES=""
|
|
|
fi
|
|
|
}
|
|
|
|