Das FreeBSD-Handbuch
Zurück | Kapitel 26. Serielle Datenübertragung | Weiter

# 26.6. Einrichten der seriellen Konsole

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

## 26.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.

## 26.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.

1. Verbinden Sie die serielle Konsole mit `COM1` sowie dem Kontrollterminal.

2. Um die Startmeldungen der seriellen Konsole zu sehen, geben Sie als `root` Folgendes ein:

       # echo 'console="comconsole"' >> /boot/loader.conf

3. Ändern Sie in `/etc/ttys` den Eintrag für `ttyd0` von `off` auf `on`. Zusätzlich sollten Sie den Wert `dialup` auf `vt100` ändern. Nur so wird auf der seriellen Konsole eine Eingabeaufforderung mit einer Passwortabfrage aktiviert.

4. Starten Sie nun das System neu, damit die serielle Konsole aktiviert wird.

Wenn Sie eine unterschiedliche Konfiguration benötigen, sollten Sie Abschnitt 26.6.3 lesen.

## 26.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 26.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: Selbst wenn Sie im BIOS “Not installed” für die Tastatur einstellen, können Sie eine Tastatur angeschlossen haben und diese auch weiterhin benutzen, da sie mit dieser Anweisung das BIOS lediglich anweisen, nach dem Einschalten des Rechners nicht nach einer Tastatur zu suchen und den Rechner ohne entsprechende Fehlermeldung zu starten. Wenn die oben beschriebene Option nicht im BIOS vorhanden ist, halten Sie stattdessen Ausschau nach einer “Halt on Error” Option. Sie können den gleichen Effekt wie oben erzielen, wenn Sie diese Option auf “All but Keyboard” oder sogar “No Errors” setzen.

   > 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. 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.

   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 26.6.6 beschrieben, die entsprechenden Variablen des Bootloaders.

## 26.6.4. Zusammenfassung

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

### 26.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

### 26.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

## 26.6.5. Hinweise zur seriellen Konsole

### 26.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 Standardgeschwindigkeit ändern wollen, haben Sie folgende Möglichkeiten:

- Geben Sie die neue Konsolengeschwindigkeit mit `BOOT_COMCONSOLE_SPEED` an und kompilieren Sie die Bootblöcke neu. Ausführliche Informationen zum Bau und zur Installation von neuen Bootblöcken finden Sie im Abschnitt 26.6.5.2 des Handbuchs.

  Wenn die serielle Konsole nicht mit der Option `-h` gestartet wird, oder wenn die verwendete serielle Konsole sich von der von den Bootblöcken verwendeten unterscheidet, müsssen Sie zusätzlich die folgende Option in Ihre Kernelkonfigurationsdatei aufnehmen und den Kernel neu bauen:

      options CONSPEED=19200

- Verwenden Sie die Option `-S`, um den Kernel zu booten. Die Option `-S` kann auch in die Datei `/boot.config` aufgenommen werden. Eine Beschreibung dieses Vorgangs sowie eine Auflistung der von `/boot.config` unterstützten Optionen finden Sie in der Manualpage boot(8).

- Aktivieren Sie die Option `comconsole_speed` in der Datei `/boot/loader.conf`.

  Diese Option setzt voraus, dass auch die Optionen `console`, `boot_serial`, sowie `boot_multicons` in der Datei `/boot/loader.conf` gesetzt sind. Im Folgenden finden Sie ein Beispiel, in dem `comconsole_speed` verwendet wird, um die Geschwindigkeit der seriellen Konsole zu ändern:

      boot_multicons="YES"
      boot_serial="YES"
      comconsole_speed="115200"
      console="comconsole,vidconsole"

### 26.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 24).

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 bsdlabel(8) auf die Bootplatte und booten Sie den neuen Kernel.

### 26.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

### 26.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.

## 26.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.

### 26.6.6.1. Festlegen der Konsole

Mit einer einzigen Zeile in `/boot/loader.conf` 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.conf` 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.

Sie können die Bootkonsole in `/boot/loader.conf.local` oder `/boot/loader.conf` angeben.

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.

### 26.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 26.6.5.2.

## 26.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.

Zurück | Zum Anfang | Weiter
Verbindungen nach Außen | Nach oben | PPP und SLIP

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>.