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 13, FreeBSDs Bootvorgang 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 in Phase drei.
Um eine serielle Konsole einzurichten, muss der Bootblock, der Bootloader und der Kernel konfiguriert werden.
Dieser Abschnitt bietet einen schnellen Überblick über die Einrichtung einer seriellen Konsolen. Es wird vorausgesetzt, dass die Voreinstellungen verwendet werden.
Verbinden Sie die serielle Konsole mit
COM1
sowie dem Kontrollterminal.
Um die Startmeldungen der seriellen Konsole zu sehen,
geben Sie als root
folgendes ein:
#
echo 'console="comconsole"' >> /boot/loader.conf
Ändern Sie in /etc/ttys
den Eintrag für ttyu0
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.
Starten Sie nun das System neu, damit die serielle Konsole aktiviert wird.
Wenn Sie eine unterschiedliche Konfiguration benötigen, lesen Sie den nächsten Abschnitt für eine tiefer gehende Erklärung.
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.1, „Kabel und Schnittstellen“ werden serielle Kabel beschrieben.
Trennen Sie die Tastatur vom Computer.
Viele 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 der Rechner trotz einer Fehlermeldung normal weiterbootet, brauchen Sie weiter nichts zu tun.
Wenn das System ohne Tastatur nicht booten will, müssen Sie das BIOS so konfigurieren, dass es diesen Fehler ignoriert (wenn das möglich ist). Das Handbuch zum Motherboard sollte beschreiben, wie das zu bewerkstelligen ist.
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.
Wenn das 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.
Schließen Sie einen Dumb-Terminal an
COM1
(sio0
)
an.
Wenn Sie keinen Dumb-Terminal besitzen, können Sie
einen alten Computer 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 FreeBSD erst einmal installiert
ist.
Stellen Sie sicher, dass die 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 finden Sie in sio(4).
Wenn diese Optionen nicht gesetzt sind, müssen Sie auf einer anderen Konsole beim Booten UserConfig starten oder den Kernel neu kompilieren.
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.
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 das der
Fall ist, können Sie -P
nicht verwenden, da es leider keine Abhilfe
für dieses Problem gibt.
Benutzen Sie also entweder -P
, um die
Konsole automatisch zu setzen, oder -h
, um die
serielle Konsole zu verwenden.
Weitere Optionen werden in boot(8) beschrieben.
Mit Ausnahme von -P
werden die
Optionen an den Bootloader 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.
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 kein Prompt auf der seriellen Konsole erscheint,
liegt ein Fehler in den Einstellungen vor. Als Abhilfe
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.
Während der dritten Bootphase können Sie immer noch zwischen der internen und der seriellen Konsole auswählen. Setzen Sie dazu, wie in Abschnitt 26.6.5, „Die Konsole im Bootloader ändern“ beschrieben, die entsprechenden Variablen des Bootloaders.
Die folgende Tabelle bietet eine Zusammenfassung der verschiedenen Einstellungen, die in diesem Abschnitt diskutiert wurden:
sio0
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 |
sio0
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 |
Die Vorgabewerte für die Kommunikationsparameter der seriellen Schnittstelle sind: 9600 baud, 8 Bit, keine Parität und ein Stopp-Bit. Um die Standardgeschwindigkeit zu ändern, stehen folgende Möglichkeiten zur Verfügung:
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.4.2, „Eine andere Schnittstelle als sio0
benutzen“ 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
die Kernelkonfigurationsdatei aufnehmen und den Kernel
neu bauen:
options CONSPEED=19200
Verwenden Sie die Option -S
, um den
Kernel zu booten. Eine Beschreibung dieses Vorgangs
sowie eine Auflistung der von
/boot.config
unterstützten Optionen
finden Sie in boot(8).
Aktivieren Sie die Option
comconsole_speed
in
/boot/loader.conf
.
Diese Option setzt voraus, dass auch die Optionen
console
,
boot_serial
, sowie
boot_multicons
in
/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"
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.
Installieren Sie die Kernelquellen wie im Kapitel 24, FreeBSD aktualisieren beschrieben.
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.
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.
Übersetzen und installieren Sie die Bootblöcke und den Bootloader:
#
cd /sys/boot
#
make clean
#
make
#
make install
Bauen und installieren Sie einen neuen Kernel.
Schreiben Sie die Bootblöcke mit bsdlabel(8) auf die Bootplatte und booten Sie den neuen Kernel.
Wenn Sie den Kerneldebugger über eine serielle Verbindung bedienen möchten, übersetzen Sie einen angepassten Kernel mit den folgenden Optionen. Das ist nützlich, kann aber gefährlich sein, wenn auf der Leitung falsche BREAK-Signale generiert werden.
options BREAK_TO_DEBUGGER options DDB
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:
ttyu0 "/usr/libexec/getty std.9600" unknown off secure ttyu1 "/usr/libexec/getty std.9600" unknown off secure ttyu2 "/usr/libexec/getty std.9600" unknown off secure ttyu3 "/usr/libexec/getty std.9600" unknown off secure
ttyu0
bis ttyu3
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 anpassen.
Auch kann den Terminaltyp von
unknown
auf den tatsächlich verwendeten
Terminal gesetzt werden.
Damit die Änderungen wirksam werden,
müssen Sie noch kill -HUP 1
absetzen.
In den vorigen Abschnitten wurde beschrieben, wie Sie die serielle Konsole durch Änderungen im Bootblock aktivieren. Dieser Abschnitt zeigt, 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.
Mit einer einzigen Zeile in
/boot/loader.conf
können Sie den
Bootloader und den Kernel anweisen, die serielle Schnittstelle
zur Konsole zu machen:
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 die
Bootmeldungen so früh wie möglich auf der Konsole zu sehen
sind.
Analog können Sie die interne Konsole verwenden:
console="vidconsole"
Wenn die Umgebungsvariable console
nicht
gesetzt ist, bestimmt der Bootloader und damit auch der
Kernel, die Konsole über die -h
Option des
Bootblocks.
Die Bootkonsole kann in
/boot/loader.conf.local
oder
/boot/loader.conf
angegeben
werden.
Weitere Informationen erhalten Sie in loader.conf(5).
Momentan gibt es im Bootloader nichts vergleichbares zu
-P
im Bootblock. Damit kann die Konsole nicht
automatisch über das Vorhandensein einer Tastatur
festgelegt werden.
Der Bootloader muss neu kompiliert werden, wenn eine
andere Schnittstelle als sio0
benutzt
werden soll. Folgen Sie der Anleitung aus
Abschnitt 26.6.4.2, „Eine andere Schnittstelle als sio0
benutzen“.
Obwohl es die meisten Systeme erlauben, ohne Tastatur zu
booten, gibt es 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>.