From 446f3e34c8ceb33dfe7bd38578f1cd6b6afe19da Mon Sep 17 00:00:00 2001 From: bamartin125 Date: Thu, 17 Aug 2023 10:24:47 -0500 Subject: [PATCH] Adds call to mknod if loop dev does not exist after call to `losetup -f` (#483) --- export-image/prerun.sh | 2 +- export-noobs/prerun.sh | 2 +- scripts/common | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/export-image/prerun.sh b/export-image/prerun.sh index 2d8e1bb..267bbe0 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -35,7 +35,7 @@ if [ "${NO_PRERUN_QCOW2}" = "0" ]; then echo "Creating loop device..." cnt=0 - until LOOP_DEV="$(losetup --show --find --partscan "$IMG_FILE")"; do + until ensure_next_loopdev && LOOP_DEV="$(losetup --show --find --partscan "$IMG_FILE")"; do if [ $cnt -lt 5 ]; then cnt=$((cnt + 1)) echo "Error in losetup. Retrying..." diff --git a/export-noobs/prerun.sh b/export-noobs/prerun.sh index 3858c66..6282836 100755 --- a/export-noobs/prerun.sh +++ b/export-noobs/prerun.sh @@ -11,7 +11,7 @@ rm -rf "${NOOBS_DIR}" echo "Creating loop device..." cnt=0 -until LOOP_DEV="$(losetup --show --find --partscan "$IMG_FILE")"; do +until ensure_next_loopdev && LOOP_DEV="$(losetup --show --find --partscan "$IMG_FILE")"; do if [ $cnt -lt 5 ]; then cnt=$((cnt + 1)) echo "Error in losetup. Retrying..." diff --git a/scripts/common b/scripts/common index 5731b72..c94b0f0 100644 --- a/scripts/common +++ b/scripts/common @@ -102,3 +102,11 @@ update_issue() { echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using ${PI_GEN}, ${PI_GEN_REPO}, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue" } export -f update_issue + +ensure_next_loopdev() { + local loopdev + loopdev="$(losetup -f)" + loopmaj="$(echo "$loopdev" | sed -E 's/.*[^0-9]*?([0-9]+)$/\1/')" + [[ -b "$loopdev" ]] || mknod "$loopdev" b 7 "$loopmaj" +} +export -f ensure_next_loopdev