Update config_log() + config_debug()
[grml-autoconfig.git] / autoconfig.functions
index b3529ce..cd3c764 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: Don Nov 15 22:01:50 CET 2007 [mika]
+# Latest change: Son Jän 20 19:51:41 CET 2008 [mika]
 ################################################################################
 
 # {{{ path, variables, signals, umask, zsh
@@ -116,26 +116,27 @@ fi
 
 # {{{ debug
 config_debug(){
- if checkbootparam "debug"; then
-   BOOTDEBUG="yes"
- fi
- if stringinstring "BOOT_IMAGE=debug " "$CMDLINE" ; then
-   BOOTDEBUG="yes"
- fi
+ checkbootparam "debug"                        && BOOTDEBUG="yes"
+ stringinstring "BOOT_IMAGE=debug " "$CMDLINE" && BOOTDEBUG="yes"
+
  rundebugshell(){
   if [ -n "$BOOTDEBUG" ]; then
-    einfo "Starting intermediate shell stage $stage as requested by \"debug\" option."
-    eindent
-    if [ -r /etc/grml/screenrc ] ; then
-       einfo "Starting GNU screen to be able to use a full featured shell environment."
-       einfo "Just exit the shells (and therefore screen) to continue boot process..."
-       /bin/zsh -c "screen -c /etc/grml/screenrc"
-    else
-      einfo "Notice that the shell does not provide job handling: ctrl-z, bg and fg won't work!"
-      einfo "Just exit the shell to continue boot process..."
-      /bin/zsh
-    fi
-    eoutdent
+     einfo "Starting intermediate shell stage $stage as requested by \"debug\" option."
+     if [ grep -q "debug=noscreen" "$CMDLINE" ] ; then
+        /bin/zsh
+     else
+        eindent
+        if [ -r /etc/grml/screenrc ] ; then
+           einfo "Starting GNU screen to be able to use a full featured shell environment."
+           einfo "Just exit the shells (and therefore screen) to continue boot process..."
+           /bin/zsh -c "screen -c /etc/grml/screenrc"
+        else
+           einfo "Notice that the shell does not provide job handling: ctrl-z, bg and fg won't work!"
+           einfo "Just exit the shell to continue boot process..."
+           /bin/zsh
+        fi
+        eoutdent
+     fi
   fi
  }
 }
@@ -143,16 +144,16 @@ config_debug(){
 
 # {{{ log
 config_log(){
-if checkbootparam "log"; then
-  export DEBUG="/tmp/grml.log.`date +%Y%m%d`"
-  touch $DEBUG
-  einfo "Bootparameter log found. Log files: ${DEBUG} and /var/log/boot."
-  eindent
-    einfo "Starting bootlogd."
-    bootlogd -r -c 1>>$DEBUG 2>&1 ; eend $?
-  eoutdent
+if checkbootparam "log" || checkbootparam "debug" ; then
+   export DEBUG="/tmp/grml.log.`date +%Y%m%d`"
+   touch $DEBUG
+   einfo "Bootparameter log found. Log files: ${DEBUG} and /var/log/boot"
+   eindent
+     einfo "Starting bootlogd." # known to be *very* unreliable :(
+     bootlogd -r -c 1>>$DEBUG 2>&1 ; eend $?
+   eoutdent
 else
-  DEBUG="/dev/null"
+   DEBUG="/dev/null"
 fi
 }
 # }}}
@@ -283,15 +284,17 @@ config_language(){
  fi
 
  # we have to set up all consoles, therefore loop it over all ttys:
- NUM_CONSOLES=`fgconsole --next-available`
- NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1`
+ NUM_CONSOLES=$(fgconsole --next-available)
+ NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1)
  [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
+ CUR_CONSOLE=$(fgconsole)
 
  if [ -n "$CHARMAP" ] ; then
     einfo "Running consolechars for ${CHARMAP}"
     for vc in `seq 0 ${NUM_CONSOLES}`  ; do
         consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$?
     done
+    [ -n "$CUR_CONSOLE" ] && chvt $CUR_CONSOLE
     eend $RC
  fi
 
@@ -303,6 +306,7 @@ config_language(){
        for vc in `seq 0 ${NUM_CONSOLES}`  ; do
            consolechars --tty=/dev/tty${vc} -f $CONSOLEFONT ; RC=$?
        done
+       [ -n "$CUR_CONSOLE" ] && chvt $CUR_CONSOLE
        eend $?
     fi
  fi
@@ -392,12 +396,17 @@ if checkbootparam novmware ; then
 else
    if [ -z "$INSTALLED" ] ; then
       if vmware-detect || stringinstring "BOOT_IMAGE=vmware " "$CMDLINE" ; then
-              if ! checkbootparam qemu ; then
+         if ! checkbootparam qemu ; then
             if [ -r /etc/X11/xorg.conf.vmware ] ; then
                einfo "VMware: Copying /etc/X11/xorg.conf.vmware to /etc/X11/xorg.conf"
                cp /etc/X11/xorg.conf.vmware /etc/X11/xorg.conf ; eend $?
             fi
          fi
+      elif [ -r /proc/acpi/battery/BAT0/info -a -r /etc/X11/xorg.conf.virtualbox ] ; then
+         if grep -q 'OEM info:                innotek' /proc/acpi/battery/BAT0/info ; then
+            einfo 'Virtual Box: Copying /etc/X11/xorg.conf.virtualbox to /etc/X11/xorg.conf'
+            cp /etc/X11/xorg.conf.virtualbox /etc/X11/xorg.conf ; eend $?
+         fi
       fi
    fi
 fi
@@ -432,13 +441,6 @@ fi
 }
 # }}}
 
-# update_progress {{{
-update_progress(){
-  # be sure we are non-blocking
-  (echo "$1" > /etc/sysconfig/progress) &
-}
-# }}}
-
 # {{{ timezone
 config_timezone(){
  # don't touch the files if running from harddisk:
@@ -707,18 +709,20 @@ if checkbootparam "blacklist" ; then
   einfo "Bootoption blacklist found."
   BLACK="$(getbootparam 'blacklist' 2>>$DEBUG)"
   if [ -n "$BLACK" ] ; then
-    einfo "Blacklisting module ${BLACK} via /etc/modprobe.d/grml."
-    echo "# begin entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml
-    echo "blacklist $BLACK"     >> /etc/modprobe.d/grml
-    echo "alias     $BLACK off" >> /etc/modprobe.d/grml
-    echo "# end   entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
+    for module in $(echo ${BLACK//,/ }) ; do
+        einfo "Blacklisting module ${module} via /etc/modprobe.d/grml."
+        echo "# begin entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml
+        echo "blacklist $module"     >> /etc/modprobe.d/grml
+        echo "alias     $module off" >> /etc/modprobe.d/grml
+        echo "# end   entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
+    done
   else
    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
+  ewarn "Backlisting via bootoption is not intended for use on harddisk installations." ; eend 1
   eindent
-   einfo "Please blacklist the module(s) via /etc/modprobe.d/blacklist."
+   einfo "Please blacklist the module(s) manually using the 'blacklist' script."
   eoutdent
  fi
 fi