functions.sh
122 lines
| 3.4 KiB
| application/x-sh
|
BashLexer
drtyhlpr
|
r94 | # This file contains utility functions used by rpi23-gen-image.sh | ||
Jan Wagner
|
r67 | |||
Filip Pytloun
|
r56 | cleanup (){ | ||
set +x | ||||
set +e | ||||
Unknown
|
r503 | |||
# Remove exports from nexmon | ||||
unset KERNEL | ||||
unset ARCH | ||||
unset SUBARCH | ||||
unset CCPLUGIN | ||||
unset ZLIBFLATE | ||||
unset Q | ||||
unset NEXMON_SETUP_ENV | ||||
unset HOSTUNAME | ||||
unset PLATFORMUNAME | ||||
Jan Wagner
|
r67 | |||
# Identify and kill all processes still using files | ||||
Filip Pytloun
|
r59 | echo "killing processes using mount point ..." | ||
Jan Wagner
|
r82 | fuser -k "${R}" | ||
Filip Pytloun
|
r59 | sleep 3 | ||
Jan Wagner
|
r82 | fuser -9 -k -v "${R}" | ||
Jan Wagner
|
r67 | |||
Jan Wagner
|
r78 | # Clean up temporary .password file | ||
if [ -r ".password" ] ; then | ||||
shred -zu .password | ||||
fi | ||||
Jan Wagner
|
r67 | # Clean up all temporary mount points | ||
Filip Pytloun
|
r56 | echo "removing temporary mount points ..." | ||
Jan Wagner
|
r82 | umount -l "${R}/proc" 2> /dev/null | ||
umount -l "${R}/sys" 2> /dev/null | ||||
umount -l "${R}/dev/pts" 2> /dev/null | ||||
Filip Pytloun
|
r56 | umount "$BUILDDIR/mount/boot/firmware" 2> /dev/null | ||
umount "$BUILDDIR/mount" 2> /dev/null | ||||
Jan Wagner
|
r77 | cryptsetup close "${CRYPTFS_MAPPING}" 2> /dev/null | ||
Vincent Knecht
|
r66 | losetup -d "$ROOT_LOOP" 2> /dev/null | ||
losetup -d "$FRMW_LOOP" 2> /dev/null | ||||
Filip Pytloun
|
r56 | trap - 0 1 2 3 6 | ||
} | ||||
chroot_exec() { | ||||
# Exec command in chroot | ||||
Unknown
|
r420 | LANG=C LC_ALL=C DEBIAN_FRONTEND=noninteractive chroot "${R}" "$@" | ||
Filip Pytloun
|
r56 | } | ||
Jan Wagner
|
r67 | |||
Petter Reinholdtsen
|
r174 | as_nobody() { | ||
# Exec command as user nobody | ||||
Unknown
|
r420 | sudo -E -u nobody LANG=C LC_ALL=C "$@" | ||
Petter Reinholdtsen
|
r174 | } | ||
Jan Wagner
|
r67 | install_readonly() { | ||
# Install file with user read-only permissions | ||||
Unknown
|
r420 | install -o root -g root -m 644 "$@" | ||
Jan Wagner
|
r67 | } | ||
install_exec() { | ||||
# Install file with root exec permissions | ||||
Unknown
|
r420 | install -o root -g root -m 744 "$@" | ||
Jan Wagner
|
r67 | } | ||
drtyhlpr
|
r117 | |||
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}" | ||||
} | ||||
drtyhlpr
|
r142 | |||
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 }') | ||||
Gérard Vidal
|
r627 | |||
r728 | if [ "$RELEASE" = "stretch" ] || [ "$RELEASE" = "buster" ] || [ "$RELEASE" = "bullseye" ] ; then | |||
drtyhlpr
|
r142 | chroot_exec apt-get -q -y --no-install-recommends install ${COMPILER_PACKAGES} | ||
r728 | elif [ "$RELEASE" = "buster" ] || [ "$RELEASE" = "bullseye" ] ; then | |||
r219 | chroot_exec apt-get -q -y --allow-unauthenticated --no-install-recommends install ${COMPILER_PACKAGES} | |||
drtyhlpr
|
r142 | fi | ||
Gérard Vidal
|
r627 | |||
drtyhlpr
|
r142 | fi | ||
} | ||||
chroot_remove_cc() { | ||||
# Remove c/c++ build environment from the chroot | ||||
Unknown
|
r420 | if [ -n "${COMPILER_PACKAGES}" ] ; then | ||
drtyhlpr
|
r142 | chroot_exec apt-get -qq -y --auto-remove purge ${COMPILER_PACKAGES} | ||
COMPILER_PACKAGES="" | ||||
fi | ||||
} | ||||
Unknown
|
r501 | |||
# https://serverfault.com/a/682849 - converts e.g. /24 to 255.255.255.0 | ||||
cdr2mask () | ||||
{ | ||||
# Number of args to shift, 255..255, first non-255 byte, zeroes | ||||
set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0 | ||||
[ $1 -gt 1 ] && shift $1 || shift | ||||
echo ${1-0}.${2-0}.${3-0}.${4-0} | ||||
drtyhlpr
|
r530 | } | ||
Unknown
|
r503 | # GPL v2.0 - #https://github.com/sakaki-/bcmrpi3-kernel-bis/blob/master/conform_config.sh | ||
set_kernel_config() { | ||||
# flag as $1, value to set as $2, config must exist at "./.config" | ||||
TGT="CONFIG_${1#CONFIG_}" | ||||
REP="${2}" | ||||
if grep -q "^${TGT}[^_]" .config; then | ||||
sed -i "s/^\(${TGT}=.*\|# ${TGT} is not set\)/${TGT}=${REP}/" .config | ||||
else | ||||
echo "${TGT}"="${2}" >> .config | ||||
fi | ||||
} | ||||
drtyhlpr
|
r530 | |||
Unknown
|
r503 | # unset kernel config parameter | ||
unset_kernel_config() { | ||||
# unsets flag with the value of $1, config must exist at "./.config" | ||||
TGT="CONFIG_${1#CONFIG_}" | ||||
sed -i "s/^${TGT}=.*/# ${TGT} is not set/" .config | ||||
r728 | } | |||