summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMichael Prokop <mika@grml.org>2010-04-02 16:35:05 +0200
committerDaniel Baumann <daniel@debian.org>2011-03-09 17:48:08 +0100
commitbecd19e1a5b4774fb35c8acf9055e1470e965c18 (patch)
treeb8e95d2e5382533c9d5f81aa1584872efed83d26 /scripts
parent2924d9478b3e01ba65c7e963bf9d5c7a801ff1ae (diff)
downloadlive-boot-becd19e1a5b4774fb35c8acf9055e1470e965c18.tar.gz
live-boot-becd19e1a5b4774fb35c8acf9055e1470e965c18.zip
Support unusual device names like /dev/cciss/c0d0p1 in isofrom bootoption.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/live31
1 files changed, 25 insertions, 6 deletions
diff --git a/scripts/live b/scripts/live
index 8ad11bb..3000d78 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1506,12 +1506,31 @@ check_dev ()
# support for fromiso=.../isofrom=....
if [ -n "$FROMISO" ]
then
- mkdir /isofrom
- ISO_DEVICE="$(echo $FROMISO | sed 's|\(/dev/[a-z]*[0-9]*\).*|\1|')"
- mount "$ISO_DEVICE" /isofrom
- ISO_NAME="$(echo $FROMISO | sed 's|/dev/[a-z]*[0-9]*/||')"
- loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
- devname="${loopdevname}"
+ ISO_DEVICE=$(dirname $FROMISO)
+ if ! [ -b $ISO_DEVICE ]
+ then
+ # to support unusual device names like /dev/cciss/c0d0p1
+ # as well we have to identify the block device name, let's
+ # do that for up to 15 levels
+ i=15
+ while [ -n "$ISO_DEVICE" ] && [ "$i" -gt 0 ]
+ do
+ ISO_DEVICE=$(dirname ${ISO_DEVICE})
+ [ -b "$ISO_DEVICE" ] && break
+ i=$(($i -1))
+ done
+ fi
+
+ if [ "$ISO_DEVICE" = "/" ]
+ then
+ echo "Warning: device for bootoption isofrom= ($FROMISO) not found.">>/live.log
+ else
+ mkdir /isofrom
+ mount "$ISO_DEVICE" /isofrom
+ ISO_NAME="$(echo $FROMISO | sed "s|$ISO_DEVICE||")"
+ loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
+ devname="${loopdevname}"
+ fi
fi
if [ -z "${devname}" ]