X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=af4ce8aa8d2d15bdaaa0f0e67031a9f5f9158cdb;hp=d3753083c36e454929020546578706684144bbe5;hb=4bb87ed9ee5486db09bb34f93bb0fed31fd940e8;hpb=37956429320bdddc1f52b514a25a8a28d86e2f57 diff --git a/autoconfig.functions b/autoconfig.functions index d375308..af4ce8a 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -362,21 +362,28 @@ config_time(){ if [ -z "$INSTALLED" ]; then # 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" + grep -q "^UTC=" /etc/default/rcS || echo "UTC=no" >> /etc/default/rcS + checkbootparam utc >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS + checkbootparam gmt >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS + checkbootparam localtime >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=no|" /etc/default/rcS + grep -q -i "^UTC=yes" /etc/default/rcS && UTC="-u" # hwclock uses the TZ variable KTZ="$(getbootparam tz 2>>$DEBUG)" [ -z "$KTZ" ] && [ -r /etc/timezone ] && KTZ=$(cat /etc/timezone) - [ -z "$KTZ" ] && KTZ=Europe/Vienna + if [ ! -f "/usr/share/zoneinfo/$KTZ" ] ; then + ewarn "Warning: unknown timezone $KTZ" ; eend 1 + KTZ="Europe/Vienna" + ewarn "Falling back to timezone $KTZ" ; eend 0 + fi if ! [ -r /dev/rtc ] ; then 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=$? + ERROR=$(TZ="$KTZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$? if [ -n "$ERROR" ] ; then eindent - ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1 | head -1) + ERROR=$(TZ="$KTZ" hwclock $UTC -s --directisa 2>&1 | head -1) if [ -n "$ERROR" ] ; then eerror "Problem running hwclock: $ERROR" ; eend 1 fi @@ -465,10 +472,21 @@ config_timezone(){ if [ -z "$INSTALLED" ]; then KTZ="$(getbootparam tz 2>>$DEBUG)" if [ -n "$KTZ" ] ; then - einfo "Setting timezone." - [ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ" - rm -f /etc/localtime - cp "/usr/share/zoneinfo/$TZ" /etc/localtime ; eend $? + if [ ! -f "/usr/share/zoneinfo/$KTZ" ] + then + ewarn "Warning: unknown timezone $KTZ"; eend 0 + else + einfo "Setting timezone." + # update debconf + area=$(echo $KTZ | cut -d '/' -f1) + zone=$(echo $KTZ | cut -d '/' -f2) + echo "tzdata tzdata/Areas select $area" | debconf-set-selections + echo "tzdata tzdata/Zones/$area select $zone" | debconf-set-selections + # update files + echo $KTZ > /etc/timezone + rm -f /etc/localtime + cp "/usr/share/zoneinfo/$KTZ" /etc/localtime ; eend $? + fi fi fi } @@ -863,19 +881,48 @@ config_swspeak(){ # {{{ support hardware synthesizer via speakup config_hwspeak(){ - if checkbootparam hwspeak ; then + if checkbootparam speakup.synth ; then + einfo "Bootoption speakup.synth found." + eindent + + module="$(getbootparam speakup.synth 2>>$DEBUG)" + if [ -z "$module" ] ; then + eerror "Sorry, no speakup module specified for bootoption speakup.synth." + flitewrapper "Sorry, no speakup module specified for bootoption speakup.synth." + else + einfo "Trying to load $module" + modprobe "speakup_${module}" + eend $? + fi + + if [ -d /proc/speakup/ ] || grep -q speakup /proc/modules ; then + einfo "Kernel should support speakup now." ; eend 0 + flitewrapper "Kernel should support speakup now." + else + eerror "Kernel or hardware do not seem to support speakup. Skipping hwspeak." ; eend 1 + flitewrapper "Kernel or hardware do not seem to support speakup. Sorry." + fi + + eoutdent + + # hwspeak: + elif checkbootparam hwspeak ; then einfo "Bootoption hwspeak found." if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then - ewarn" Kernel does not support hardware speakup - trying to load kernel modules:" ; eend 0 + ewarn "Kernel does not support hardware speakup - trying to load kernel modules:" ; eend 0 eindent - for module in $(find "/lib/modules/${KERNEL}/extra/speakup/" -name \*.ko | \ - sed 's#.*speakup/##g ; s#.ko$##g' | \ - grep -ve speakup_soft -ve speakup_dummy | sort -u) ; do - einfo "Trying to load $module" - modprobe $module - eend $? - done + if ! [ -d "/lib/modules/${KERNEL}/extra/speakup/" ] ; then + eerror "Kernel does not provide speakup modules, sorry." ; eend 1 + else + for module in $(find "/lib/modules/${KERNEL}/extra/speakup/" -name \*.ko | \ + sed 's#.*speakup/##g ; s#.ko$##g' | \ + grep -ve speakup_soft -ve speakup_dummy | sort -u) ; do + einfo "Trying to load $module" + modprobe $module + eend $? + done + fi eoutdent fi