Check for space after bootoption 'fast'
[grml-autoconfig.git] / autoconfig.functions
index fd699fc..58eed90 100755 (executable)
@@ -541,8 +541,8 @@ eoutdent
 
 # skip startup of w3m {{{
 config_fast(){
-if checkbootparam "fast"; then
-  ewarn "Bootoption fast detected. Skipping startup of w3m."
+if checkbootparam "fast "; then
+  ewarn "Bootoption fast detected. Skipping startup of grml-quickconfig."
     sed -i 's#^1:.*#1:12345:respawn:/usr/bin/openvt -f -c 1 -w -- /bin/zsh#' /etc/inittab
   /sbin/telinit q ; eend $?
 fi
@@ -739,13 +739,14 @@ if checkbootparam "blacklist" ; then
  if [ -z "$INSTALLED" ]; then
   einfo "Bootoption blacklist found."
   BLACK="$(getbootparam 'blacklist' 2>>$DEBUG)"
+  BLACKLIST_FILE='/etc/modprobe.d/grml.conf'
   if [ -n "$BLACK" ] ; then
     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 $?
+        einfo "Blacklisting module ${module} via ${BLACKLIST_FILE}."
+        echo "# begin entry generated by config_blacklist of grml-autoconfig" >> "$BLACKLIST_FILE"
+        echo "blacklist $module"     >> "$BLACKLIST_FILE"
+        echo "alias     $module off" >> "$BLACKLIST_FILE"
+        echo "# end   entry generated by config_blacklist of grml-autoconfig" >> "$BLACKLIST_FILE" ; eend $?
     done
   else
    eerror "No given module for blacklist found. Blacklisting will not work therefore."
@@ -881,19 +882,48 @@ config_swspeak(){
 
 # {{{ 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
-         ewarnKernel 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
 
@@ -1435,7 +1465,12 @@ if checkbootparam ssh ; then
 
    # finally check if we have a password we can use:
    if [ -n "$SSH_PASSWD" ] ; then
-      echo "grml:$SSH_PASSWD" | chpasswd -m
+      # chpasswd sucks, seriously.
+      if chpasswd --help 2>&1 | grep -q -- '-m,' ; then
+        echo "grml:$SSH_PASSWD" | chpasswd -m
+      else
+        echo "grml:$SSH_PASSWD" | chpasswd
+      fi
    fi
 
    einfo 'Starting secure shell server in background.'
@@ -1895,17 +1930,20 @@ if [[ $RC == 0 ]]; then
    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
+      if [ -e /mnt/grml/"${FILENAME}" ] ; then
          einfo "Using /mnt/grml/$FILENAME instead of config.tbz"
-         CONFIG="/mnt/grml/$FILENAME"
+         CONFIG="/mnt/grml/${FILENAME}"
       fi
+   else
+      [ -n "$CONFIG" ] && FILENAME="$(basename $CONFIG)" || FILENAME="config.tbz"
    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
+     ewarn "Sorry, could not find file ${FILENAME} on device ${MOUNTDEVICE} ${MESSAGE}." ; eend 1
    fi
 
    SCRIPT=''
@@ -1918,6 +1956,7 @@ if [[ $RC == 0 ]]; then
    else
    einfo "Could not mount $MOUNTDEVICE to /mnt/grml - sorry." ; eend 1
 fi # mount $MOUNTDEVICE
+
 grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
 
 }
@@ -1932,7 +1971,6 @@ else
    # 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