Fix toram (change mount --move to mount -o move)
[live-boot-grml.git] / scripts / live
index 0ed7675..3428cca 100755 (executable)
@@ -154,6 +154,12 @@ Arguments ()
                                export LIVE_MEDIA_TIMEOUT
                                ;;
 
+                       language=*|debian-installer/language=*)
+                               language=${x#debian-installer/language=}
+                               locale="$(lang2locale "$language")"
+                               set_locale="true"
+                               ;;
+
                        locale=*|debian-installer/locale=*)
                                LOCALE="${ARGUMENT#*=}"
                                export LOCALE
@@ -234,11 +240,6 @@ Arguments ()
                                export NOKPERSONALIZER
                                ;;
 
-                       nokwallet)
-                               NOKWALLET="Yes"
-                               export NOKWALLET
-                               ;;
-
                        nolanguageselector)
                                NOLANGUAGESELECTOR="Yes"
                                export NOLANGUAGESELECTOR
@@ -327,9 +328,9 @@ Arguments ()
                                mount -n -o bind /dev /root/dev
 
                                mkdir -p /root/var/run/network
-                               chroot /root ifup -a
+                               chroot /root dhclient eth0
                                chroot /root wget -P /tmp "${location}"
-                               chroot /root ifdown -a
+                               chroot /root ifconfig eth0 down
 
                                umount /root/sys
                                umount /root/proc
@@ -555,20 +556,6 @@ is_nice_device ()
        return 1
 }
 
-is_supported_fs ()
-{
-       # FIXME: do something better like the scan of supported filesystems
-       fstype="${1}"
-
-       case ${fstype} in
-               vfat|iso9660|udf|ext2|ext3|ntfs|jffs2)
-                       return 0
-                       ;;
-       esac
-
-       return 1
-}
-
 copy_live_to ()
 {
        copyfrom="${1}"
@@ -628,7 +615,7 @@ copy_live_to ()
                cd "${copyto}"
                tar zxf "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
                rm -f "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
-               mount -r --move "${copyto}" "${rootmnt}"
+               mount -r -move "${copyto}" "${rootmnt}"
                cd "${OLDPWD}"
        else
                if [ -n "${MODULETORAMFILE}" ]
@@ -640,7 +627,7 @@ copy_live_to ()
 
                livefs_root
                umount ${copyfrom}
-               mount -r --move ${copyto} ${copyfrom}
+               mount -r -move ${copyto} ${copyfrom}
        fi
 
        rmdir ${copyto}
@@ -987,7 +974,7 @@ setup_unionfs ()
                        fi
 
                        mkdir -p "${croot}/${imagename}"
-                       echo "debug: Can not mount backdev ${backdev} (image = ${image}) on croot/imagename ${croot}/${imagename}"
+                       echo "debug: Mounting backdev \"${backdev}\" (image = ${image}) on croot/imagename \"${croot}/${imagename}\""
                        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}"
                fi
        done
@@ -997,8 +984,32 @@ setup_unionfs ()
        mkdir -p /cow
 
        # Looking for "${root_persistence}" device or file
-       if [ -n "${PERSISTENT}" ]
+       if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ]
        then
+               # Load USB modules
+               num_block=$(ls -l /sys/block | wc -l)
+               for module in sd_mod uhci-hcd ehci-hcd ohci-hcd usb-storage
+               do
+                       modprobe -q -b ${module}
+               done
+
+               udevtrigger
+               udevsettle
+
+               # For some reason, udevsettle does not block in this scenario,
+               # so we sleep for a little while.
+               #
+               # See https://bugs.launchpad.net/ubuntu/+source/casper/+bug/84591
+               for timeout in 5 4 3 2 1
+               do
+                       sleep 1
+
+                       if [ $(ls -l /sys/block | wc -l) -gt ${num_block} ]
+                       then
+                               break
+                       fi
+               done
+
                cowprobe=$(find_cow_device "${root_persistence}")
 
                if [ -b "${cowprobe}" ]
@@ -1010,7 +1021,7 @@ setup_unionfs ()
                        cowdevice="tmpfs"
                        cow_fstype="tmpfs"
                fi
-       elif [ -n "${NFS_COW}" ]
+       elif [ -n "${NFS_COW}" ] && [ -z "${NOPERSISTENT}" ]
        then
                # check if there are any nfs options
                if echo ${NFS_COW}|grep -q ','
@@ -1039,10 +1050,10 @@ setup_unionfs ()
                [ "${quiet}" != "y" ] && log_begin_msg \
                        "Trying nfsmount ${nfs_cow_opts} ${cowdevice} /cow"
                nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \
-                       panic "Can not mount ${cowdevice} on /cow"
+                       panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on /cow"
        else
-               mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || \
-                       panic "Can not mount ${cowdevice} on /cow"
+               mount -t ${cow_fstype} -o rw,noatime ${cowdevice} /cow || \
+                       panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
        fi
 
        rofscount=$(echo ${rofslist} |wc -w)
@@ -1080,7 +1091,7 @@ setup_unionfs ()
        mount -t tmpfs tmpfs ${rootmnt}/live
 
        # Adding other custom mounts
-       if [ -n "${PERSISTENT}" ]
+       if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ]
        then
                # directly mount /home
                # FIXME: add a custom mounts configurable system
@@ -1111,7 +1122,7 @@ setup_unionfs ()
                                        ;;
 
                                *)
-                                       mount --move "${d}" "${rootmnt}/live/${d##*/}"
+                                       mount -move "${d}" "${rootmnt}/live/${d##*/}"
                                        ;;
                        esac
                done
@@ -1139,6 +1150,19 @@ check_dev ()
                devname="${loopdevname}"
        fi
 
+       if [ -d "${devname}" ]
+       then
+               mount -o bind "${devname}" $mountpoint || continue
+
+               if is_live_path $mountpoint
+               then
+                       echo $mountpoint
+                       return 0
+               else
+                       umount $mountpoint
+               fi
+       fi
+
        fstype=$(get_fstype "${devname}")
 
        if is_supported_fs ${fstype}
@@ -1186,7 +1210,7 @@ find_livefs ()
        fi
 
        # or do the scan of block devices
-       for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v 'dm-')
+       for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v 'dm-' | grep -v fd )
        do
                devname=$(sys2dev "${sysblock}")
                fstype=$(get_fstype "${devname}")
@@ -1242,6 +1266,8 @@ mountroot ()
        exec 7>&2
        exec > live.log
        exec 2>&1
+       tail -f live.log >&7 &
+       tailpid="${!}"
 
        Arguments
 
@@ -1323,5 +1349,6 @@ mountroot ()
 
        exec 1>&6 6>&-
        exec 2>&7 7>&-
+       kill ${tailpid}
        cp live.log "${rootmnt}/var/log/"
 }