summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-02-17 18:45:02 -0300
committerGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-02-17 19:07:14 -0300
commit7d7dad06e2e9aa16fd27608027b1de06f930242b (patch)
tree8b17cba453371271db077bf78dd28477f481388c
parent59d7a39994ea975a36aec0f7ead300aa8403a0b5 (diff)
downloadarchiso32-7d7dad06e2e9aa16fd27608027b1de06f930242b.tar.xz
Take advantage of module autoloading when mounting images as loop
* Make first /dev/loop0 device at archiso install hook. * Remove unneeded losetup, all is done directly via mount. * Images are now mounted on /tmpfs/mnt/image-name instead of /tmpfs/mnt/loopN, removing unneeded counter. * Add some variables to make code more readable. Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
-rw-r--r--archiso/hooks/archiso26
-rw-r--r--archiso/install/archiso1
2 files changed, 9 insertions, 18 deletions
diff --git a/archiso/hooks/archiso b/archiso/hooks/archiso
index aac2d21..9ba539f 100644
--- a/archiso/hooks/archiso
+++ b/archiso/hooks/archiso
@@ -9,11 +9,11 @@ _mnt_bind()
# args: /path/to/image_file
_mnt_squashfs()
{
- /sbin/modprobe -q loop > /dev/null 2>&1
-
img="${1}"
- base_img="${img##*/}";
mnt="${2}"
+ img_fullname="${img##*/}";
+ img_name="${img_fullname%.*}"
+ tmp_mnt="/tmpfs/mnt/${img_name}"
# FIX: This options does not work (see FS#17182)
if [ "${copytoram}" = "y" ]; then
@@ -22,23 +22,14 @@ _mnt_squashfs()
img="/tmpfs/${base_img}"
fi
- msg "::: Adding new aufs branch: ${base_img%.*}"
- mkdir -p "/tmpfs/mnt/loop${LOOP_NUM}"
- # sometimes it takes udev a while to create device nodes
- while [ ! -e "/dev/loop${LOOP_NUM}" ]; do
- sleep 1
- done
- if ! /sbin/losetup "/dev/loop${LOOP_NUM}" ${img}; then
- echo "ERROR: Cannot mount loop device /dev/loop${LOOP_NUM}"
- break
- fi
- /bin/mount -r -t squashfs "/dev/loop${LOOP_NUM}" "/tmpfs/mnt/loop${LOOP_NUM}"
+ msg "::: Adding new aufs branch: ${img_name}"
+ mkdir -p "${tmp_mnt}"
+ /bin/mount -r -t squashfs "${img}" "${tmp_mnt}"
if [ "${mnt}" = "/" ]; then
- /bin/mount -t aufs -o remount,append:/tmpfs/mnt/loop${LOOP_NUM}=ro none "$newroot"
+ /bin/mount -t aufs -o remount,append:${tmp_mnt}=ro none "$newroot"
else
- _mnt_bind "/tmpfs/mnt/loop${LOOP_NUM}" "${mnt}"
+ _mnt_bind "${tmp_mnt}" "${mnt}"
fi
- export LOOP_NUM=$(( $LOOP_NUM + 1 ))
}
run_hook ()
@@ -112,7 +103,6 @@ archiso_mount_handler() {
exit 1
fi
- export LOOP_NUM="0"
msg ":: Mounting images"
while read img imgarch mountpoint type; do
# check if this line is a comment (starts with #)
diff --git a/archiso/install/archiso b/archiso/install/archiso
index 5978f33..4d36412 100644
--- a/archiso/install/archiso
+++ b/archiso/install/archiso
@@ -11,6 +11,7 @@ install ()
FILES=""
add_dir /tmpfs
add_dir /bootmnt
+ add_device /dev/loop0 b 7 0
SCRIPT="archiso"
}