Do not check for bootoption console=ttyS as this might fail, instead assume safe...
[grml-autoconfig.git] / autoconfig.functions
index c0c1111..0b9d51d 100755 (executable)
@@ -575,8 +575,38 @@ fi
 # activate serial console {{{
 config_console(){
 if checkbootparam 'console'; then
-  einfo "Bootoption for serial console detected, activating console login."
-  sed -i 's/^#grmlserial#//' /etc/inittab
+  einfo "Bootoption for serial console detected:"
+
+  local serial="$(getbootparam console)"
+  if ! echo $serial | grep -q ttyS ; then
+    ewarn "Warning: console=ttyS... not specified as last console= option. Falling back to defaults."
+    eend 0
+    local speed="9600"
+  else
+    local option="${serial##*,}"
+    # default (works for kvm & CO):
+    local speed="115200,57600,38400,19200,9600,4800,2400,1200";
+    # ... unless overriden by command line:
+    case "$option" in
+      115200*) speed=115200 ;;
+       57600*) speed=57600 ;;
+       38400*) speed=38400 ;;
+       19200*) speed=19200 ;;
+        9600*) speed=9600 ;;
+        4800*) speed=4800 ;;
+        2400*) speed=2400 ;;
+        1200*) speed=1200 ;;
+    esac
+  fi
+
+  eindent
+    einfo "Setting baud rate to ${speed}."
+    sed -i "s/%serialspeed%/$speed/" /etc/inittab ;  eend $?
+
+    einfo "Activating console login."
+    sed -i 's/^#grmlserial#//' /etc/inittab ; eend $?
+  eoutdent
+
   /sbin/telinit q
   eend $?
 fi