Der Code im MBR oder im Boot-Manager wird manchmal auch als stage zero des Boot-Prozesses bezeichnet. Dieser Abschnitt beschreibt zwei Boot-Manager: boot0 und LILO.
Der boot0
Boot-Manager: Der vom FreeBSD-Installationsprogramm oder boot0cfg(8)
in der Voreinstelung installierte MBR
basiert auf /boot/boot0
. Die Größe und
Leistungsfähigkeit von boot0 ist
auf 446 Bytes beschränkt, weil der restliche Platz für
die Partitionstabelle sowie den
0x55AA
-Identifier am Ende des
MBRs benötigt wird. Wenn
boot0 und mehrere Betriebssysteme
installiert sind, wird beim Starten des Computers eine
Anzeige ähnlich der folgenden zu sehen sein:
Diverse Betriebssysteme, insbesondere Windows®, überschreiben den existierenden MBR, wenn sie nach FreeBSD installiert werden. Falls dies passiert, kann mit folgendem Kommando der momentane MBR durch den FreeBSD-MBR ersetzt werden:
#
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. Um eine
angepasste Konfiguration des MBR zu
erstellen, lesen Sie boot0cfg(8).
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 muss die primäre Partition von FreeBSD
sowie dessen Platte im Linux-Format angeben werden. Dazu wird
X
durch die Linux-Bezeichnung der
Platte und Y
durch die von Linux
verwendete Partitionsnummer ersetzt. Für ein
SCSI-Laufwerk wird
/dev/sd
anstelle von
/dev/hd
verwendet. 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 die Änderungen zu übernehmen. Achten Sie
dabei besonders auf etwaige Fehlermeldungen.
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 in zwei Teile aufgeteilt, welche jedoch immer
zusammen installiert werden. Beide werden entweder vom
Installer oder von bsdlabel(8) aus
der kombinierten /boot/boot
kopiert.
Beide Phasen befinden sich außerhalb des Dateisystems
im Bootsektor des Boot-Slices, wo boot0 (Abschnitt 13.3.1, „Der Boot-Manager“) 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(8) einen weitaus größeren
Funktionsumfang hat und eine einfach zu bedienende
Boot-Konfigurations-Schnittstelle zur Verfügung stellt, wird
er gewöhnlich von boot2
gestartet.
bsdlabel(8) kann dazu verwendet werden, dass
installierte boot1
und
boot2
zu ersetzen:
#
bsdlabel -B
diskslice
Wobei diskslice
das Laufwerk
und die Slice darstellt, von dem gebootet wird, beispielsweise
ad0s1
für die erste Slice
auf der ersten IDE-Festplatte.
Wenn man nur den Festplatten-Namen, also
z.B. ad0
benutzt, wird bsdlabel(8)
eine "dangerously dedicated disk" erstellen, ohne Slices.
Das ist ein Zustand, den man meistens nicht
hervorrufen möchte. Aus diesem Grund sollte man das
diskslice
von bsdlabel(8)
noch einmal prüfen, bevor Return gedrückt
wird.
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 interaktive Konfigurations-Schnittstelle mit eingebauten Befehlssatz sein, ergänzt durch einen umfangreichen Interpreter mit einem komplexeren Befehlssatz.
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 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.
Dies sind nur die gebräuchlichsten Befehle. Eine vollständige Beschreibung aller verfügbaren Befehle finden Sie in loader(8).
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.
Bewirkt das sofortige Booten des Kernels mit allen gegebenen Optionen, oder dem angegebenen Kernelnamen. Das übergeben eines Kernelnamens ist nur nach einem unload-Befehl anwendbar, andernfalls wird der zuvor verwendete Kernel benutzt.
Bewirkt die automatische Konfiguration der Module,
abhängig von den entsprechenden Variablen (üblicherweise
kernel
). Dies nur dann sinnvoll, wenn
zuvor unload
benutzt wurde.
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.
Dateiname
…Verarbeitet die angegebene Datei. Das Einlesen und Interpretieren geschieht Zeile für Zeile und wird im Falle eines Fehlers umgehend unterbrochen.
Dateiname
Lädt den Kernel, das Kernel-Modul, oder die Datei
des angegebenen Typs. Optionen, die auf
Dateinamen
folgen, werden
der Datei übergeben.
Listet die Dateien im angegebenen Pfad auf, oder das
root-Verzeichnis(/), falls kein Pfad angegeben
wurde. Die Option -l
bewirkt, dass die
Dateigrößen ebenfalls angezeigt werden.
Listet alle Geräte auf, für die Module geladen
werden können. Die Option -v
bewirkt
eine detailreichere Ausgabe.
Listet alle geladenen Module auf. Die Option
-v
bewirkt eine detailreichere
Ausgabe.
Dateiname
Zeigt den Dateinhalt der angegebenen Datei an, wobei
eine Pause alle LINES
Zeilen gemacht
wird.
Bewirkt einen umgehenden Neustart des Systems.
Variable
, set
Variable
=Wert
Setzt die Umgebungsvariablen des Loaders.
Entlädt sämtliche geladenen Module.
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 den alten, oder einen anderen Kernel zu laden:
unload
load
kernel.old
Verwenden Sie kernel.GENERIC
,
um den allgemeinen Kernel zu bezeichnen, der
vorinstalliert wird. kernel.old
bezeichnet den Kernel, der vor dem System-Upgrade
installiert war.
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
Der Willkommmensbildschirm erzeugt einen alternativen Boot-Bildschirm, der alle Bootmeldungen und Meldungen über startende Dienste bis zur Anzeige des Anmeldeprompts überdeckt.
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 Umgebung, welche in Kapitel 6, Das X-Window-System. In diesem Kapitel finden Sie weitere Informationen zur Installation und Konfiguration eines grafischen Display-Managers und Login-Managers.
Die Willkommensbildschirm-Funktionalität unterstützt
256-Farben in den Formaten Bitmap
(.bmp
), ZSoft PCX
(.pcx
) oder TheDraw
(.bin
). Die
Willkommensbildschirm-Dateien dürfen eine Auflösung von 320
mal 200 Pixeln oder weniger besitzen, damit Standard-VGA
Geräte damit arbeiten können.
Damit grössere Bilder bis zu einer maximalen Auflösung
von 1024 mal 768 Pixeln verwendet werden können, muss das
VESA Modul beim Systemstart geladen
werden. Für einen angepassten Kernel, wie in Kapitel 9, Konfiguration des FreeBSD-Kernels beschrieben, muss die
VESA
-Kernelkonfigurationsoption
eingefügt werden. VESA-Unterstützung
ermöglicht es, einen Willkommensbildschirm als Vollbild
auf dem gesamten Bildschirm anzuzeigen.
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 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. Das Verhalten des
Willkommensbildschirms kann durch hinzufügen einer
saver=
-Zeile in
/etc/rc.conf
geändert werden. Es gibt
mehrere eingebaute Bildschirmschoner, die in splash(4)
beschrieben werden. Die saver=
-Option
bezieht sich nur auf virtuelle Konsolen und hat keinen
Effekt bei grafischen Display-Managern.
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.org 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.
Die Willkommensbildschirm-Datei
.bmp
, .pcx
oder
.bin
muss im Wurzelverzeichnis, z.B. /boot
abgelegt werden.
Für die Standard-Auflösung von 256-Farben, 320 mal
200 Pixel oder weniger, bearbeiten Sie
/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
"
Dieses Beispiel geht davon aus, das
/boot/splash.bmp
als Willkommensbildschirm verwendet wird. Um eine
PCX-Datei zu verwenden, 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
"
Beginnend mit FreeBSD 8.3 gibt es die Option,
ASCII-Art im TheDraw
-Format
zu benutzen.
splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin
"
Der Dateiname ist nicht, wie im obigen Beispiel gezeigt,
auf „splash“ beschränkt. Es darf ein
beliebiger Name sein, solange die Datei von einem der
unterstützten Typen ist, beispielsweise
oder
splash_640x400
.bmp
.bluewave
.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 auf der rechten Seite des Bootmenüs das bunte Beastie-Logo angezeigt.
Weitere Informationen finden Sie in 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>.