X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=bf90781aef1642b82fd248e7ac2dc1d96b03f3f1;hb=849a3d4cbee9743b70c515cf34619b3730637517;hp=bf20ffc98f9a8c8ab2ca0aaf77bf39823ddaa4d2;hpb=c1bc23946b2034868212410dfdcf80fe0bef30b3;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index bf20ffc..bf90781 100755 --- a/scripts/live +++ b/scripts/live @@ -109,6 +109,11 @@ Arguments () export IGNORE_UUID ;; + integrity-check) + INTEGRITY_CHECK="Yes" + export INTEGRITY_CHECK + ;; + ip=*) STATICIP="${ARGUMENT#ip=}" @@ -335,6 +340,11 @@ Arguments () export PERSISTENT ;; + persistent-path=*) + PERSISTENT_PATH="${ARGUMENT#persistent-path=}" + export PERSISTENT_PATH + ;; + nopersistent) NOPERSISTENT="Yes" export NOPERSISTENT @@ -422,6 +432,11 @@ Arguments () export PLAIN_ROOT ;; + skipunion) + SKIP_UNION_MOUNTS="Yes" + export SKIP_UNION_MOUNTS + ;; + root=*) ROOT="${ARGUMENT#root=}" export ROOT @@ -570,7 +585,7 @@ mount_images_in_directory () [ -n "${mac}" ] && adddirectory="${directory}/${LIVE_MEDIA_PATH}/${mac}" setup_unionfs "${directory}/${LIVE_MEDIA_PATH}" "${rootmnt}" "${adddirectory}" else - : + panic "No supported filesystem images found at /${LIVE_MEDIA_PATH}." fi } @@ -658,7 +673,6 @@ copy_live_to () cp -a ${copyfrom}/* ${copyto} # "cp -a" from busybox also copies hidden files fi - livefs_root umount ${copyfrom} mount -r -o move ${copyto} ${copyfrom} fi @@ -692,6 +706,15 @@ do_netmount () [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME} export HOSTNAME + # Check if we have a network device at all + if ! ls /sys/class/net/eth0 > /dev/null 2>&1 && \ + ! ls /sys/class/net/wlan0 > /dev/null 2>&1 && \ + ! ls /sys/class/net/ath0 > /dev/null 2>&1 && \ + ! ls /sys/class/net/ra0 > /dev/null 2>&1 + then + panic "No supported network device found, maybe a non-mainline driver is required." + fi + if [ "${NFSROOT}" = "auto" ] then NFSROOT=${ROOTSERVER}:${ROOTPATH} @@ -1072,6 +1095,12 @@ setup_unionfs () do imagename=$(basename "${image}") + export image devname + maybe_break live-realpremount + log_begin_msg "Running /scripts/live-realpremount" + run_scripts /scripts/live-realpremount + log_end_msg + if [ -d "${image}" ] then # it is a plain directory: do nothing @@ -1229,8 +1258,12 @@ setup_unionfs () mount --bind ${exposedrootfs} ${rootmnt} || \ panic "bind mount of ${exposedrootfs} failed" - cow_dirs='/var/tmp /var/lock /var/run /var/log /var/spool - /home /var/lib/live' + if [ -z "${SKIP_UNION_MOUNTS}" ] + then + cow_dirs='/var/tmp /var/lock /var/run /var/log /var/spool /home /var/lib/live' + else + cow_dirs='' + fi for dir in ${cow_dirs}; do mkdir -p /cow${dir} @@ -1418,6 +1451,32 @@ set_usplash_timeout () fi ; fi } +integrity_check () +{ + media_mountpoint="${1}" + + log_begin_msg "Checking media integrity" + + cd ${media_mountpoint} + /bin/md5sum -c md5sum.txt < /dev/tty8 > /dev/tty8 + RC="${?}" + + log_end_msg + + if [ "${RC}" -eq 0 ] + then + log_success_msg "Everything ok, will reboot in 10 seconds." + sleep 10 + cd / + umount ${media_mountpoint} + sync + echo u > /proc/sysrq-trigger + echo b > /proc/sysrq-trigger + else + panic "Not ok, a media defect is likely, switch to VT8 for details." + fi +} + mountroot () { if [ -x /scripts/local-top/cryptroot ]; then @@ -1484,6 +1543,11 @@ mountroot () panic "Unable to find a medium containing a live file system" fi + if [ "${INTEGRITY_CHECK}" ] + then + integrity_check "${livefs_root}" + fi + if [ "${TORAM}" ] then live_dest="ram" @@ -1511,7 +1575,7 @@ mountroot () log_end_msg maybe_break live-bottom - log_begin_msg "Running /scripts/live-bottom" + log_begin_msg "Running /scripts/live-bottom\n" run_scripts /scripts/live-bottom log_end_msg