summaryrefslogtreecommitdiffstats
path: root/modules.d/90dmsquash-live/iso-scan.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/90dmsquash-live/iso-scan.sh')
-rwxr-xr-xmodules.d/90dmsquash-live/iso-scan.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/modules.d/90dmsquash-live/iso-scan.sh b/modules.d/90dmsquash-live/iso-scan.sh
new file mode 100755
index 0000000..fa06b33
--- /dev/null
+++ b/modules.d/90dmsquash-live/iso-scan.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+isofile=$1
+
+[ -z "$isofile" ] && exit 1
+
+ismounted "/run/initramfs/isoscan" && exit 0
+
+mkdir -p "/run/initramfs/isoscan"
+
+do_iso_scan() {
+ local _name
+ local dev
+ for dev in /dev/disk/by-uuid/*; do
+ _name=$(dev_unit_name "$dev")
+ [ -e /tmp/isoscan-"${_name}" ] && continue
+ : > /tmp/isoscan-"${_name}"
+ mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
+ if [ -f "/run/initramfs/isoscan/$isofile" ]; then
+ losetup -f "/run/initramfs/isoscan/$isofile"
+ udevadm trigger --action=add > /dev/null 2>&1
+ ln -s "$dev" /run/initramfs/isoscandev
+ rm -f -- "$job"
+ exit 0
+ else
+ umount "/run/initramfs/isoscan"
+ fi
+ done
+}
+
+do_iso_scan
+
+rmdir "/run/initramfs/isoscan"
+exit 1