Linux PC ohne Tastatur und Monitor

Problemstellung

Wir möchten eine Linuxbox betreiben, die nützliche Dienste (z.B. Firewall, Server aller Art, etc…) übernimmt. Dafür benötigt man ja normalerweise keinen Monitor und keine Tastatur, denn an diesen Boxen wird ja nicht direkt gearbeitet. Wie können wir nun aber die Box administrieren, wenn z.B. der Login per ssh oder telnet mal nicht funktioniert? Was tun wir bei kritischen Softwareupdates (z.B. so-libs), die wir im Single-User Mode (i.A. dann ohne Netzwerkunterstützung) durchführen müssen?

Lösung

Wir schließen ein ASCII-Terminal an die serielle Schnittstelle an. Dies kann natürlich auch ein anderer PC mit Terminalprogramm sein. Die Verbindung der beiden Boxen erfolgt durch ein Nullmodemkabel. Dazu genügt ein 3-Draht-Kabel (nur TXD, RXD und Masse beschaltet). Als Terminalprogramm unter Linux können wir z.B. minicom nehmen (das dürfte wohl bei jeder Distri dabei sein). Auf der monitorlosen Linuxbox müssen wir vorher allerdings ein paar Einstellungen vornehmen.

init-Prozess

Der init-Prozess muß auch ein getty für die serielle Schnittstelle starten. Dazu müssen wir in der /etc/inittab eine kleine Änderung machen:

s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100

Meistens ist der Login per serieller Schnittstelle schon vorgesehen, so daß wir nur ein Kommentarzeichen entfernen müssen. Die Änderung wird durch ein

kill -HUP 1

aktiv. Nun können wir uns auf der laufenden Box über die serielle Schnittstelle einloggen. Wenn wir allerdings auch den Bootvorgang verfolgen wollen oder in diesen eingreifen wollen, ist noch eine Änderung am OS-Loader nötig.

lilo

Vom lilo benötigen wir mindestens die Version 8. Besser ist allerdings eine Version ab 21.7. Die Änderungen beschränken sich auf die Konfigurationsdatei /etc/lilo.conf:

delay = 50
serial=0,9600n8
...
image = /boot/vmlinuz
  label = linux
  ...
  append = "console=ttyS0"

Die Anweisung serial sorgt dafür, daß die 1. serielle Schnittstelle auf 9600 bit/s, 8 Datenbits, kein Paritätsbit eingestellt wird. console=ttyS0 sagt dem Kernel, das die Bootmeldungen auf die 1. serielle Schnittstelle geschickt werden. Durch Aufruf von lilo werden diese Änderungen übernommen.

BIOS

Um am PC-BIOS Einstellungen vorzunehmen, sind wir immer noch auf Monitor und Tastatur angewiesen. Jedenfalls habe ich bis jetzt noch keine brauchbare Lösung gefunden, und da das PC-BIOS nicht im Source vorliegt…… :-(

Linux booten

1. Beispiel: Bootmenü des lilo verwenden

Bei angeschlossener Tastatur können wir das erreichen, indem wir innerhalb der ersten 5 Sekunden (siehe delay in /etc/lilo.conf) nach dem Aktivwerden von lilo die SHIFT Taste drücken. Bei Verwendung der seriellen Schnittstelle müssen wir statt dessen mit dem Terminalprogramm ein BREAK senden. Bei minicom geschieht das mit CTRL+A F. Nun können wir mit der TAB Taste eine Liste der bootbaren Kernel/OS erhalten. Dann einfach diesen Namen (siehe label in /etc/lilo.conf) eintippen.

2. Beispiel: runlevel 2 booten

Nach dem Aktivwerden von lilo ein BREAK senden und dann den zu bootenden Kernel (in diesem Beispiel linux) und das runlevel angeben. z.B.:

linux 2

Alle möglichen anderen Kernel Parameter sind natürlich auch denkbar. z.B.:

linux root=/dev/hda2 ro -b

Root-Device ist /dev/hda2, es soll read-only gemountet werden. -b sagt dem Kernel, er soll eine Shell bereitstellen, bevor er irgendwelche Startup-Skripte ausführt. Dies ist ganz hilfreich, falls man mal das root-Dateisystem reparieren muß.

Haben wir doch einmal Tastatur und Monitor angeschlossen, so können wir dann beim Booten console=tty1 angeben, dann sehen wir die Kernelmeldungen auf dem Monitor.

Wenn wir nun auch eine Distribution verwenden, die die Administration des Systems ohne grafischen Schnickschnack zulässt, dann steht der Linuxbox ohne Tastatur und Monitor nichts mehr im Weg. Beispiele:

Hier ist das Thema ausführlich behandelt:

interessantes Randthema

Booten von CDROM auf Computern, deren BIOS das nicht oder nicht richtig unterstützt:

Smart Boot Manager

Installation des Smart-Bootmanagers auf Diskette

Auf dem Slackware ftp Server liegt ein fertiges Image, das folgendermaßen auf Diskette installiert werden kann:

wget ftp://ftp.slackware.com/pub/slackware/slackware-9.0/isolinux/sbootmgr/sbootmgr.dsk
cat sbootmgr.dsk > /dev/fd0

Lizenz

Dieser Text unterliegt der GNU Free Documentation License (FDL). Freie Verbreitung in modifizierter oder unmodifizierter Form ist erlaubt; Modifikationen müssen unmißverständlich gekennzeichnet sein und ebenfalls unter der FDL vertrieben werden.