X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=46dcb745414bdbb330f4a092e0687f334e0c9952;hb=f213f2a81eae331fe6eb26636d5d60b2ddf35f8a;hp=8db6b8070c3d70921b6c307109272ea04d1bb4d4;hpb=c9419ef99ac838a65cdc90a27919be9ce0f8ff72;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 8db6b80..46dcb74 100755 --- a/scripts/live +++ b/scripts/live @@ -60,6 +60,11 @@ Arguments () export FETCH ;; + hook=*) + HOOK="${ARGUMENT#hook=}" + export HOOK + ;; + hostname=*) HOSTNAME="${ARGUMENT#hostname=}" LIVECONF="changed" @@ -229,11 +234,6 @@ Arguments () export NOKPERSONALIZER ;; - nokwallet) - NOKWALLET="Yes" - export NOKWALLET - ;; - nolanguageselector) NOLANGUAGESELECTOR="Yes" export NOLANGUAGESELECTOR @@ -322,9 +322,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 @@ -381,6 +381,16 @@ Arguments () export EXPOSED_ROOT ;; + plainroot) + PLAIN_ROOT="Yes" + export PLAIN_ROOT + ;; + + root=*) + ROOT="${ARGUMENT#root=}" + export ROOT + ;; + union=*) UNIONTYPE="${ARGUMENT#union=}" export UNIONTYPE @@ -972,7 +982,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 @@ -982,8 +992,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}" ] @@ -995,7 +1029,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 ',' @@ -1024,10 +1058,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) @@ -1065,7 +1099,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 @@ -1171,7 +1205,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) + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v 'dm-') do devname=$(sys2dev "${sysblock}") fstype=$(get_fstype "${devname}") @@ -1218,6 +1252,11 @@ set_usplash_timeout () mountroot () { + + if [ -x /scripts/local-top/cryptroot ]; then + /scripts/local-top/cryptroot + fi + exec 6>&1 exec 7>&2 exec > live.log @@ -1244,18 +1283,24 @@ mountroot () panic "Unable to find a live file system on the network" fi else - # Scan local devices for the image - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 - do - livefs_root=$(find_livefs ${i}) + if [ -n "${PLAIN_ROOT}" ] && [ -n "${ROOT}" ] + then + # Do a local boot from hd + livefs_root=${ROOT} + else + # Scan local devices for the image + for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + do + livefs_root=$(find_livefs ${i}) - if [ -n "${livefs_root}" ] - then - break - fi + if [ -n "${livefs_root}" ] + then + break + fi - sleep 1 - done + sleep 1 + done + fi fi if [ -z "${livefs_root}" ]