1
0
Fork 0
This repository has been archived on 2023-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
raspberrypi-build/scripts/common.sh

57 lines
1.2 KiB
Bash
Raw Normal View History

2017-07-02 03:09:19 +00:00
unmount() {
2016-04-11 07:21:07 +01:00
if [ -z "$1" ]; then
DIR=$PWD
else
DIR=$1
fi
while mount | grep -q "$DIR"; do
local LOCS
LOCS=$(mount | grep "$DIR" | cut -f 3 -d ' ' | sort -r)
2016-04-11 07:21:07 +01:00
for loc in $LOCS; do
umount "$loc"
2016-04-11 07:21:07 +01:00
done
done
}
2016-05-04 15:51:41 +01:00
2017-07-02 03:09:19 +00:00
unmount_image() {
2016-05-04 15:51:41 +01:00
sync
sleep 1
local LOOP_DEVICES
LOOP_DEVICES=$(losetup -j "${1}" | cut -f1 -d':')
for LOOP_DEV in ${LOOP_DEVICES}; do
if [ -n "${LOOP_DEV}" ]; then
local MOUNTED_DIR
MOUNTED_DIR=$(mount | grep "$(basename "${LOOP_DEV}")" | head -n 1 | cut -f 3 -d ' ')
if [ -n "${MOUNTED_DIR}" ] && [ "${MOUNTED_DIR}" != "/" ]; then
unmount "$(dirname "${MOUNTED_DIR}")"
fi
sleep 1
losetup -d "${LOOP_DEV}"
2016-05-27 11:54:56 +01:00
fi
done
2016-05-04 15:51:41 +01:00
}
2016-04-11 07:21:07 +01:00
on_chroot() {
local proc_fs="$ROOTFS_DIR/proc"
local dev_fs="$ROOTFS_DIR/dev"
local devpts_fs="$ROOTFS_DIR/dev/pts"
2017-07-02 21:12:04 +00:00
local sys_fs="$ROOTFS_DIR/sys"
2017-07-02 21:14:26 +00:00
mount --bind /dev "$dev_fs"
2017-07-02 21:13:12 +00:00
mount --bind /dev/pts "$devpts_fs"
2017-07-02 21:14:26 +00:00
mount -t proc proc "$proc_fs"
mount --bind /sys "$sys_fs"
2016-04-11 07:21:07 +01:00
2017-07-02 20:45:51 +00:00
capsh --drop=cap_setfcap "--chroot=$ROOTFS_DIR/" -- "$@"
2017-07-02 20:49:33 +00:00
2017-07-02 21:13:55 +00:00
umount "$sys_fs"
2017-07-02 20:49:33 +00:00
umount "$proc_fs"
umount "$devpts_fs"
2017-07-02 21:10:45 +00:00
umount "$dev_fs"
2016-04-11 07:21:07 +01:00
}
2017-07-02 13:08:18 +00:00
export -f unmount
export -f unmount_image
export -f on_chroot