X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=7af51eb6b0a0edfbce9180b5b386ffb1550691e4;hp=921be17b27b9faa83ad35510348e5457cae13cbc;hb=cd5f482d90486c624d2dcf33fcf413dd1697fc51;hpb=9bc079508a6358e38f335657021736f047a9b835 diff --git a/autoconfig.functions b/autoconfig.functions index 921be17..7af51eb 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -49,7 +49,7 @@ stringinstring(){ # Reread boot command line; echo last parameter's argument or return false. getbootparam(){ stringinstring " $1=" "$CMDLINE" || return 1 - result="${CMDLINE##*$1=}" + result="${CMDLINE##* $1=}" result="${result%%[ ]*}" echo "$result" return 0 @@ -360,26 +360,29 @@ config_userfstab(){ config_time(){ # don't touch the files if running from harddisk: if [ -z "$INSTALLED" ]; then - UTC="" + # The default hardware clock timezone is stated as representing local time. + UTC="--localtime" checkbootparam utc >>$DEBUG 2>&1 && UTC="-u" checkbootparam gmt >>$DEBUG 2>&1 && UTC="-u" # hwclock uses the TZ variable - [ -r /etc/timezone ] && TZ=$(cat /etc/timezone) - [ -n "$TZ" ] || TZ=Europe/Vienna + KTZ="$(getbootparam tz 2>>$DEBUG)" + [ -z "$KTZ" ] && [ -r /etc/timezone ] && KTZ=$(cat /etc/timezone) + [ -z "$KTZ" ] && KTZ=Europe/Vienna if ! [ -r /dev/rtc ] ; then - ewarn "Realtime clock not available, skipping execution of hwclock therefore." ; eend 0 - else - ERROR=$(TZ="$TZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$? - if [ -n "$ERROR" ] ; then - eindent - ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1 | head -1) - if [ -n "$ERROR" ] ; then - eerror "Problem running hwclock: $ERROR" ; eend 1 - fi - eoutdent - fi + ewarn "Warning: realtime clock not available, trying to execute hwclock anyway." ; eend 0 fi + + ERROR=$(TZ="$TZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$? + if [ -n "$ERROR" ] ; then + eindent + ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1 | head -1) + if [ -n "$ERROR" ] ; then + eerror "Problem running hwclock: $ERROR" ; eend 1 + fi + eoutdent + fi + fi } # }}} @@ -2319,6 +2322,47 @@ fi } # }}} +# {{{ tohd= bootoption +config_tohd() +{ + if checkbootparam "tohd" ; then + local TARGET="$(getbootparam 'tohd' 2>>$DEBUG)" + if [ -z "$TARGET" ] ; then + eerror "Error: tohd specified without any partition, can not continue." ; eend 1 + eerror "Please use something like tohd=/dev/sda9." ; eend 1 + return 1 + fi + + if ! [ -b "$TARGET" ] ; then + eerror "Error: $TARGET is not a valid block device, sorry." ; eend 1 + return 1 + fi + + if grep -q $TARGET /proc/mounts ; then + eerror "$TARGET already mounted, skipping execution of tohd therefore." + eend 1 + return 1 + fi + + local MOUNTDIR=$(mktemp -d) + + if mount -o rw "$TARGET" "$MOUNTDIR" ; then + einfo "Copyring live system to $TARGET - this might take a while" + rsync -a --progress /live/image/live $MOUNTDIR + sync + umount "$MOUNTDIR" + eend $? + einfo "Booting with \"grml bootfrom=$TARGET\" should work now." ; eend 0 + else + eerror "Error when trying to mount $TARGET, sorry."; eend 1 + return 1 + fi + + rmdir "$MOUNTDIR" + fi +} +# }}} + # {{{ grml2hd: automatic installation config_grml2hd(){