diff options
| author | Henning Heinold <heinold@inf.fu-berlin.de> | 2007-11-22 21:15:54 +0000 |
|---|---|---|
| committer | Henning Heinold <heinold@inf.fu-berlin.de> | 2007-11-22 21:15:54 +0000 |
| commit | 255eeb9dd1af98857dc30631076bb4fae8da4e0c (patch) | |
| tree | 2ef554292cd385de37e31f131be8a5ea0d7013fb /packages/initrdscripts/files/80-loopboot.sh | |
| parent | f49bb749b59a2a7bfc9105866019133831bed05c (diff) | |
| parent | 2f0728d421371638542518906a4ab639198790dc (diff) | |
merge of '01a1687d6a3a1aa8b8ba912066a682526987fd4f'
and '74f9f9386f21c9cc7120b518b57aa3e7dee84477'
Diffstat (limited to 'packages/initrdscripts/files/80-loopboot.sh')
| -rw-r--r-- | packages/initrdscripts/files/80-loopboot.sh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/packages/initrdscripts/files/80-loopboot.sh b/packages/initrdscripts/files/80-loopboot.sh new file mode 100644 index 0000000000..d84244428e --- /dev/null +++ b/packages/initrdscripts/files/80-loopboot.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +if [ "$ROOT_DEVICE" = "/dev/loop" ]; then + loop_mount() { + loopdev=/dev/loop$loop_num + mountpt=/mnt/loop$loop_num + + [ -e $loopdev ] || mknod $loopdev b 7 $loop_num + + # if only one argument was specified, let it be path not dev + if [ -z "$path" ] && [ -n "$dev" ]; then + path="$dev" + dev="" + fi + [ -z "$offset" ] && offset=0 + + if [ -n "$dev" ]; then + hostpt=`expr "$dev" : '.*/\([^/]*\)'` + [ -z "$hostpt" ] && hostpt="$dev" + + echo "Mounting $dev on $hostpt" + mkdir $hostpt + mount $dev $hostpt + fi + + echo "Loopback setup of $path (offset $offset)" + losetup -o "$offset" "$loopdev" "$hostpt/$path" + + echo "Mounting $loopdev on $mountpt" + mkdir "$mountpt" + mount "$loopdev" "$mountpt" + cd "$mountpt" + BOOT_ROOT="$mountpt" + loop_num=`expr "$loop_num" + 1` + } + + modprobe loop + + loop_num=0 + + for arg in $CMDLINE; do + optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'` + echo $arg xxx $optarg + case $arg in + looproot=*) + dev=`expr "$optarg" : '\([^:]*\).*'` + path=`expr "$optarg" : '[^:]*:\([^:]*\).*'` + offset=`expr "$optarg" : '[^:]*:[^:]*:\([^:]*\).*'` + loop_mount ;; + esac + done +fi |
