close issue35 in the BTS
[grml-autoconfig.git] / autoconfig.functions
index 344929b..ab9d833 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: Fre Nov 10 00:33:15 CET 2006 [mika]
+# Latest change: Mon Nov 27 21:02:23 CET 2006 [mika]
 ################################################################################
 
 # {{{ path, variables, signals, umask, zsh
@@ -89,6 +89,7 @@ mount_sys(){
 # }}}
 
 # {{{ Read in boot parameters
+[ -f /proc/version ] || mount_proc # make sure we can access /proc/cmdline when sourcing this file too
 CMDLINE="$(cat /proc/cmdline)"
 [ -d /cdrom/bootparams/ ] && CMDLINE="$CMDLINE $(cat /cdrom/bootparams/* | tr '\n' ' ')"
 # }}}
@@ -315,7 +316,13 @@ config_hostname(){
 
 # fstabuser (needed when running from harddisk with username != grml {{{
 config_userfstab(){
-  fstabuser=$(getent passwd 1000 | cut -d: -f1)
+  [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig
+  if [ -n "$CONFIG_FSTAB_USER" ] ; then
+     fstabuser="$CONFIG_FSTAB_USER"
+  else
+     fstabuser=$(getent passwd 1000 | cut -d: -f1)
+  fi
+  # if not yet set fall back to default 'grml' user
   [ -n "$fstabuser" ] || fstabuser='grml'
 }
 # }}}
@@ -957,7 +964,7 @@ if [ -n "$partitions" ]; then
   case "$f" in swap)
    eindent
    if [ -n "$NOSWAP" ]; then
-    ewarn "Ignoring swap partition ${WHITE}$p${NORMAL} as requested." ; eend 0
+    ewarn "Ignoring swap partition ${WHITE}$p${NORMAL}. (Force usage via boot option 'swap', or execute grml-swapon)" ; eend 0
    else
      case "$(dd if=$p bs=1 count=6 skip=4086 2>/dev/null)" in
              S1SUSP|S2SUSP|pmdisk|[zZ]*)
@@ -1890,8 +1897,9 @@ 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 "forensic" -o checkbootparam "raid=noautodetect" ; then
-     ewarn "Skipping search for SW-RAID as requested on boot commandline." ; eend 0
+  if checkbootparam 'noraid'   -o checkbootparam 'noswraid' -o \
+     checkbootparam 'forensic' -o checkbootparam 'raid=noautodetect' ; then
+     ewarn "Skipping SW-RAID code as requested on boot commandline." ; eend 0
   else
     if ! [ -x /sbin/mdadm ] ; then
        eerror "mdadm not available, can not execute it." ; eend 1
@@ -1900,47 +1908,53 @@ config_swraid(){
        # if ! egrep -qv '^(MAILADDR.*|#.*|)$' /etc/mdadm/mdadm.conf 2>>$DEBUG ; then
        # find out whether we have a valid configuration file already
        if ! grep -q ARRAY /etc/mdadm/mdadm.conf 2>>$DEBUG ; then
-         einfo "Creating /etc/mdadm/mdadm.conf"
-         [ -r /etc/mdadm/mdadm.conf ] && mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old
-         MDADM_MAILADDR='root' /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf ; eend $?
-       else
-         ewarn "/etc/mdadm/mdadm.conf looks like a configured mdadm setup, will not touch it." ; eend 0
+          einfo "Creating /etc/mdadm/mdadm.conf for use with mdadm."
+          [ -r /etc/mdadm/mdadm.conf ] && mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old
+          MDADM_MAILADDR__='root' /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf ; eend $?
+        else
+          ewarn "/etc/mdadm/mdadm.conf looks like a configured mdadm setup, will not touch it." ; eend 0
        fi
 
-       einfo "Searching for software RAID arrays (disable via bootoption noraid):"
-       eindent
-         IFSOLD=${IFS:-}
-         IFS='
+       if ! checkbootparam 'swraid' ; then 
+          eindent
+          einfo "Just run 'Start mdadm-raid' to assemble md arrays or boot using swraid bootoption for autostart."
+          eoutdent
+       else
+          einfo "Bootoption swraid found. Searching for software RAID arrays:"
+          eindent
+           IFSOLD=${IFS:-}
+           IFS='
 '
-         for line in $(mdadm --assemble --scan --auto=yes --symlink=no 2>&1) ; do
-             case $line in
-               *'No arrays found'*)
-                 ewarn "$line" ; eend 0
-                 ;;
-               *)
-                 einfo "$line" ; eend 0
-                 ;;
-             esac
-         done
-         IFS=$IFSOLD
-       eoutdent
+           for line in $(mdadm --assemble --scan --auto=yes --symlink=no 2>&1) ; do
+               case $line in
+                 *'No arrays found'*)
+                   ewarn "$line" ; eend 0
+                   ;;
+                 *)
+                   einfo "$line" ; eend 0
+                   ;;
+               esac
+           done
+           IFS=$IFSOLD
+         eoutdent
 
-       if [ -r /proc/mdstat ] ; then
-          eindent
-          MDSTAT=$(grep '^md[0-9]' /proc/mdstat)
-          if [ -z "$MDSTAT" ] ; then
-             ewarn "No active arrays found" ; eend 0
-          else
-             IFSOLD=${IFS:-}
-             IFS='
+         if [ -r /proc/mdstat ] ; then
+            eindent
+            MDSTAT=$(grep '^md[0-9]' /proc/mdstat)
+            if [ -z "$MDSTAT" ] ; then
+               ewarn "No active arrays found" ; eend 0
+            else
+               IFSOLD=${IFS:-}
+               IFS='
 '
-             for line in $(grep '^md[0-9]' /proc/mdstat) ; do
-                 einfo "active arrays: $line" ; eend 0
-             done
-             IFS=$IFSOLD
-          fi
-          eoutdent
-       fi
+               for line in $(grep '^md[0-9]' /proc/mdstat) ; do
+                   einfo "active arrays: $line" ; eend 0
+               done
+               IFS=$IFSOLD
+            fi
+            eoutdent
+         fi # /proc/mdstat
+       fi # bootoption swraid
 
      fi # is /sbin/mdadm executable?
   fi # check for bootoptions