Fixing fromiso= on Squeeze.
[live-boot-grml.git] / scripts / live
index 0e1b2f4..d79beed 100755 (executable)
@@ -944,16 +944,17 @@ find_snap ()
 {
        # Look for ${snap_label}.* in block devices
        snap_label="${1}"
+       black_listed_devices="${2}"
 
        if [ "${PERSISTENT}" != "nofiles" ]
        then
                # search for image files
-               snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2")
+               snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}")
        fi
 
        if [ -z "${snapdata}" ]
        then
-               snapdata=$(find_cow_device "${snap_label}")
+               snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}")
        fi
        echo "${snapdata}"
 }
@@ -1205,9 +1206,16 @@ setup_unionfs ()
                                        log_warning_msg "Unknown file system type on ${backdev} (${image}), assuming ${fstype}."
                                fi
 
-                               mkdir -p "${croot}/${imagename}"
-                               log_begin_msg "Mounting \"${image}\" on \"${croot}${imagename}\" via \"${backdev}\""
-                               mount -t "${fstype}" -o ro,noatime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}"
+                               if [ "${UNIONTYPE}" != "unionmount" ]
+                               then
+                                       mpoint="${croot}/${imagename}"
+                                       rofsstring="${mpoint}=${roopt}:${rofsstring}" && rofslist="${mpoint} ${rofslist}"
+                               else
+                                       mpoint="${rootmnt}"
+                               fi
+                               mkdir -p "${mpoint}"
+                               log_begin_msg "Mounting \"${image}\" on \"${mpoint}\" via \"${backdev}\""
+                               mount -t "${fstype}" -o ro,noatime "${backdev}" "${mpoint}" || panic "Can not mount ${backdev} (${image}) on ${mpoint}"
                                log_end_msg
                        fi
                done
@@ -1321,6 +1329,9 @@ setup_unionfs ()
                cow_mountopt="rw,noatime,mode=755"
        fi
 
+       if [ "${UNIONTYPE}" != "unionmount" ]
+       then
+
        if [ "${cow_fstype}" = "nfs" ]
        then
                log_begin_msg \
@@ -1331,6 +1342,7 @@ setup_unionfs ()
                mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \
                        panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
        fi
+       fi
 
        rofscount=$(echo ${rofslist} |wc -w)
 
@@ -1375,6 +1387,10 @@ setup_unionfs ()
                                pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true
                                ;;
 
+                       unionmount)
+                               mount_full -t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice} "${rootmnt}" || panic "${UNIONTYPE} ${cowdevice} on ${rootmnt} failed with option noatime,union,${cow_mountopt}"
+                               ;;
+
                        *)
                                mount -t ${UNIONTYPE} -o noatime,${noxino_opt}dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option noatime,${noxino_opt}dirs=/cow=rw:${rofsstring}"
                                ;;
@@ -1469,7 +1485,7 @@ check_dev ()
                        echo "Warning: device for bootoption isofrom= ($FROMISO) not found.">>/live.log
                else
                        mkdir /isofrom
-                       mount "$ISO_DEVICE" /isofrom
+                       mount -t auto "$ISO_DEVICE" /isofrom
                        ISO_NAME="$(echo $FROMISO | sed "s|$ISO_DEVICE||")"
                        loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
                        devname="${loopdevname}"