017d3a4341
If proc is mounted in rootfs (e.g., via chroot), rsync will try copying kcore when permitted to cross file system boundaries.
91 lines
1.9 KiB
Text
91 lines
1.9 KiB
Text
log (){
|
|
date +"[%T] $@" | tee -a ${LOG_FILE}
|
|
}
|
|
export -f log
|
|
|
|
bootstrap(){
|
|
local ARCH=$(dpkg --print-architecture)
|
|
|
|
export http_proxy=${APT_PROXY}
|
|
|
|
if [ "$ARCH" != "armhf" ]; then
|
|
local BOOTSTRAP_CMD=qemu-debootstrap
|
|
else
|
|
local BOOTSTRAP_CMD=debootstrap
|
|
fi
|
|
|
|
${BOOTSTRAP_CMD} --components=main,contrib,non-free \
|
|
--arch armhf\
|
|
--no-check-gpg \
|
|
$1 $2 $3
|
|
}
|
|
export -f bootstrap
|
|
|
|
copy_previous(){
|
|
if [ ! -d ${PREV_ROOTFS_DIR} ]; then
|
|
echo "Previous stage rootfs not found"
|
|
false
|
|
fi
|
|
mkdir -p ${ROOTFS_DIR}
|
|
rsync -aHAXx ${PREV_ROOTFS_DIR}/ ${ROOTFS_DIR}/
|
|
}
|
|
export -f copy_previous
|
|
|
|
unmount(){
|
|
if [ -z "$1" ]; then
|
|
DIR=$PWD
|
|
else
|
|
DIR=$1
|
|
fi
|
|
|
|
while mount | grep -q $DIR; do
|
|
local LOCS=`mount | grep $DIR | cut -f 3 -d ' ' | sort -r`
|
|
for loc in $LOCS; do
|
|
umount $loc
|
|
done
|
|
done
|
|
}
|
|
export -f unmount
|
|
|
|
unmount_image(){
|
|
sync
|
|
sleep 1
|
|
local LOOP_DEV=$(losetup -j ${1} | cut -f1 -d':')
|
|
if [ -n "${LOOP_DEV}" ]; then
|
|
local MOUNTED_DIR=$(mount | grep $(basename ${LOOP_DEV}) | head -n 1 | cut -f 3 -d ' ')
|
|
if [ -n "${MOUNTED_DIR}" ]; then
|
|
unmount $(dirname ${MOUNTED_DIR})
|
|
fi
|
|
sleep 1
|
|
kpartx -ds ${LOOP_DEV}
|
|
losetup -d ${LOOP_DEV}
|
|
fi
|
|
}
|
|
export -f unmount_image
|
|
|
|
on_chroot() {
|
|
if ! mount | grep -q `realpath ${ROOTFS_DIR}/proc`; then
|
|
mount -t proc proc ${ROOTFS_DIR}/proc
|
|
fi
|
|
|
|
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev`; then
|
|
mount --bind /dev ${ROOTFS_DIR}/dev
|
|
fi
|
|
|
|
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev/pts`; then
|
|
mount --bind /dev/pts ${ROOTFS_DIR}/dev/pts
|
|
fi
|
|
|
|
if ! mount | grep -q `realpath ${ROOTFS_DIR}/sys`; then
|
|
mount --bind /sys ${ROOTFS_DIR}/sys
|
|
fi
|
|
|
|
chroot ${ROOTFS_DIR}/ "$@"
|
|
}
|
|
export -f on_chroot
|
|
|
|
update_issue() {
|
|
local GIT_HASH=$(git rev-parse HEAD)
|
|
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using pi-gen, https://github.com/RPi-Distro/pi-gen, ${GIT_HASH}, ${1}" > ${ROOTFS_DIR}/etc/rpi-issue
|
|
}
|
|
export -f update_issue
|