From: Marc Haber Date: Wed, 21 Jul 2010 20:33:38 +0000 (+0200) Subject: make config_console handle multiple console=-settings allow devices > ttyS1 X-Git-Tag: v0.9.12~3 X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=commitdiff_plain;h=f193f810048be63d821312157e5ede23910f30b4 make config_console handle multiple console=-settings allow devices > ttyS1 --- diff --git a/autoconfig.functions b/autoconfig.functions index 0b9d51d..b75f648 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -574,40 +574,59 @@ fi # activate serial console {{{ config_console(){ +local line +local ws +ws=' ' + if checkbootparam 'console'; then 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 ;; + line="$CMDLINE x " + this="" + line="${line#*[$ws]}" + local telinitq="" + while [ -n "$line" ]; do + case "$this" in + console=*) + local serial="$this" + local device="${this%%,*}" + local device="${device##*=}" + 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 "Activting console login on device ${device} with speed ${speed}." + local number="${device#ttyS}" + local inittab=../inittab + sed -i "/#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/bin/zsh-login $speed vt100 || sleep 30\"" $inittab ; eend $? + telinitq="1" + eoutdent + ;; esac + this="${line%%[$ws]*}" + line="${line#*[$ws]}" + done + + if [ -n "$telinitq" ]; then + /sbin/telinit q 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 }