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
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
}
# {{{ 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
fi
}
+config_unpack(){
+MOUNTDEVICE="$1"
+MESSAGE="$2"
+
+if [ ! -b "$MOUNTDEVICE" ] ; then
+ return;
+fi
+
+
+[ -d /mnt/grml ] || mkdir /mnt/grml
+umount /mnt/grml 1>>$DEBUG 2>&1 # make sure it is not mounted
+mount -o ro -t auto $MOUNTDEVICE /mnt/grml ; RC="$?"
+if [[ $RC == 0 ]]; then
+ einfo "Successfully mounted $MOUNTDEVICE $MESSAGE to /mnt/grml (readonly)." ; eend 0
+ eindent
+ CONFIG=''
+ CONFIG="$(/bin/ls -1d /mnt/grml/[Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)"
+ if checkbootparam config ; then
+ FILENAME="$(getbootparam 'config' 2>>$DEBUG)"
+ if [ -e /mnt/grml/${FILENAME} ] ; then
+ einfo "Using /mnt/grml/$FILENAME instead of config.tbz"
+ CONFIG="/mnt/grml/$FILENAME"
+ fi
+ fi
+ if [ -n "$CONFIG" ]; then
+ einfo "Found file ${WHITE}${CONFIG}${NORMAL} - trying to extract it."
+ cd /
+ unp $CONFIG $EXTRACTOPTIONS ; eend $?
+ else
+ ewarn "Sorry, could not find file $FILENAME on device $MOUNTDEVICE $MESSAGE label GRMLCFG." ; eend 1
+ fi
+
+ SCRIPT=''
+ SCRIPT="$(/bin/ls -1d /mnt/grml/[Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
+ if [ -n "$SCRIPT" ]; then
+ einfo "Found script ${WHITE}${SCRIPT}${NORMAL} - trying to execute it."
+ $SCRIPT ; eend $?
+ fi
+ eoutdent
+ else
+ einfo "Could not mount $MOUNTDEVICE to /mnt/grml - sorry." ; eend 1
+fi # mount $MOUNTDEVICE
+grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
+
+}
+
config_automount(){
if checkbootparam noautoconfig || checkbootparam forensic ; then
ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0
else
if [ -z "$INSTALLED" ] ; then
- einfo "Searching for device(s) labeled with GRMLCFG. (Disable this via boot option: noautoconfig)" ; eend 0
- eindent
- [ -d /mnt/grml ] || mkdir /mnt/grml
- umount /mnt/grml 1>>$DEBUG 2>&1 # make sure it is not mounted
-# We do need the following fix so floppy disk is available to blkid in any case :-/
- if [ -r /dev/fd0 ] ; then
- einfo "Floppy device detected. Trying to access floppy disk."
-# dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1
- if timeout 4 dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1 ; then
- blkid /dev/fd0 1>>$DEBUG 2>&1
+ einfo "Searching for device(s) labeled with GRMLCFG. (Disable this via boot option: noautoconfig)" ; eend 0
+ eindent
+ # We do need the following fix so floppy disk is available to blkid in any case :-/
+ if [ -r /dev/fd0 ] ; then
+ einfo "Floppy device detected. Trying to access floppy disk."
+ # dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1
+ if timeout 4 dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1 ; then
+ blkid /dev/fd0 1>>$DEBUG 2>&1
+ fi
fi
+ DEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
+ config_unpack "$DEVICE" "labeled GRMCFG"
fi
- DEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
- [ -n "$DEVICE" ] && mount -t auto -o ro $DEVICE /mnt/grml ; RC="$?"
- if [[ $RC == 0 ]]; then
- einfo "Mounting device $DEVICE labeled GRMLCFG succeeded." ; eend 0
-
- CONFIG=''
- CONFIG="$(/bin/ls -1d /mnt/grml/[Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)"
- if [ -n "$CONFIG" ]; then
- einfo "Found file ${WHITE}${CONFIG}${NORMAL} - trying to extract it."
- cd /
- unp $CONFIG $EXTRACTOPTIONS ; eend $?
- else
- ewarn "Sorry, could not find file config.tbz on device with label GRMLCFG." ; eend 1
- fi
-
- SCRIPT=''
- SCRIPT="$(/bin/ls -1d /mnt/grml/[Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
- if [ -n "$SCRIPT" ]; then
- einfo "Found script ${WHITE}${SCRIPT}${NORMAL} - trying to execute it."
- $SCRIPT ; eend $?
- fi
- grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
- else
- ewarn "No devices with label GRMLCFG found." ; eend 0
- fi
- eoutdent
- fi
fi
}
if checkbootparam myconfig ; then
MOUNTDEVICE="$(getbootparam 'myconfig' 2>>$DEBUG)"
if [ -n "$MOUNTDEVICE" ]; then
- if checkbootparam file ; then
- FILENAME="$(getbootparam 'file' 2>>$DEBUG)"
- [ -n "$FILENAME" ] || FILENAME='config.tbz'
- fi
- [ -d /mnt/grml ] || mkdir /mnt/grml
- umount /mnt/grml 1>>$DEBUG 2>&1 # make sure it is not mounted
- mount -o ro -t auto $MOUNTDEVICE /mnt/grml ; RC="$?"
- if [[ $RC == 0 ]]; then
- einfo "Successfully mounted $MOUNTDEVICE to /mnt/grml (readonly)." ; eend 0
- eindent
- CONFIG=''
- CONFIG="$(/bin/ls -1d /mnt/grml/[Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)"
- if [ -n "$CONFIG" ]; then
- einfo "Found file ${WHITE}${CONFIG}${NORMAL} - trying to extract it."
- cd /
- unp $CONFIG $EXTRACTOPTIONS ; eend $?
- else
- ewarn "Sorry, could not find file config.tbz on device with label GRMLCFG." ; eend 1
- fi
-
- SCRIPT=''
- SCRIPT="$(/bin/ls -1d /mnt/grml/[Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
- if [ -n "$SCRIPT" ]; then
- einfo "Found script ${WHITE}${SCRIPT}${NORMAL} - trying to execute it."
- $SCRIPT ; eend $?
- fi
- eoutdent
- else
- einfo "Could not mount $MOUNTDEVICE to /mnt/grml - sorry." ; eend 1
- fi # mount $MOUNTDEVICE
- grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
+ config_unpack "$MOUNTDEVICE"
else
einfo "Sorry, no device for bootoption myconfig provided. Skipping." ; eend 1
fi # [ -n "$MOUNTDEVICE" ]