config_hostname(){
if checkbootparam 'hostname' ; then
HOSTNAME="$(getbootparam 'hostname' 2>>$DEBUG)"
+ if [ -z "$HOSTNAME" ] && [ -x /usr/bin/random-hostname ] ; then
+ einfo "Generating random hostname as no hostname was specified."
+ HOSTNAME="$(/usr/bin/random-hostname)"
+ eend $?
+ fi
einfo "Setting hostname to $HOSTNAME as requested."
grml-hostname $HOSTNAME >>$DEBUG ; RC=$?
[ "$RC" = "0" ] && hostname $HOSTNAME
# activate serial console {{{
config_console(){
if checkbootparam 'console'; then
+ local line
+ local ws
+ ws=' '
+
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 set up ttyS0/9600."
+ sed -i "/^#grmlserial#/iT0:23:respawn:/bin/bash -c \"/sbin/getty -L /dev/ttyS0 -l /usr/bin/zsh-login 9600 vt100 || sleep 30\"" /etc/inittab
+ eend 0
+ 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 "Activating console login on device ${device} with speed ${speed}."
+ local number="${device#ttyS}"
+ sed -i "/^#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/bin/zsh-login $speed vt100 || sleep 30\"" /etc/inittab
+ eend $?
+ telinitq="1"
+ eoutdent
+ ;;
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
+ this="${line%%[$ws]*}"
+ line="${line#*[$ws]}"
+ done
- /sbin/telinit q
+ if [ -n "$telinitq" ]; then
+ /sbin/telinit q
+ fi
eend $?
fi
}