config_language(): check for existence of /etc/sysconfig/keyboard
[grml-autoconfig.git] / autoconfig.functions
index fe4caf5..1364af4 100755 (executable)
@@ -4,7 +4,7 @@
 # Authors:       grml-team (grml.org), (c) Klaus Knopper <knopper@knopper.net>, (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Mit Jul 11 19:34:06 CEST 2007 [mika]
+# Latest change: Mit Sep 05 19:09:45 CEST 2007 [mika]
 ################################################################################
 
 # {{{ path, variables, signals, umask, zsh
@@ -96,7 +96,7 @@ CMDLINE="$(cat /proc/cmdline)"
 
 # {{{ Check if we are running from the grml-CD or HD
 INSTALLED=""
-[ -e /GRML/etc/grml_cd ] || INSTALLED="yes"
+[ -e /etc/grml_cd ] || INSTALLED="yes"
 
 # testcd
 TESTCD=""
@@ -262,10 +262,12 @@ config_language(){
 
    # write keyboard related variables to file for later use
    [ -d /etc/sysconfig ] || mkdir /etc/sysconfig
-   echo "KEYTABLE=\"$KEYTABLE\""          > /etc/sysconfig/keyboard
-   echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/keyboard
-   echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/keyboard
-   echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard
+   if ! [ -e /etc/sysconfig/keyboard ] ; then
+      echo "KEYTABLE=\"$KEYTABLE\""          > /etc/sysconfig/keyboard
+      echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/keyboard
+      echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/keyboard
+      echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard
+   fi
  fi
 
  [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
@@ -284,9 +286,9 @@ config_language(){
 
  # Set default keyboard before interactive setup
  if [ -n "$KEYTABLE" ] ; then
-  einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background"
-  loadkeys -q $KEYTABLE &
-  eend $?
+    einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background"
+    loadkeys -q $KEYTABLE &
+    eend $?
  fi
 
  # we have to set up all consoles, therefore loop it over all ttys:
@@ -444,11 +446,13 @@ update_progress(){
 config_timezone(){
  # don't touch the files if running from harddisk:
  if [ -z "$INSTALLED" ]; then
-  einfo "Setting timezone."
-  KTZ="$(getbootparam tz 2>>$DEBUG)"
-  [ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ"
-  rm -f /etc/localtime
-  cp "/usr/share/zoneinfo/$TZ" /etc/localtime && eend 0
+    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 $?
+    fi
  fi
 }
 # }}}
@@ -588,21 +592,33 @@ config_fix_passwd(){
 # {{{ CD Checker
 config_testcd(){
 if [ -n "$TESTCD" ]; then
-  einfo "Checking CD data integrity as requested by '${WHITE}testcd${NORMAL}' boot option."
-  einfo "Reading files and checking against GRML/md5sums, this may take a while..."
-  echo -n "${RED}"
-  ( cd /cdrom/GRML/ ; rm -f /tmp/md5sum.log ; md5sum -c md5sums 2>&1 | tee /tmp/md5sum.log )
-  if [ "$?" = "0" ]; then
-    echo " ${GREEN}Everything looks OK${NORMAL}"
-    else
-    echo "${RED} *** CHECKSUM FAILED FOR THESE FILES:                          ***"
-    egrep -v '(^md5sum:|OK$)' /tmp/md5sum.log
-    echo "${RED} *** DATA ON YOUR CD MEDIUM IS POSSIBLY INCOMPLETE OR DAMAGED, ***${NORMAL}"
-    echo "${RED} *** OR YOUR COMPUTER HAS BAD RAM.                             ***${NORMAL}"
-    echo -n "${CYAN}Hit return to contine, or press the reset button to quit.${NORMAL}\a\a\a "
-    read a
-  fi
-  eend 0
+   einfo "Checking CD data integrity as requested by '${WHITE}testcd${NORMAL}' boot option."
+   einfo "Reading files and checking against GRML/md5sums, this may take a while..."
+   echo -n "${RED}"
+
+   # /linuxrc grml version:
+   [ -d /cdrom/GRML ]      && TESTCD_PATH=/cdrom/GRML
+   # live-initramfs version:
+   [ -d /live/image/GRML ] && TESTCD_PATH=/live/image/GRML
+
+   if [ -n "$TESTCD_PATH" ] ; then
+      ( cd "$TESTCD_PATH" ; rm -f /tmp/md5sum.log ; md5sum -c md5sums 2>&1 | tee /tmp/md5sum.log )
+   else
+      echo "${RED} *** Error: Could not find md5sum file.                           ***"
+   fi
+
+   if [ "$?" = "0" ]; then
+     echo " ${GREEN}Everything looks OK${NORMAL}"
+     else
+     echo "${RED} *** CHECKSUM FAILED FOR THESE FILES:                          ***"
+     egrep -v '(^md5sum:|OK$)' /tmp/md5sum.log
+     echo "${RED} *** DATA ON YOUR CD MEDIUM IS POSSIBLY INCOMPLETE OR DAMAGED, ***${NORMAL}"
+     echo "${RED} *** OR YOUR COMPUTER HAS BAD RAM.                             ***${NORMAL}"
+     echo -n "${CYAN}Hit return to contine, or press the reset button to quit.${NORMAL}"
+     read a
+   fi
+
+   eend 0
 fi
 }
 # }}}
@@ -716,9 +732,11 @@ fi
 config_acpi_apm(){
 if [ -d /proc/acpi ]; then
   if checkbootparam "noacpi"; then
-    ewarn "Skipping ACPI Bios detection as requested on boot commandline." ; eend 0
+    ewarn "Skipping ACPI Bios detection as requested via noacpi on boot commandline." ; eend 0
+  elif checkbootparam "nogrmlacpi" ; then
+    ewarn "Skipping ACPI Bios detection as requested via nogrmlacpi on boot commandline." ; eend 0
   else
-    einfo "ACPI Bios found, activating modules: "
+    einfo "ACPI Bios found, activating modules (disable via bootoption noacpi / nogrmlacpi): "
     eindent
     found=""
     for a in /lib/modules/$KERNEL/kernel/drivers/acpi/*; do
@@ -994,12 +1012,12 @@ fi
 config_fstab(){
 
 NOSWAP="yes" # we do not use swap by default!
-if checkbootparam "swap" -o checkbootparam "anyswap" ; then
+if checkbootparam "swap" || checkbootparam "anyswap" ; then
    NOSWAP=''
    checkbootparam "anyswap" && export ANYSWAP='yes' || export ANYSWAP=""
 fi
 
-if checkbootparam "nofstab" -o checkbootparam "forensic" ; then
+if checkbootparam "nofstab" || checkbootparam "forensic" ; then
   ewarn "Skipping /etc/fstab creation as requested on boot commandline." ; eend 0
 else
   einfo "Scanning for harddisk partitions and creating /etc/fstab. (Disable this via boot option: nofstab)"
@@ -1169,6 +1187,10 @@ else
     sleep 1
     eend 0
   done
+  if [ -n "$INSTALLED" ] ; then
+     ewarn 'If you want to disable automatic DHCP requests set CONFIG_DHCP=no in /etc/grml/autoconfig.'
+     eend 0
+  fi
 fi
 }
 # }}}
@@ -1525,11 +1547,10 @@ if checkbootparam "nomodem"; then
   ewarn "Skipping check for AC97 modem controller as requested on boot commandline." ; eend 0
 else
   if [ -x /etc/init.d/sl-modem-daemon ] ; then
-   if lspci | grep Intel | grep -q "AC'97 Modem Controller" ; then
-     einfo "AC97 modem controller detected. Starting sl-modem-daemon in background."
-     /etc/init.d/sl-modem-daemon start >>$DEBUG &
-     eend 0
-   fi
+     if lspci | grep Intel | grep -q "AC'97 Modem Controller" ; then
+        einfo "AC97 modem controller detected. Start it running 'Start sl-modem-daemon'."
+        eend 0
+     fi
   fi
 fi
 }
@@ -1753,7 +1774,7 @@ fi
 }
 
 config_automount(){
-if checkbootparam noautoconfig -o checkbootparam forensic ; then
+if checkbootparam noautoconfig || checkbootparam forensic ; then
   ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0
 else
  if [ -z "$INSTALLED" ] ; then
@@ -2034,8 +2055,8 @@ fi
 config_swraid(){
   if [ -z "$INSTALLED" ] ; then
   # notice: checkbootparam "forensic" is just for users who don't know how to really use the bootoption
-  if checkbootparam 'noraid'   -o checkbootparam 'noswraid' -o \
-     checkbootparam 'forensic' -o checkbootparam 'raid=noautodetect' ; then
+  if checkbootparam 'noraid'   || checkbootparam 'noswraid' -o \
+     checkbootparam 'forensic' || checkbootparam 'raid=noautodetect' ; then
      ewarn "Skipping SW-RAID code as requested on boot commandline." ; eend 0
   else
     if ! [ -x /sbin/mdadm ] ; then
@@ -2172,6 +2193,19 @@ fi
 }
 # }}}
 
+# {{{ check for broken ipw3945 driver which causes problems (especially on hd install)
+config_ipw3945() {
+  if grep -q ipw3945 /proc/modules ; then
+     if ! iwconfig 2>/dev/null| grep -qe 'IEEE 802' -qe 'unassociated' ; then
+        ewarn "Broken ipw3945 network interface found, reloading module."
+        rmmod ipw3945
+        modprobe ipw3945
+        eend $?
+     fi
+  fi
+}
+# }}}
+
 # {{{ disable console blanking
 config_blanking(){
 if checkbootparam "noblank" ; then
@@ -2349,4 +2383,4 @@ config_keyboard(){
 # }}}
 
 ## END OF FILE #################################################################
-# vim:foldmethod=marker expandtab ai ft=zsh
+# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3