Support tohd=... bootoption
[grml-autoconfig.git] / autoconfig.functions
index 7af72a2..28b7854 100755 (executable)
@@ -204,12 +204,16 @@ config_language(){
 
  # set default to 'en' in live-cd mode if $LANGUAGE is not yet set:
  if [ -z "$INSTALLED" ] ; then
 
  # set default to 'en' in live-cd mode if $LANGUAGE is not yet set:
  if [ -z "$INSTALLED" ] ; then
-    [ -n "$LANGUAGE" ] || LANGUAGE='en-utf8'
+    [ -n "$LANGUAGE" ] || LANGUAGE='us'
  fi
 
  # if bootoption lang is used update /etc/default/locale, otherwise *not*!
  fi
 
  # if bootoption lang is used update /etc/default/locale, otherwise *not*!
- if [ -n "$BOOT_LANGUAGE" ] ; then
-    [ -x /usr/sbin/grml-setlang ] && /usr/sbin/grml-setlang "$LANGUAGE"
+ if [ -n "$BOOT_LANGUAGE" -a -x /usr/sbin/grml-setlang ] ; then
+    if checkgrmlsmall ; then
+       /usr/sbin/grml-setlang "POSIX"
+    else
+       /usr/sbin/grml-setlang "$LANGUAGE"
+    fi
  fi
 
  # set console font
  fi
 
  # set console font
@@ -826,7 +830,7 @@ config_swspeak(){
    if checkbootparam swspeak ; then
       einfo "Bootoption swspeak found."
 
    if checkbootparam swspeak ; then
       einfo "Bootoption swspeak found."
 
-      if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then
+      if [ ! -d /proc/speakup/ ] && ! grep -q speakup_soft /proc/modules ; then
          ewarn "Kernel does not support software speakup - trying to load kernel module:" ; eend 0
          eindent
          einfo "Loading speakup_soft"
          ewarn "Kernel does not support software speakup - trying to load kernel module:" ; eend 0
          eindent
          einfo "Loading speakup_soft"
@@ -840,27 +844,11 @@ config_swspeak(){
          eoutdent
       fi
 
          eoutdent
       fi
 
-      if [ -d /proc/speakup/ ] || grep -q speakup /proc/modules ; then
+      if [ -d /proc/speakup/ ] || grep -q speakup_soft /proc/modules ; then
          einfo "Kernel supports speakup." ; eend 0
          eindent
          einfo "Kernel supports speakup." ; eend 0
          eindent
-         if [ -x /etc/init.d/speech-dispatcher ] ; then
-            einfo "Starting speech-dispatcher."
-            /etc/init.d/speech-dispatcher start 1>>DEBUG ; eend $?
-            if [ -r /proc/speakup/synth_name ] ; then
-               einfo "Activating sftsyn via /proc in Kernel."
-               echo sftsyn > /proc/speakup/synth_name ; eend $?
-            elif [ -r /sys/modules/speakup/parameters/synth ] ; then
-               einfo "Activating sftsyn via /sys in Kernel."
-               echo sftsyn > /sys/modules/speakup/parameters/synth ; eend $?
-            else
-               eerror "Error when configuring sftsyn via /proc or /sys." ; eend 1
-            fi
             einfo "Just run swspeak if you want to use software synthesizer via speakup."
             flitewrapper "Finished activating software speakup. Just run swspeak when booting finished."
             einfo "Just run swspeak if you want to use software synthesizer via speakup."
             flitewrapper "Finished activating software speakup. Just run swspeak when booting finished."
-         else
-            eerror "speech-dispatcher not available. swspeak will not work without it." ; eend 1
-            flitewrapper "speech-dispatcher not available. speakup will not work without it."
-         fi
          eoutdent
       else
          eerror "Kernel does not seem to support speakup. Skipping swspeak." ; eend 1
          eoutdent
       else
          eerror "Kernel does not seem to support speakup. Skipping swspeak." ; eend 1
@@ -2331,6 +2319,47 @@ fi
 }
 # }}}
 
 }
 # }}}
 
+# {{{ tohd= bootoption
+config_tohd()
+{
+  if checkbootparam "tohd" ; then
+     local TARGET="$(getbootparam 'tohd' 2>>$DEBUG)"
+     if [ -z "$TARGET" ] ; then
+        eerror "Error: tohd specified without any partition, can not continue." ; eend 1
+        eerror "Please use something like tohd=/dev/sda9." ; eend 1
+        return 1
+     fi
+
+     if ! [ -b "$TARGET" ] ; then
+        eerror "Error: $TARGET is not a valid block device, sorry." ; eend 1
+        return 1
+     fi
+
+     if grep -q $TARGET /proc/mounts ; then
+       eerror "$TARGET already mounted, skipping execution of tohd therefore."
+       eend 1
+       return 1
+     fi
+
+     local MOUNTDIR=$(mktemp -d)
+
+     if mount -o rw "$TARGET" "$MOUNTDIR" ; then
+        einfo "Copyring live system to $TARGET - this might take a while"
+        rsync -a --progress /live/image/live $MOUNTDIR
+       sync
+       umount "$MOUNTDIR"
+        eend $?
+       einfo "Booting with \"grml bootfrom=$TARGET\" should work now." ; eend 0
+     else
+        eerror "Error when trying to mount $TARGET, sorry."; eend 1
+        return 1
+     fi
+
+     rmdir "$MOUNTDIR"
+  fi
+}
+# }}}
+
 # {{{ grml2hd: automatic installation
 config_grml2hd(){
 
 # {{{ grml2hd: automatic installation
 config_grml2hd(){