Do not automatically start sl-modem-daemon
[grml-autoconfig.git] / autoconfig.functions
index 1707c5f..f40d45c 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.
 # 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: Son Jul 01 20:34:14 CEST 2007 [mika]
+# Latest change: Don Jul 12 15:33:48 CEST 2007 [mika]
 ################################################################################
 
 # {{{ path, variables, signals, umask, zsh
 ################################################################################
 
 # {{{ path, variables, signals, umask, zsh
@@ -700,7 +700,7 @@ if checkbootparam "blacklist" ; then
     echo "alias     $BLACK off" >> /etc/modprobe.d/grml
     echo "# end   entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
   else
     echo "alias     $BLACK off" >> /etc/modprobe.d/grml
     echo "# end   entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
   else
-   eerror "No given module for blacklist found. Blacklisting will not work therefor."
+   eerror "No given module for blacklist found. Blacklisting will not work therefore."
   fi
  else
   ewarn "Backlisting via bootoption does not work on harddisk installations." ; eend 1
   fi
  else
   ewarn "Backlisting via bootoption does not work on harddisk installations." ; eend 1
@@ -1169,6 +1169,10 @@ else
     sleep 1
     eend 0
   done
     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
 }
 # }}}
 fi
 }
 # }}}
@@ -1249,28 +1253,78 @@ else
      einfo "Detecting CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0
   fi
 
      einfo "Detecting CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0
   fi
 
+  # Disclaimer: sorry for the tons of if/then/else... but this makes sure we use:
+  # * it only if we have the according kernel modules available
+  # * cpufreq only on laptops (check via /usr/sbin/laptop-detect) and not inside Virtual Box
+  # * current version of /etc/init.d/loadcpufreq from Debian (to stay in sync)
+  #   -> parse output of the initscript and output it according to our look'n'feel
+  # * our own cpufreq-detect.sh if /etc/init.d/loadcpufreq isn't present
   if ! cpufreq_check ; then
     ewarn "Skipping cpufreq setup as module dependencies are not fulfilled." ; eend 1
   else
   if ! cpufreq_check ; then
     ewarn "Skipping cpufreq setup as module dependencies are not fulfilled." ; eend 1
   else
-    if /usr/sbin/laptop-detect ; then
+    if /usr/sbin/laptop-detect 1>/dev/null 2>&1 ; then
+       # Virtual Box supports ACPI and laptop-detect returns with '0', so check for it:
+       if [ -r /proc/acpi/battery/BAT0/info ] ; then
+          if grep -q 'OEM info:                innotek' /proc/acpi/battery/BAT0/info ; then
+             einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0
+             return 0
+          fi
+       fi
        einfo "Detected Laptop - trying to use cpu frequency scaling:"
        einfo "Detected Laptop - trying to use cpu frequency scaling:"
-       if [ -r /usr/bin/cpufreq-detect.sh ] ; then
-          eindent
+       eindent
+       if [ -x /etc/init.d/loadcpufreq ] ; then
+          SKIP_CPU_GOVERNOR=''
+          LOADCPUFREQ=$(mktemp)
+          /etc/init.d/loadcpufreq start >"$LOADCPUFREQ" 2>&1 ; RC=$?
+          if grep -q FATAL "$LOADCPUFREQ" ; then
+             eindent
+               SKIP_CPU_GOVERNOR=1
+               oldIFS="$IFS"
+               IFS="
+"
+                for line in $(grep FATAL "$LOADCPUFREQ" | sed 's/.*FATAL: //; s/ (.*)//') ; do
+                    eerror "$line" ; eend $RC
+                done
+                IFS="$oldIFS"
+             eoutdent
+           elif grep -q done "$LOADCPUFREQ" ; then
+             MODULE=$(grep done "$LOADCPUFREQ" | sed 's/.*done (\(.*\))./\1/')
+             if [ -n "$MODULE" -a "$MODULE" != none ]; then
+                einfo "Loading cpufreq kernel module $MODULE" ; eend 0
+             else
+                ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1
+             fi
+          fi
+          rm -f $LOADCPUFREQ
+       elif [ -r /usr/bin/cpufreq-detect.sh ] ; then
           . /usr/bin/cpufreq-detect.sh
           if [ -n "$MODULE" -a "$MODULE" != none ]; then
           . /usr/bin/cpufreq-detect.sh
           if [ -n "$MODULE" -a "$MODULE" != none ]; then
-             einfo "Loading modules ${MODULE} and cpufreq_ondemand, setting ondemand governor"
+             einfo "Loading modules ${MODULE}"
              modprobe "$MODULE" 1>>$DEBUG || modprobe "$MODULE_FALLBACK" 1>>$DEBUG
              modprobe "$MODULE" 1>>$DEBUG || modprobe "$MODULE_FALLBACK" 1>>$DEBUG
-             if modprobe cpufreq_ondemand && RC=0 || RC=1 ; then
-                for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do
-                    echo ondemand > $file
-                done
+             RC=$?
+             if [[ $RC == 0 ]]; then
+                eend 0
+             else
+                SKIP_CPU_GOVERNOR=1
+                eend $1
              fi
              fi
-             eend $RC
           else
              ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." && eend 1
           else
              ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." && eend 1
+          fi # $MODULE
+       fi # loadcpufreq
+
+       if [ -z "$SKIP_CPU_GOVERNOR" ] ; then
+          einfo "Loading cpufreq_ondemand, setting ondemand governor"
+          if modprobe cpufreq_ondemand ; RC=$? ; then
+             for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do
+                 echo ondemand > $file
+             done
           fi
           fi
-          eoutdent
-       fi # cpufreq-detect
+          eend $RC
+       fi # cpu-governor
+
+       eoutdent
+
     fi # laptop-detect
   fi # cpufreq_check
 fi # checkbootparam nocpu
     fi # laptop-detect
   fi # cpufreq_check
 fi # checkbootparam nocpu
@@ -1416,6 +1470,11 @@ if ! [ -x /usr/bin/aumix ] ; then
   eerror "aumix binary not available. Can not set sound volumes therefore." ; eend 1
 else
 
   eerror "aumix binary not available. Can not set sound volumes therefore." ; eend 1
 else
 
+  if ! [ -r /proc/asound/cards ] ; then
+     ewarn "No soundcard present, skipping mixer settings therefore." ; eend 0
+     return
+  fi
+
   if checkbootparam vol ; then
     VOL="$(getbootparam 'vol' 2>>$DEBUG)"
     if [ -z "$VOL" ] ; then
   if checkbootparam vol ; then
     VOL="$(getbootparam 'vol' 2>>$DEBUG)"
     if [ -z "$VOL" ] ; then
@@ -1454,7 +1513,7 @@ else
       ERROR=$(aumix -w $VOL -v $VOL -p $VOL -m $VOL 2>&1) ; RC=$?
       if [ -n "$ERROR" ] ; then
          eindent
       ERROR=$(aumix -w $VOL -v $VOL -p $VOL -m $VOL 2>&1) ; RC=$?
       if [ -n "$ERROR" ] ; then
          eindent
-         eerror "Problem setting mixer volumes: $ERROR"
+         eerror "Problem setting mixer volumes: $ERROR (no soundcard?)"
          eoutdent
       fi
       eend $RC
          eoutdent
       fi
       eend $RC
@@ -1470,11 +1529,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
   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
 }
   fi
 fi
 }
@@ -2054,15 +2112,15 @@ config_lvm(){
     if ! [ -x /sbin/lvm -a -x /etc/init.d/lvm2 -a -x /sbin/lvdisplay ] ; then
        eerror "LVM not available, can not execute it." ; eend 1
     else
     if ! [ -x /sbin/lvm -a -x /etc/init.d/lvm2 -a -x /sbin/lvdisplay ] ; then
        eerror "LVM not available, can not execute it." ; eend 1
     else
-       if lvdisplay 1>/dev/null 2>&1 ; then
-         einfo "You seem to have logical volumes (LVM) on your system."
+       if lvdisplay 2>&1 | grep -v 'No volume groups found' 1>/dev/null 2>&1 ; then
+          einfo "You seem to have logical volumes (LVM) on your system."
           eindent
           einfo "Just run 'Start lvm2' to activate them or boot using 'lvm' as bootoption for autostart."
           eindent
           einfo "Just run 'Start lvm2' to activate them or boot using 'lvm' as bootoption for autostart."
-         eend 0
+          eend 0
           if checkbootparam 'lvm' ; then
              einfo "Bootoption LVM found. Searching for logical volumes:"
           if checkbootparam 'lvm' ; then
              einfo "Bootoption LVM found. Searching for logical volumes:"
-            /etc/init.d/lvm2 start ; eend $?
-         fi
+             /etc/init.d/lvm2 start ; eend $?
+          fi
           eoutdent
        fi
     fi # check for lvm binary
           eoutdent
        fi
     fi # check for lvm binary
@@ -2294,4 +2352,4 @@ config_keyboard(){
 # }}}
 
 ## END OF FILE #################################################################
 # }}}
 
 ## END OF FILE #################################################################
-# vim:foldmethod=marker
+# vim:foldmethod=marker expandtab ai ft=zsh