X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=0d845338196de2aec6ee831c87fe9dd1940dbc7e;hb=refs%2Ftags%2Fupstream%2F1.132.1;hp=6494234f6f69358b7d9556338e0e13239df09bab;hpb=845dee811a0159b75422eb7e4cfb6c860d39690b;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 6494234..0d84533 100755 --- a/scripts/live +++ b/scripts/live @@ -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 @@ -322,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 @@ -492,7 +498,7 @@ get_backing_device () { case "${1}" in *.squashfs|*.ext2|*.ext3|*.jffs2) - echo $(setup_loop "${1}" "loop" "/sys/block/loop*" '0' "${LIVE_MEDIA_ENCRYPTION}") + echo $(setup_loop "${1}" "loop" "/sys/block/loop*" '0' "${LIVE_MEDIA_ENCRYPTION}" "${2}") ;; *.dir) @@ -550,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}" @@ -623,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 -o move "${copyto}" "${rootmnt}" cd "${OLDPWD}" else if [ -n "${MODULETORAMFILE}" ] @@ -635,7 +627,7 @@ copy_live_to () livefs_root umount ${copyfrom} - mount -r --move ${copyto} ${copyfrom} + mount -r -o move ${copyto} ${copyfrom} fi rmdir ${copyto} @@ -973,7 +965,7 @@ setup_unionfs () rofslist="${image} ${rofslist}" elif [ -f "${image}" ] then - backdev=$(get_backing_device "${image}") + backdev=$(get_backing_device "${image}" "-r") fstype=$(get_fstype "${backdev}") if [ "${fstype}" = "unknown" ] @@ -982,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 @@ -992,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}" ] @@ -1005,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 ',' @@ -1034,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) @@ -1075,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 @@ -1106,7 +1122,7 @@ setup_unionfs () ;; *) - mount --move "${d}" "${rootmnt}/live/${d##*/}" + mount -o move "${d}" "${rootmnt}/live/${d##*/}" ;; esac done @@ -1134,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} @@ -1181,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}") @@ -1237,6 +1266,8 @@ mountroot () exec 7>&2 exec > live.log exec 2>&1 + tail -f live.log >&7 & + tailpid="${!}" Arguments @@ -1318,5 +1349,6 @@ mountroot () exec 1>&6 6>&- exec 2>&7 7>&- + kill ${tailpid} cp live.log "${rootmnt}/var/log/" }