13.3. Boot-Manager und Boot-Phasen

13.3.1. Der Boot-Manager

Der Code im MBR oder im Boot-Manager wird manchmal auch als stage zero des Boot-Prozesses bezeichnet. Dieser Abschnitt beschreibt zwei der weiter oben erwähnten Boot-Manager: boot0 sowie LILO.

Der boot0 Boot-Manager: Der vom FreeBSD-Installationsprogramm oder boot0cfg(8) in der Voreinstelung installierte Master Boot Record (MBR) basiert auf /boot/boot0. Bei boot0 handelt es sich um ein sehr einfaches Programm, da im MBR lediglich 446 Bytes verfügbar sind, weil der restliche Platz für die Partitionstabelle sowie den 0x55AA-Identifier am Ende des MBRs benötigt wird. Falls Sie boot0 verwenden und mehrere Betriebssysteme auf Ihrer Festplatte installiert haben, werden Sie beim Starten des Computers eine Anzeige ähnlich der folgenden sehen:

Beispiel 13-1. boot0-Screenshot

F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2

Diverse Betriebssysteme, insbesondere Windows®, überschreiben den MBR ungefragt mit ihrem eigenen. Falls einem dies passiert sein sollte, kann man mit folgendem Kommando den momentanen MBR durch den FreeBSD-MBR ersetzen:

# fdisk -B -b /boot/boot0 Gerät

Bei Gerät handelt es sich um das Gerät, von dem gebootet wird, also beispielsweise ad0 für die erste IDE-Festplatte, ad2 für die erste IDE-Festplatte am zweiten IDE-Controller, da0 für die erste SCSI-Festplatte, usw. Diese Einstellungen können aber über boot0cfg(8) angepasst werden.

Der LILO-Boot-Manager: Damit dieser Boot-Manager auch FreeBSD booten kann, starten Sie zuerst Linux und fügen danach folgende Zeilen in die Konfigurationsdatei /etc/lilo.conf ein:

other=/dev/hdXY
table=/dev/hdX
loader=/boot/chain.b
label=FreeBSD

Dabei müssen Sie die primäre Partition von FreeBSD sowie dessen Platte im Linux-Format angeben. Dazu ersetzen Sie X durch die Linux-Bezeichnung der Platte und Y durch die von Linux verwendete Partitionsnummer. Wenn Sie ein SCSI-Laufwerk verwenden, müssen Sie /dev/sd anstelle von /dev/hd verwenden. Die Zeile loader=/boot/chain.b kann weggelassen werden, wenn beide Betriebssysteme auf der gleichen Platte installiert sind. Geben Sie danach /sbin/lilo -v ein, um Ihre Änderungen zu übernehmen. Achtung Sie dabei besonders auf etwaige Fehlermeldungen.

13.3.2. Phase Eins, /boot/boot1 und Phase Zwei, /boot/boot2

Im Prinzip sind die erste und die zweite Phase Teile desselben Programms, im selben Bereich auf der Festplatte. Aufgrund von Speicherplatz-Beschränkungen wurden sie aufgeteilt, aber man installiert sie eigentlich generell zusammen. Beide werden entweder vom Installer oder von bsdlabel aus der kombinierten Datei /boot/boot kopiert.

Beide Phasen befinden sich außerhalb des Dateisystems im Bootsektor des Boot-Slices, wo boot0 oder ein anderer Boot-Manager ein Programm erwarten, das den weiteren Bootvorgang durchführen kann. Die Anzahl der dabei verwendeten Sektoren wird durch die Größe von /boot/boot bestimmt.

boot1 ist ein sehr einfaches Programm, da es nur 512 Bytes groß sein darf, und es besitzt gerade genug Funktionalität, um FreeBSDs bsdlabel, das Informationen über den Slice enthält, auszulesen, und um boot2 zu finden und auszuführen.

boot2 ist schon ein wenig umfangreicher und besitzt genügend Funktionalität, um Dateien in FreeBSDs Dateisystem zu finden. Außerdem hat es eine einfache Schnittstelle, die es ermöglicht, den zu ladenden Kernel oder Loader auszuwählen.

Da der Loader einen weitaus größeren Funktionsumfang hat und eine schöne und einfach zu bedienende Boot-Konfigurations-Schnittstelle zur Verfügung stellt, wird er gewöhnlich von boot2 anstatt des Kernels gestartet. Früher war es jedoch dazu da den Kernel direkt zu starten.

Beispiel 13-2. boot2-Screenshot

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

Um das installierte boot1 und boot2 zu ersetzen, benutzt man bsdlabel(8):

# bsdlabel -B diskslice

Wobei Slice das Laufwerk und die Slice darstellt, von dem gebootet wird, beispielsweise ad0s1 für die erste Slice auf der ersten IDE-Festplatte.

Dangerously Dedicated Mode: Wenn man nur den Festplatten-Namen, also z.B. ad0, in bsdlabel(8) benutzt wird eine "dangerously dedicated disk" erstellt, ohne Slices. Das ist ein Zustand, den man meistens nicht hervorrufen möchte. Aus diesem Grund sollte man ein bsdlabel(8)-Kommando noch einmal prüfen, bevor man Return betätigt.

13.3.3. Phase drei, /boot/loader

Der boot-loader ist der letzte von drei Schritten im Bootstrap-Prozess und kann im Dateisystem normalerweise unter /boot/loader gefunden werden.

Der Loader soll eine benutzerfreundliche Konfigurations-Schnittstelle sein mit einem einfach zu bedienenden eingebauten Befehlssatz, ergänzt durch einen umfangreichen Interpreter mit einem komplexeren Befehlssatz.

13.3.3.1. Loader Ablauf

Der Loader sucht während seiner Initialisierung nach Konsolen und Laufwerken, findet heraus, von welchem Laufwerk er gerade bootet, und setzt dementsprechend bestimmte Variablen. Dann wird ein Interpreter gestartet, der Befehle interaktiv oder von einem Skript empfangen kann.

Danach liest der Loader die Datei /boot/loader.rc aus, welche ihn standardmäßig anweist /boot/defaults/loader.conf zu lesen, wo sinnvolle Standardeinstellungen für diverse Variablen festgelegt werden und wiederum /boot/loader.conf für lokale Änderungen an diesen Variablen ausgelesen wird. Anschließend arbeitet dann loader.rc entsprechend dieser Variablen und lädt die ausgewählten Module und den gewünschten Kernel.

In der Voreinstellung wartet der Loader 10 Sekunden lang auf eine Tastatureingabe und bootet den Kernel, falls keine Taste betätigt wurde. Falls doch eine Taste betätigt wurde wird dem Benutzer eine Eingabeaufforderung angezeigt. Sie nimmt einen einfach zu bedienenden Befehlssatz entgegen, der es dem Benutzer erlaubt, Änderungen an Variablen vorzunehmen, Module zu laden, alle Module zu entladen oder schließlich zu booten bzw. neu zu booten.

13.3.3.2. Die eingebauten Befehle des Loaders

Hier werden nur die gebräuchlichsten Befehle bearbeitet. Für eine erschöpfende Diskussion aller verfügbaren Befehle konsultieren Sie bitte loader(8).

autoboot Sekunden

Es wird mit dem Booten des Kernels fortgefahren, falls keine Taste in der gegebenen Zeitspanne betätigt wurde. In der gegebenen Zeitspanne, Vorgabe sind 10 Sekunden, wird ein Countdown angezeigt.

boot [-options] [Kernelname]

Bewirkt das sofortige Booten des Kernels mit den gegebenen Optionen, falls welche angegeben wurden, und mit den angegebenen Kernel, falls denn einer angegeben wurde. Das übergeben eines Kernelnamens ist nur nach einem unload-Befehl anwendbar, andernfalls wird der zuvor verwendete Kernel benutzt.

boot-conf

Bewirkt die automatische Konfiguration der Module, abhängig von den entsprechenden Variablen. Dieser Vorgang ist identisch zu dem Vorgang, den der Bootloader ausführt und daher nur sinnvoll, wenn zuvor unload benutzt wurde und Variablen (gewöhnlich kernel) verändert wurden.

help [Thema]

Zeigt die Hilfe an, die zuvor aus der Datei /boot/loader.help gelesen wird. Falls index als Thema angegeben wird, wird die Liste der zur Verfügung stehenden Hilfe-Themen angezeigt.

include Dateiname

Verarbeitet die angegebene Datei. Das Einlesen und Interpretieren geschieht Zeile für Zeile und wird im Falle eines Fehlers umgehend unterbrochen.

load [-t Typ] Dateiname

Lädt den Kernel, das Kernel-Modul, oder die Datei des angegebenen Typs. Optionen, die auf den Dateinamen folgen, werden der Datei übergeben.

ls [-l] [Pfad]

Listet die Dateien im angegebenen Pfad auf, oder das root-Verzeichnis(/), falls kein Pfad angegeben wurde. Die Option -l bewirkt, dass die Dateigrössen ebenfalls angezeigt werden.

lsdev [-v]

Listet alle Geräte auf, für die Module geladen werden können. Die Option -v bewirkt eine detailreichere Ausgabe.

lsmod [-v]

Listet alle geladenen Module auf. Die Option -v bewirkt eine detailreichere Ausgabe.

more Dateiname

Zeigt den Dateinhalt der angegebenen Datei an, wobei eine Pause alle LINES Zeilen gemacht wird.

reboot

Bewirkt einen umgehenden Neustart des Systems.

set Variable, set Variable=Wert

Setzt die Umgebungsvariablen des Loaders.

unload

Entlädt sämtliche geladenen Module.

13.3.3.3. Beispiele für die Loader Bedienung

Hier ein paar praktische Beispiele für die Bedienung des Loaders.

  • Um den gewöhnlichen Kernel im Single-User Modus zu starten:

    boot -s
    
  • Um alle gewöhnlichen Kernelmodule zu entladen und dann nur den alten (oder jeden beliebigen anderen) Kernel zu laden:

    unload
    load kernel.old
    

    Es kann kernel.GENERIC verwendet werden, um den allgemeinen Kernel zu bezeichnen, der vorinstalliert wird. kernel.old bezeichnet den Kernel, der vor dem aktuellen installiert war (falls man einen neuen Kernel kompiliert und installiert hat zum Beispiel).

    Anmerkung: Der folgende Befehl lädt die gewöhnlichen Module mit einem anderen Kernel:

    unload
    set kernel="kernel.old"
    boot-conf
    
  • Folgendes lädt ein Kernelkonfigurations-Skript (ein automatisiertes Skript, dass dasselbe tut, was der Benutzer normalerweise von Hand an der Eingabeaufforderung durchführen würde):

    load -t userconfig_script /boot/kernel.conf
    

13.3.3.4. Willkommmensbildschirme während des Bootvorgangs

Contributed by Joseph J. Barbish. Übersetzt von Benedict Reuschling.

Die Willkommmensbildschirme erzeugen einen visuell viel ansprechenderen Bootvorgang im Vergleich zu den herkömmlichen Bootmeldungen. Diese Bildschirme werden entweder bis zu einem Konsolen-Login-Prompt oder dem eines X-Display Managers angezeigt.

Es existieren zwei grundlegende Umgebungen in FreeBSD. Die erste ist die altbekannte, auf virtuellen Konsolen basierte Kommandozeile. Nachdem das System den Bootvorgang abgeschlossen hat, wird ein Anmeldebildschirm auf der Konsole anzeigt. Die zweite Umgebung ist die graphische X11-Desktop Umgebung. Nachdem X11 und eine der Graphischen Oberflächen, wie GNOME, KDE, oder XFce installiert wurden, kann der X11-Desktop über das Kommando startx gestartet werden.

Manche Benutzer ziehen den graphischen Anmeldebildschirm von X11 dem traditionellen, textbasierten Anmeldeprompt vor. Display-Manager wie XDM für Xorg, gdm für GNOME und kdm für KDE (und viele weitere aus der Ports-Sammlung) bieten einen graphischen statt dem konsolenbasierten Anmeldebildschirm. Nach einer erfolgreichen Anmeldung kann der Benutzer die graphische Oberfläche verwenden.

In der Kommandozeilen-Umgebung würde der Willkommensbildschirm alle Erkennungsmeldungen des Bootvorgangs und die Startmeldungen von Diensten verstecken, bevor der Anmeldebildschirm erscheint. In der X11-Umgebung erhalten die Anwender einen klareren visuellen Eindruck des Startvorgangs, ähnlich zu dem, den Microsoft® Windows (oder ein nicht-Unix-artiger Systemtyp) zur Verfügung stellt.

13.3.3.4.1. Willkommensbildschirm-Funktionalität

Die Willkommensbildschirm-Funktionalität unterstützt nur 256-Farben Bitmaps (.bmp), ZSoft PCX (.pcx) oder TheDraw (.bin) Dateien. Zusätzlich muss die Willkommensbildschirm-Datei eine Auflösung von 320 mal 200 Pixeln oder weniger besitzen, damit Standard-VGA Geräte damit arbeiten können.

Um grössere Bilder bis zu einer maximalen Auflösung von 1024 mal 768 Pixeln zu verwenden, muss Unterstützung für VESA in FreeBSD enthalten sein. Dies kann durch das Laden des VESA-Moduls während des Systemstarts geschehen, oder durch Hinzufügen der VESA-Kernelkonfigurationsoption und anschliessendem Bau des Kernels (Lesen Sie dazu Kapitel 9). Die VESA-Unterstützung ermöglicht es den Benutzern, Willkommensbildschirme als Vollbild anzuzeigen, die den gesamten Bildschirm ausfüllen.

Wenn der Willkommensbildschirm beim Bootvorgang angezeigt wird, kann dieser jederzeit mit einem beliebigen Tastendruck ausgeschaltet werden.

Der Willkommensbildschirm ist standardmässig so eingestellt, dass er als Bildschirmschoner ausserhalb von X11 verwendet wird. Nach einer bestimmten Zeit der Untätigkeit wird der Willkommensbildschirm angezeigt und wechselt durch verschiedene Stufen der Intensität von hell zu einem sehr dunklen Bild und wieder zurück. Dieses Verhalten des Standard-Willkommensbildschirms (Screen-Saver) kann durch hinzufügen einer saver=-Zeile in /etc/rc.conf geändert werden. Die Option saver= besitzt mehrere eingebaute Screen-Saver, aus denen man wählen kann, und deren komplette Liste in der splash(4)-Manualpage enthalten ist. Der Standard-Screen-Saver ist “warp”. Beachten Sie, dass sich die saver=-Option in /etc/rc.conf nur auf virtuelle Konsolen bezieht. Sie hat keinen Effekt auf X11-Display-Manager.

Ein paar Nachrichten des Bootloaders und ganz besonders das Menü mit den Bootoptionen und dem Warte-Countdown werden zur Bootzeit angezeigt, selbst wenn der Willkommensbildschirm aktiviert ist.

Dateien mit Beispiel-Willkommensbildschirmen können von der Galerie auf http://artwork.freebsdgr.orgb heruntergeladen werden. Durch die Installation des Ports sysutils/bsd-splash-changer können Willkommensbildschirme von einer zufällig ausgewählten Sammlung von Bildern bei jedem Neustart angezeigt werden.

13.3.3.4.2. Aktivieren der Willkommensbildschirm-Funktionalität

Die Willkommensbildschirm-Datei (.bmp, .pcx oder .bin) muss im Wurzelverzeichnis, z.B. /boot abgelegt werden.

Für die Standard-Auflösung (256-Farben, 320 mal 200 Pixel oder weniger) beim Booten bearbeiten Sie die Datei /boot/loader.conf, so dass diese die folgenden Zeilen enthält:

splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"

Für grössere Video-Auflösungen bis zum Maximum von 1024 mal 768 Pixeln ändern Sie die Datei /boot/loader.conf, damit diese die folgenden Zeilen enthält:

vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"

Das Beispiel oben nimmt an, dass /boot/splash.bmp als Willkommensbildschirm verwendet wird. Wenn eine PCX-Datei verwendet werden soll, benutzen Sie die folgenden Zeilen, inklusive der vesa_load="YES"-Zeile, abhängig von der Auflösung.

splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx"

In der Version 8.3 kann als weitere Option ascii-Kunst im TheDraw Format verwendet werden.

splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin"

Wie das Beispiel oben demonstriert, ist der Dateiname nicht auf “splash” beschränkt. Es ist beliebig, so lange es den Dateityp BMP oder PCX besitzt, z.B. splash_640x400.bmp oder blue_wave.pcx.

Weitere interessante Optionen für loader.conf sind:

beastie_disable="YES"

Diese Option verhindert die Anzeige des Menüs mit den Bootoptionen, aber der Countdown ist immer noch aktiv. Selbst wenn das Bootmenü deaktiviert ist, kann während des Countdowns eine der korrespondierenden Optionen ausgewählt werden.

loader_logo="beastie"

Dies ersetzt die Standardanzeige des Wortes “FreeBSD”. Stattdessen wird wie in der Vergangenheit auf der rechten Seite des Bootmenüs das bunte Beastie-Logo angezeigt.

Für weitere Informationen lesen Sie die Manualpages splash(4), loader.conf(5) und vga(4).

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