20.6. Einrichten der seriellen Konsole

Beigesteuert von Kazutaka YOKOTA. Auf Grundlage eines Dokuments von Bill Paul.

20.6.1. Einführung

FreeBSD kann ein System mit einem Dumb-Terminal (unintelligente Datenstation) an einer seriellen Schnittstelle als Konsole booten. Diese Konfiguration ist besonders nützlich für Systemadministratoren, die FreeBSD auf Systemen ohne Tastatur oder Monitor installieren wollen, und Entwickler, die den Kernel oder Gerätetreiber debuggen.

Wie in Kapitel 12 beschrieben, besitzt FreeBSD drei Bootphasen. Der Code für die ersten beiden Bootphasen befindet sich im Bootsektor am Anfang der FreeBSD-Slice der Bootplatte. Dieser Bootblock lädt den Bootloader (/boot/loader) in Phase drei.

Um eine serielle Konsole einzurichten, müssen Sie den Bootblock, den Bootloader und den Kernel konfigurieren.

20.6.2. Serielle Konsole einrichten, Kurzfassung

Dieser Abschnitt fasst zusammen, wie Sie eine serielle Konsole einrichten. Es wird vorausgesetzt, dass Sie die Voreinstellungen verwenden und wissen, wie serielle Schnittstellen verbunden werden. Wenn Sie Probleme mit den nachstehenden Schritten haben, schauen Sie sich bitte die ausfürliche Erklärung in Abschnitt 20.6.3 an.

  1. Verbinden Sie die serielle Konsole mit der Schnittstelle COM1.

  2. Das Kommando echo -h > /boot.config aktiviert die serielle Konsole im Boot-Loader und im Kernel.

  3. Ändern Sie in der Datei /etc/ttys den Eintrag für ttyd0 von off zu on. Dieser Schritt aktiviert die Eingabeaufforderung auf der seriellen Konsole (analog zur normalen Bildschirmkonsole).

  4. Starten Sie das System mit dem Kommando shutdown -r now neu, damit die serielle Konsole aktiv ist.

20.6.3. Konfiguration der Konsole

  1. Bereiten Sie ein serielles Kabel vor.

    Sie benötigen entweder ein Nullmodemkabel oder ein serielles Standard Kabel mit einem Nullmodemkabel-Adapter. In Abschnitt 20.2.2 wurden serielle Kabel beschrieben.

  2. Trennen Sie die Tastatur vom Computer.

    Die meisten PC Systeme suchen beim Power On Self Test (POST) nach einer Tastatur und geben eine Fehlermeldung aus, wenn sie keine finden. Einige Maschinen werden sich sogar weigern, ohne Tastatur zu booten.

    Wenn Ihr Rechner trotz einer Fehlermeldung normal weiterbootet, brauchen Sie weiter nichts zu tun. Beispielsweise geben einige Maschinen mit einem Phoenix BIOS nur “Keyboard failed” aus und booten dann normal weiter.

    Wenn Ihr System ohne Tastatur nicht booten will, müssen Sie das BIOS so konfigurieren, das es diesen Fehler ignoriert (wenn das möglich ist). Das Handbuch zu Ihrem Motherboard sollte beschreiben, wie das zu bewerkstelligen ist.

    Tipp: Wenn Sie im BIOS “Not installed” für die Tastatur einstellen, heißt das nicht, dass Sie die Tastatur nicht benutzen können, sondern dies weist das BIOS nur an, nicht nach einer Tastatur zu suchen. Trotz dieser Einstellung können Sie die Tastatur angeschlossen lassen und sie später verwenden.

    Anmerkung: Wenn Ihr System über eine PS/2® Maus verfügt, müssen Sie diese wahrscheinlich auch abziehen. Da sich die PS/2 Maus und die Tastatur einige Hardwarekomponenten teilen, kann das dazu führen, dass die Hardwareerkennung fälschlicherweise eine Tastatur findet, wenn eine PS/2 Maus angeschlossen ist. Gateway 2000 Pentium 90 MHz Systemen wird dieses Verhalten nachgesagt. Normalerweise ist das kein Problem, da eine Maus ohne Tastatur sowieso nicht sinnvoll einsetzbar ist.

  3. Schließen Sie einen Dumb-Terminal an COM1 (sio0) an.

    Wenn Sie keinen Dumb-Terminal besitzen, können Sie einen alten PC/XT mit einem Terminalemulator oder die serielle Schnittstelle eines anderen UNIX® Rechners benutzen. Sie benötigen auf jeden Fall eine freie erste serielle Schnittstelle (COM1). Zurzeit ist es nicht möglich, in den Bootblöcken eine andere Schnittstelle zu konfigurieren, ohne diese neu zu kompilieren. Wenn Sie COM1 bereits für ein anderes Gerät benutzen, müssen Sie dieses Gerät temporär entfernen und einen neuen Bootblock sowie Kernel installieren, wenn Ihr FreeBSD erst einmal installiert ist. Auf einem Server sollte COM1 ohnehin verfügbar sein. Wenn Sie die Schnittstelle für ein anderes Gerät benutzen und Sie dieses nicht auf COM2 (sio1) legen können, sollten Sie sich nicht an erster Stelle mit dem Aufsetzen einer seriellen Konsole beschäftigen.

  4. Stellen Sie sicher, dass Ihre Kernelkonfiguration die richtigen Optionen für COM1 (sio0) enthält.

    Relevante Optionen sind:

    0x10

    Aktiviert die Konsolenunterstützung für dieses Gerät. Zurzeit kann nur ein Gerät die Konsolenunterstützung aktiviert haben. Das erste, in der Konfigurationsdatei aufgeführte Gerät, mit dieser Option, verfügt über eine aktivierte Konsolenunterstützung. Beachten Sie, dass diese Option alleine nicht ausreicht, um die serielle Konsole zu aktivieren. Setzen Sie entweder noch die nachfolgend diskutierte Option oder verwenden Sie beim Booten, wie unten beschrieben, den Schalter -h.

    0x20

    Das erste Gerät in der Kernelkonfigurationsdatei mit dieser Option wird, unabhängig von dem unten diskutierten Schalter -h, zur Konsole. Dies ersetzt COMCONSOLE der FreeBSD Versionen 2.X. Die Option 0x20 muss zusammen mit 0x10 verwendet werden.

    0x40

    Reserviert dieses Gerät und sperrt es für normale Zugriffe. Sie sollten diese Option nicht auf dem Gerät setzen, das Sie als serielle Konsole verwenden wollen. Der Zweck dieser Option ist es, dieses Gerät für das Remote-Debuggen zu reservieren. Das FreeBSD Developers' Handbook enthält dazu weitere Informationen.

    Anmerkung: Unter FreeBSD 4.0 und späteren Versionen hat sich die Bedeutung dieser Option leicht geändert und es existiert eine weitere Option, um ein Gerät zum Remote-Debuggen zu verwenden.

    Beispiel:

    device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4
    

    Weitere Einzelheiten entnehmen Sie bitte sio(4).

    Wenn diese Optionen nicht gesetzt sind, müssen Sie auf einer anderen Konsole beim Booten UserConfig starten oder den Kernel neu kompilieren.

  5. Erstellen Sie boot.config im Rootverzeichnis der a-Partition des Bootlaufwerks.

    Der Code des Bootblocks entnimmt dieser Datei, wie Sie Ihr System booten möchten. Um die serielle Konsole zu aktivieren, müssen Sie hier eine oder mehrere Optionen (alle in derselben Zeile) angeben. Die folgenden Optionen stehen zur Auswahl der Konsole zur Verfügung:

    -h

    Schaltet zwischen der internen und der seriellen Konsole um. Wenn Sie beispielsweise von der internen Konsole (Bildschirm) booten, weist -h den Bootloader und den Kernel an, die serielle Schnittstelle als Konsole zu nehmen. Wenn die Konsole normal auf der seriellen Schnittstelle liegt, wählen Sie mit -h den Bildschirm aus.

    -D

    Schaltet zwischen Einzelkonsole und Dual-Konsole um. Die Einzelkonsole ist entweder die interne Konsole (der Bildschirm) oder die serielle Schnittstelle, je nach dem Stand von -h. Im Dual-Konsolen Betrieb ist die Konsole, unabhängig von -h, gleichzeitig der Bildschirm und die serielle Schnittstelle. Dies trifft aber nur zu, wenn der Bootblock ausgeführt wird. Sobald der Bootloader ausgeführt wird, wird die durch -h gegebene Konsole die alleinige Konsole.

    -P

    Veranlasst den Bootblock nach einer Tastatur zu suchen. Wenn keine Tastatur gefunden wird, werden -D und -h automatisch gesetzt.

    Anmerkung: Wegen Platzbeschränkungen in den Bootblöcken kann -P nur erweiterte Tastaturen erkennen. Tastaturen mit weniger als 101 Tasten (und ohne F11 und F12 Tasten) werden wahrscheinlich, wie vielleicht auch die Tastaturen einiger Laptops, nicht erkannt. Wenn dies bei Ihrem System der Fall ist, können Sie -P nicht verwenden, da es leider noch keine Umgehung für dieses Problem gibt.

    Benutzen Sie also entweder -P, um die Konsole automatisch zu setzen, oder -h, um die serielle Konsole zu verwenden.

    In boot.config können Sie auch andere, in boot(8) beschriebene Optionen, aufnehmen.

    Mit Ausnahme von -P werden die Optionen an den Bootloader (/boot/loader) weitergegeben. Der Bootloader untersucht dann einzig -h um festzustellen, welches Gerät die Konsole wird. Wenn Sie also nur -D angegeben haben, können Sie die serielle Schnittstelle nur als Konsole verwenden während der Bootblock ausgeführt wird. Danach wird der Bootloader, da ja -h fehlt, den Bildschirm zur Konsole machen.

  6. Booten Sie die Maschine.

    Wenn Sie das FreeBSD-System starten, werden die Bootblöcke den Inhalt von /boot.config auf der Konsole ausgeben:

    /boot.config: -P
    Keyboard: no
    

    Die zweite Zeile sehen Sie nur, wenn Sie in /boot.config -P angegeben haben. Sie zeigt an, ob eine Tastatur angeschlossen ist oder nicht. Die Meldungen gehen je nach den Einstellungen in /boot.config auf die interne Konsole, die serielle Konsole, oder beide Konsolen.

    Optionen Meldungen erscheinen auf
    keine der internen Konsole
    -h der seriellen Konsole
    -D der seriellen und der internen Konsole
    -Dh der seriellen und der internen Konsole
    -P, mit Tastatur der internen Konsole
    -P, ohne Tastatur der seriellen Konsole

    Nach den oben gezeigten Meldungen gibt es eine kleine Verzögerung bevor die Bootblöcke den Bootloader laden und weitere Meldungen auf der Konsole erscheinen. Sie können die Ausführung der Bootblöcke unterbrechen, um zu überprüfen, ob auch alles richtig aufgesetzt ist, brauchen das aber unter normalen Umständen nicht zu tun.

    Drücken Sie eine Taste außer Enter um den Bootvorgang zu unterbrechen. Sie erhalten dann ein Prompt, an dem Sie weitere Eingaben tätigen können:

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/boot/loader
    boot:
    

    Je nach Inhalt von /boot.config erscheint das Prompt auf der seriellen Konsole, der internen Konsole oder beiden Konsolen. Wenn die Meldung auf der richtigen Konsole erscheint, drücken Sie Enter um fortzufahren.

    Wenn Sie das Prompt auf der seriellen Konsole erwartet haben, dort aber nichts sehen, liegt ein Fehler in Ihren Einstellungen vor. Als Umgehung geben Sie an der momentanen Konsole -h ein, um den Bootblock und den Bootloader auf die serielle Konsole umzustellen. Führen Sie dann den Bootvorgang mit Enter weiter und wenn das System gebootet hat, können Sie die fehlerhaften Einstellungen korrigieren.

Nachdem der Bootloader geladen wurde und Sie sich in der dritten Bootphase befinden, können Sie immer noch zwischen der internen und der seriellen Konsole auswählen. Setzen Sie dazu, wie in Abschnitt 20.6.6 beschrieben, die entsprechenden Variablen des Bootloaders.

20.6.4. Zusammenfassung

Die folgende Übersicht zeigt, welche Konsole, abhängig von den getroffenen Einstellungen, ausgewählt wird.

20.6.4.1. Fall 1: Option 0x10 für sio0

device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4
Optionen in /boot.config Konsole in den Bootblöcken Konsole im Bootloader Konsole im Kernel
keine interne interne interne
-h serielle serielle serielle
-D serielle und interne interne interne
-Dh serielle und interne serielle serielle
-P, mit Tastatur interne interne interne
-P, ohne Tastatur serielle und interne serielle serielle

20.6.4.2. Fall 2: Option 0x30 für sio0

device sio0 at isa? port IO_COM1 tty flags 0x30 irq 4
Optionen in /boot.config Konsole in den Bootblöcken Konsole im Bootloader Konsole im Kernel
keine interne interne serielle
-h serielle serielle serielle
-D serielle und interne interne serielle
-Dh serielle und interne serielle serielle
-P, mit Tastatur interne interne serielle
-P, ohne Tastatur serielle und interne serielle serielle

20.6.5. Hinweise zur seriellen Konsole

20.6.5.1. Verwenden einer höheren Geschwindigkeit

Die Vorgabewerte für die Kommunikationsparameter der seriellen Schnittstelle sind: 9600 baud, 8 Bit, keine Parität und ein Stopp-Bit. Wenn Sie die Geschwindigkeit ändern wollen, müssen Sie mindestens die Bootblöcke neu kompilieren. Fügen Sie die folgende Zeile in /etc/make.conf hinzu und kompilieren Sie Bootblöcke neu:

BOOT_COMCONSOLE_SPEED=19200

Der Bau und die Installation eines neuen Bootblocks wird in Abschnitt 20.6.5.2 beschrieben.

Wenn die serielle Konsole auf einem anderen Weg als durch die Verwendung von -h konfiguriert wird, oder die serielle Konsole des Kernels eine andere als die der Bootblöcke ist, müssen der Kernelkonfiguration zudem noch die folgende Option hinzufügen und einen neuen Kernel kompilieren:

options CONSPEED=19200

20.6.5.2. Eine andere Schnittstelle als sio0 benutzen

Wenn Sie, warum auch immer, ein anderes Gerät als sio0 für die serielle Konsole einsetzen wollen, kompilieren Sie bitte die Bootblöcke, den Bootloader und den Kernel nach dem folgenden Verfahren neu.

  1. Installieren Sie die Kernelquellen (siehe Kapitel 19).

  2. Setzen Sie in /etc/make.conf BOOT_COMCONSOLE_PORT auf die Adresse der Schnittstelle (0x3F8, 0x2F8, 0x3E8 oder 0x2E8), die Sie benutzen möchten. Sie können nur sio0 bis sio3 (COM1 bis COM4) benutzen, Multiportkarten können Sie nicht als Konsole benutzen. Interrupts müssen Sie hier nicht angeben.

  3. Erstellen Sie eine angepasste Kernelkonfiguration und geben Sie dort die richtigen Optionen für die Schnittstelle, die Sie benutzen möchten, an. Wenn Sie zum Beispiel sio1 (COM2) zur Konsole machen wollen, geben Sie dort entweder

    device sio1 at isa? port IO_COM2 tty flags 0x10 irq 3
    

    oder

    device sio1 at isa? port IO_COM2 tty flags 0x30 irq 3
    

    an. Keine andere serielle Schnittstelle sollte als Konsole definiert werden.

  4. Übersetzen und installieren Sie die Bootblöcke und den Bootloader:

    # cd /sys/boot
    # make clean
    # make
    # make install
    
  5. Bauen und installieren Sie einen neuen Kernel.

  6. Schreiben Sie die Bootblöcke mit disklabel(8) auf die Bootplatte und booten Sie den neuen Kernel.

20.6.5.3. DDB Debugger über die serielle Schnittstelle

Wenn Sie den Kerneldebugger über eine serielle Verbindung bedienen möchten (nützlich, kann aber gefährlich sein, wenn auf der Leitung falsche BREAK-Signale generiert werden), sollten Sie einen Kernel mit den folgenden Optionen erstellen:

options BREAK_TO_DEBUGGER
options DDB

20.6.5.4. Benutzung der seriellen Konsole zum Anmelden

Da Sie schon die Bootmeldungen auf der Konsole verfolgen können und den Kerneldebugger über die Konsole bedienen können, wollen Sie sich vielleicht auch an der Konsole anmelden.

Öffnen Sie /etc/ttys in einem Editor und suchen Sie nach den folgenden Zeilen:

ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure

ttyd0 bis ttyd3 entsprechen COM1 bis COM4. Ändern Sie für die entsprechende Schnittstelle off zu on. Wenn Sie auch die Geschwindigkeit der seriellen Schnittstelle geändert haben, müssen Sie std.9600 auf die momentane Geschwindigkeit, zum Beispiel std.19200, anpassen.

Sie sollten auch den Terminaltyp von unknown auf den tatsächlich verwendeten Terminal setzen.

Damit die Änderungen an der Datei wirksam werden, müssen Sie noch kill -HUP 1 absetzen.

20.6.6. Die Konsole im Bootloader ändern

In den vorigen Abschnitten wurde beschrieben, wie Sie die serielle Konsole durch Änderungen im Bootblock aktivieren. Dieser Abschnitt zeigt Ihnen, wie Sie mit Kommandos und Umgebungsvariablen die Konsole im Bootloader definieren. Da der Bootloader die dritte Phase im Bootvorgang ist und nach den Bootblöcken ausgeführt wird, überschreiben seine Einstellungen die des Bootblocks.

20.6.6.1. Festlegen der Konsole

Mit einer einzigen Zeile in /boot/loader.rc können Sie den Bootloader und den Kernel anweisen, die serielle Schnittstelle zur Konsole zu machen:

set console=comconsole

Unabhängig von den Einstellungen im Bootblock legt dies die Konsole fest.

Die obige Zeile sollte die erste Zeile in /boot/loader.rc sein, so dass Sie die Bootmeldungen so früh wie möglich auf der Konsole sehen.

Analog können Sie die interne Konsole verwenden:

set console=vidconsole

Wenn Sie console nicht setzen, bestimmt der Bootloader (und damit auch der Kernel) die Konsole über die -h Option des Bootblocks.

Ab FreeBSD 3.2 können Sie die Bootkonsole in /boot/loader.conf.local oder /boot/loader.conf anstatt in /boot/loader.rc angeben. In /boot/loader.rc finden Sie bei dieser Methode den folgenden Inhalt:

include /boot/loader.4th
start

Erstellen Sie /boot/loader.conf.local und fügen die Zeile

console=comconsole

oder

console=vidconsole

ein. Weitere Informationen erhalten Sie in loader.conf(5).

Anmerkung: Momentan gibt es im Bootloader nichts vergleichbares zu -P im Bootblock. Damit kann die Konsole nicht automatisch über das Vorhandensein einer Tastatur festgelegt werden.

20.6.6.2. Eine andere Schnittstelle als sio0 benutzen

Sie müssen den Bootloader neu kompilieren, wenn Sie eine andere Schnittstelle als sio0 benutzen wollen. Folgen Sie der Anleitung aus Abschnitt 20.6.5.2.

20.6.7. Vorbehalte

Hinter dem ganzen steckt die Idee, Server ohne Hardware für Grafik und ohne Tastatur zu betreiben. Obwohl es die meisten Systeme erlauben, ohne Tastatur zu booten, gibt es leider nur wenige Systeme, die ohne eine Grafikkarte booten. Maschinen mit einem AMI BIOS können ohne Grafik booten, indem Sie den Grafikadapter im CMOS-Setup auf Not installed setzen.

Viele Maschinen unterstützen diese Option allerdings nicht. Damit diese Maschinen booten, müssen sie über eine Grafikkarte, auch wenn es nur eine alte Monochromkarte ist, verfügen. Allerdings brauchen Sie keinen Monitor an die Karte anzuschließen. Sie können natürlich auch versuchen, auf diesen Maschinen ein AMI BIOS zu installieren.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:56:55