functions.sh
114 lines
| 3.2 KiB
| application/x-sh
|
BashLexer
Unknown
|
r411 | #!/bin/sh | |
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
|
r476 | ||
# 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
|
r413 | 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
|
r413 | 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
|
r413 | install -o root -g root -m 644 "$@" | |
Jan Wagner
|
r67 | } | |
install_exec() { | |||
# Install file with root exec permissions | |||
Unknown
|
r413 | 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 }') | |||
Unknown
|
r519 | # Install COMPILER_PACKAGES in chroot - NEVER do "${COMPILER_PACKAGES}" -> breaks uboot | |
Unknown
|
r518 | chroot_exec apt-get -q -y --allow-unauthenticated --no-install-recommends install ${COMPILER_PACKAGES} | |
drtyhlpr
|
r142 | fi | |
} | |||
chroot_remove_cc() { | |||
# Remove c/c++ build environment from the chroot | |||
Unknown
|
r412 | if [ -n "${COMPILER_PACKAGES}" ] ; then | |
Unknown
|
r519 | chroot_exec apt-get -qq -y --auto-remove purge ${COMPILER_PACKAGES} | |
drtyhlpr
|
r142 | COMPILER_PACKAGES="" | |
fi | |||
} | |||
Unknown
|
r494 | # GPL v2.0 - #https://github.com/sakaki-/bcmrpi3-kernel-bis/blob/master/conform_config.sh | |
Unknown
|
r346 | set_kernel_config() { | |
Unknown
|
r400 | # flag as $1, value to set as $2, config must exist at "./.config" | |
Unknown
|
r458 | TGT="CONFIG_${1#CONFIG_}" | |
Unknown
|
r411 | REP="${2}" | |
Unknown
|
r400 | if grep -q "^${TGT}[^_]" .config; then | |
sed -i "s/^\(${TGT}=.*\|# ${TGT} is not set\)/${TGT}=${REP}/" .config | |||
else | |||
Unknown
|
r430 | echo "${TGT}"="${2}" >> .config | |
Unknown
|
r400 | fi | |
Unknown
|
r346 | } | |
Unknown
|
r494 | # unset kernel config parameter | |
Unknown
|
r346 | unset_kernel_config() { | |
Unknown
|
r400 | # unsets flag with the value of $1, config must exist at "./.config" | |
Unknown
|
r412 | TGT="CONFIG_${1#CONFIG_}" | |
Unknown
|
r400 | sed -i "s/^${TGT}=.*/# ${TGT} is not set/" .config | |
Unknown
|
r346 | } | |
Unknown
|
r494 | ||
# 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} | |||
} |