Serielle Konsole für Server (Grub)
Posted on Tue 08 April 2008 in Linux • 2 min read
Einführung
Wenn wir zwei Server irgendwo (z.B. Rechenzentrum) stehen haben und es die Möglichkeit besteht, dass man beide via Nullmodem-Kabel verbinden, kann man sie auch ohne SSH-Zugang warten (z.B. nach einem fehlgeschlagenen Kernelupdate). Leider nur immer in eine Richtung. Für beide Richtungen bräuchte man 2 Nullmodem-Kabel.
Konfiguration
Damit wir die Möglichkeit haben den Kernel auszuwählen, sollten wir Grub sagen, dass es seine Ausgabe an den seriellen Port weiterleitet.
Dazu fügen wir folgende Zeien in die /boot/grub/menu.lst hinzu.
serial --unit=0 --speed=57600
terminal --timeout=2 serial console
Erklärung:
--unit=0
heißt einfach das der Com1 bzw. ttyS0 genutzt wird. Der Parameter
--speed=57600
steht für die Übertragungsgeschwindingkeit. Standard ist 9600.
--timeout=2 serial console
bedeutet das man 2 Sekunden Zeit hat und das die primäre Ausgabe auf dem seriellen Port und die sekundäre auf der Console ist.
Jetzt wird die Ausgabe vom Grub an den seriellen Port umgeleitet. Damit wir aber auch einen Login an der seriellen Konsole bekommen, müssen wir die /etc/inittab noch bearbeiten.
Wir suchen diesen Teil
# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
und entfernen das # vor der Zeile mit T0 und ändern die Zahl 9600 wieder auf 57600.
Die Zeile
T0:23:respawn:/sbin/getty -L ttyS0 57600 vt100
heißt dann nichts anderes als das nach dem Starten ein Login auf ttyS0 in/mit der Geschwindigkeit von 57600 Kbit/s auf uns wartet.
Damit der Kernel seine Meldungen auf der seriellen Konsole aus gibt, geben wir dem Kernel noch zwei Parameter mit:
console=tty0 console=ttyS0,57600n8
Das sollte dann so in etwa aussehen:
title Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/hda1 ro vga=791 console=tty0 console=ttyS0,57600n8
initrd /boot/initrd.img-2.6.18-6-686
savedefault
Das heißt, dass die Kernelmeldung auf der console und der seriellen Konsole ausgegeben werden. Wenn alles fertig ist, neustarten. Mann kann jetzt zB via minicom auf dem anderen Server die Ausgabe von dem gerade eingerichteten Server sehen.