X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=7fff972e5cf37bdfc923d6a0ea4f50166b62a1ec;hp=c0c1111b4f9c23ffbbb631421af3e94a08f065a9;hb=67efa5840cc5246ec2e31fcf645bad32e89ae285;hpb=975698c289322e14b730adaae36a907b30fc251e diff --git a/autoconfig.functions b/autoconfig.functions index c0c1111..7fff972 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -356,6 +356,11 @@ config_language(){ 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 @@ -575,9 +580,58 @@ 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 - /sbin/telinit q + local line + local ws + ws=' ' + + einfo "Bootoption for serial console detected:" + + 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 + this="${line%%[$ws]*}" + line="${line#*[$ws]}" + done + + if [ -n "$telinitq" ]; then + /sbin/telinit q + fi eend $? fi } @@ -1977,6 +2031,7 @@ fi # {{{ /cdrom/.*-options config_debs(){ if checkbootparam 'debs' ; then + iszsh && setopt localoptions shwordsplit DEBS="$(getbootparam 'debs' 2>>$DEBUG)" if ! echo $DEBS | grep -q '/'; then # backwards compatibility: if no path is given get debs from debs/ @@ -2374,7 +2429,7 @@ config_lvm(){ # {{{ debnet: setup network based on an existing one found on a partition config_debnet(){ if checkbootparam 'debnet' ; then - iszsh && setopt shwordsplit + iszsh && setopt localoptions shwordsplit DEVICES="$(< /proc/partitions tail -n +3 | awk '{print "/dev/"$4}' | tr "\n" " ")" DEVICES="$DEVICES $(ls /dev/mapper/*)" FOUND_DEBNET=""