export-noobs/prerun.sh: Use nested mountpoint
While it seems elegant and intuitive to use separate bootfs and rootfs mountpoints for compressing the partitions, doing so violates a precondition of unmount_image that they be mounted as a tree. This causes the image to not be properly unmounted and detached. A better solution might be to pack up the previous stage's chroot directory, but that rework can wait for the time being. scripts/common.sh: Output device name correctly A micplaced ) in unmount_image caused the loop device to be incorrectly identified, resulting in a fair bit of chaos trying to unmount other filesystems on /dev/mapper devices. Such as / on a LUKS-encrypted installation, for example. The unmount will fail as it should and build.sh will abort the build without any cleanup. Best to avoid that. These changes close RPi-Distro/pi-gen#19
This commit is contained in:
parent
2e24801fe3
commit
7969dfd5a1
|
@ -14,13 +14,12 @@ BOOT_DEV=/dev/mapper/${LOOP_DEV}p1
|
||||||
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
|
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
|
||||||
|
|
||||||
mkdir -p ${STAGE_WORK_DIR}/rootfs
|
mkdir -p ${STAGE_WORK_DIR}/rootfs
|
||||||
mkdir -p ${STAGE_WORK_DIR}/bootfs
|
|
||||||
mkdir -p ${NOOBS_DIR}
|
mkdir -p ${NOOBS_DIR}
|
||||||
|
|
||||||
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
|
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
|
||||||
mount $BOOT_DEV ${STAGE_WORK_DIR}/bootfs
|
mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot
|
||||||
|
|
||||||
tar -I pxz -C ${STAGE_WORK_DIR}/bootfs -cpf ${NOOBS_DIR}/boot.tar.xz .
|
tar -I pxz -C ${STAGE_WORK_DIR}/rootfs/boot -cpf ${NOOBS_DIR}/boot.tar.xz .
|
||||||
tar -I pxz -C ${STAGE_WORK_DIR}/rootfs -cpf ${NOOBS_DIR}/root.tar.xz .
|
tar -I pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz .
|
||||||
|
|
||||||
unmount_image ${IMG_FILE}
|
unmount_image ${IMG_FILE}
|
||||||
|
|
|
@ -54,7 +54,7 @@ unmount_image(){
|
||||||
sleep 1
|
sleep 1
|
||||||
local LOOP_DEV=$(losetup -j ${1} | cut -f1 -d':')
|
local LOOP_DEV=$(losetup -j ${1} | cut -f1 -d':')
|
||||||
if [ -n "${LOOP_DEV}" ]; then
|
if [ -n "${LOOP_DEV}" ]; then
|
||||||
local MOUNTED_DIR=$(mount | grep $(basename ${LOOP_DEV} | head -n 1 | cut -f 3 -d ' '))
|
local MOUNTED_DIR=$(mount | grep $(basename ${LOOP_DEV}) | head -n 1 | cut -f 3 -d ' ')
|
||||||
if [ -n "${MOUNTED_DIR}" ]; then
|
if [ -n "${MOUNTED_DIR}" ]; then
|
||||||
unmount $(dirname ${MOUNTED_DIR})
|
unmount $(dirname ${MOUNTED_DIR})
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue
Block a user