---
title: Kapitel 12. FreeBSDs Bootvorgang
part: Teil III. Systemadministration
prev: books/handbook/config
next: books/handbook/security
showBookMenu: true
weight: 16
params:
  path: "/books/handbook/boot/"
---

[[boot]]
= FreeBSDs Bootvorgang
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 12
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/boot/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[boot-synopsis]]
== Übersicht

Das Starten des Computers und das Laden des Betriebssystems wird im Allgemeinen als "Bootstrap-Vorgang", oder als "Booten" bezeichnet. FreeBSDs Bootvorgang ermöglicht große Flexibilität, was das Anpassen dessen anbelangt, was passiert, wenn das System gestartet wird. Es kann zwischen verschiedenen Betriebssystemen, die auf demselben Computer installiert sind oder verschiedenen Versionen desselben Betriebssystems oder installierten Kernels gewählt werden.

Dieses Kapitel zeigt die zur Verfügung stehenden Konfigurationsmöglichkeiten und wie man den Bootvorgang anpasst. Dies schließt alles ein, bis der Kernel gestartet worden ist, der dann alle Geräte gefunden hat und man:init[8] gestartet hat. Dies passiert, wenn die Farbe des Textes während des Bootvorgangs von weiß zu grau wechselt.

Dieses Kapitel informiert über folgende Punkte:

* Die Komponenten des FreeBSD-Bootvorgangs und deren Interaktion.
* Die Optionen, mit denen der FreeBSD-Bootvorgang gesteuert werden kann.
* Wie ein angepasster Willkommensbildschirm beim Booten konfiguriert wird.
* Wie Geräte mit man:device.hints[5] konfiguriert werden.
* Wie das System in den Single-User-Modus und in den Mehrbenutzer-Modus gestartet wird und wie ein FreeBSD-System ordnungsgemäß heruntergefahren wird.

[NOTE]
====
Dieses Kapitel erklärt den Bootvorgang von FreeBSD auf Intel x86- und amd64-Plattformen.
====

[[boot-introduction]]
== FreeBSDs Bootvorgang

Wenn der Computer eingeschaltet wird und das Betriebssystem gestartet werden soll, entsteht ein interessantes Dilemma, denn der Computer weiß per Definition nicht, wie er irgendetwas tut, bis das Betriebssystem gestartet wurde. Das schließt das Starten von Programmen, die sich auf der Festplatte befinden, ein. Wenn der Computer kein Programm von der Festplatte starten kann, sich das Betriebssystem aber genau dort befindet, wie wird es dann gestartet?

Dieses Problem ähnelt einer Geschichte des Barons von Münchhausen. Dort war eine Person in einen Sumpf gefallen und hat sich selbst an den Riemen seiner Stiefel (engl. bootstrap) herausgezogen. In den jungen Jahren des Computerzeitalters wurde mit dem Begriff Bootstrap dann die Technik das Betriebssystem zu laden bezeichnet. Seither wurde es mit "booten" abgekürzt.

Auf x86-Plattformen ist das Basic Input/Output System (BIOS) dafür verantwortlich, das Betriebssystem zu laden. Das BIOS liest den Master Boot Record (MBR) aus, der sich an einer bestimmten Stelle auf der Festplatte befinden muss. Das BIOS kann den MBR selbstständig laden und ausführen und geht davon aus, dass dieser die restlichen Dinge, die für das Laden des Betriebssystems notwendig sind, selbst oder mit Hilfe des BIOS erledigen kann.

[NOTE]
====
FreeBSD ermöglicht das Booten sowohl über den alten MBR-Standard, als auch über die neuere GUID-Partitionstabelle (GPT). GPT-Partitionen finden sich häufig auf Systemen mit dem _Unified Extensible Firmware Interface_ (UEFI). FreeBSD kann allerdings mit Hilfe von man:gptboot[8] auch GPT-Partitionen über das alte BIOS booten. An der Unterstützung für ein direktes Booten über UEFI wird derzeit gearbeitet.
====

Der Code innerhalb des MBRs wird für gewöhnlich als _Boot-Manager_ bezeichnet, insbesondere, wenn eine Interaktion mit dem Anwender stattfindet. Der Boot-Manager verwaltet zusätzlichen Code im ersten _Track_ der Platte oder des Dateisystems. Zu den bekanntesten Boot-Managern gehören boot0, der auch als Boot Easy bekannte Standard-Boot-Manager von FreeBSD, sowie Grub, welches in vielen Linux(R)-Distributionen verwendet wird.

Falls nur ein Betriebssystem installiert ist, sucht der MBR nach dem ersten bootbaren Slice (das dabei als _active_ gekennzeichnet ist) auf dem Laufwerk und führt den dort vorhandenen Code aus, um das restliche Betriebssystem zu laden. Wenn mehrere Betriebssysteme installiert sind, kann ein anderer Boot-Manager installiert werden, der eine Liste der verfügbaren Betriebssysteme anzeigt, so dass der Benutzer wählen kann, welches Betriebssystem er booten möchte.

Das restliche FreeBSD-Bootstrap-System ist in drei Phasen unterteilt. Die erste Phase besitzt gerade genug Funktionalität um den Computer in einen bestimmten Status zu verhelfen und die zweite Phase zu starten. Die zweite Phase führt ein wenig mehr Operationen durch und startet schließlich die dritte Phase, die das Laden des Betriebssystems abschließt. Der ganze Prozess wird in drei Phasen durchgeführt, weil der MBR die Größe der Programme, die in Phase eins und zwei ausgeführt werden, limitiert. Das Verketten der durchzuführenden Aufgaben ermöglicht es FreeBSD, ein sehr flexibles Ladeprogramm zu besitzen.

Als nächstes wird der Kernel gestartet, der zunächst nach Geräten sucht und sie für den Gebrauch initialisiert. Nach dem Booten des Kernels übergibt dieser die Kontrolle an den Benutzer Prozess man:init[8], der erst sicherstellt, dass alle Laufwerke benutzbar sind und die Ressourcen Konfiguration auf Benutzer Ebene startet. Diese wiederum mountet Dateisysteme, macht die Netzwerkkarten für die Kommunikation mit dem Netzwerk bereit und startet alle Prozesse, die konfiguriert wurden, um beim Hochfahren gestartet zu werden.

Dieser Abschnitt beschreibt die einzelnen Phasen und wie sie mit dem FreeBSD-Bootvorgang interagieren.

[[boot-boot0]]
=== Der Boot-Manager

Der Boot-Manager Code im MBR wird manchmal auch als _stage zero_ des Boot-Prozesses bezeichnet. In der Voreinstellung verwendet FreeBSD den boot0 Boot-Manager.

Der vom FreeBSD-Installationsprogramm in der Voreinstelung installierte MBR basiert auf [.filename]#/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:

[[boot-boot0-example]]
.[.filename]#boot0#-Screenshot
[example]
====

[source,shell]
....
F1 Win
F2 FreeBSD

Default: F2
....

====

Diverse Betriebssysteme ü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:

[source,shell]
....
# fdisk -B -b /boot/boot0 Gerät
....

Bei _Gerät_ handelt es sich um das Gerät, von dem gebootet wird, also beispielsweise [.filename]#ad0# für die erste IDE-Festplatte, [.filename]#ad2# für die erste IDE-Festplatte am zweiten IDE-Controller, [.filename]#da0# für die erste SCSI-Festplatte. Um eine angepasste Konfiguration des MBR zu erstellen, lesen Sie man:boot0cfg[8].

[[boot-boot1]]
=== Phase Eins und Phase Zwei

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 FreeBSD-Installationsprogramm oder `bsdlabel` aus der kombinierten [.filename]#/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 erste Phase, [.filename]#boot1#, ist ein sehr einfaches Programm, da es nur 512 Bytes groß sein darf. Es besitzt gerade genug Funktionalität, um FreeBSDs _bsdlabel_, das Informationen über den Slice enthält, auszulesen, und um [.filename]#boot2# zu finden und auszuführen.

Die zweite Phase, [.filename]#boot2#, ist schon ein wenig umfangreicher und besitzt genügend Funktionalität, um Dateien in FreeBSDs Dateisystem zu finden. Es kann eine einfache Schnittstelle bereitstellen, die es ermöglicht, den zu ladenden Kernel oder Loader auszuwählen. Es lädt den loader, der einen weitaus größeren Funktionsumfang bietet und eine Konfigurationsdatei zur Verfügung stellt. Wenn der Boot-Prozess während der zweiten Phase unterbrochen wird, erscheint der folgende Bildschrim:

[[boot-boot2-example]]
.[.filename]#boot2#-Screenshot
[example]
====

[source,shell]
....
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:
....

====

Um das installierte [.filename]#boot1# und [.filename]#boot2# zu ersetzen, benutzen Sie `bsdlabel`, wobei _diskslice_ das Laufwerk und die Slice darstellt, von dem gebootet wird, beispielsweise [.filename]#ad0s1# für die erste Slice auf der ersten IDE-Festplatte:

[source,shell]
....
# bsdlabel -B diskslice
....

[WARNING]
====

Wenn man nur den Festplatten-Namen benutzt, beispielsweise [.filename]#ad0#, wird `bsdlabel` 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_ noch einmal prüfen, bevor kbd:[Return] gedrückt wird.
====

[[boot-loader]]
=== Phase Drei

Der loader ist der letzte von drei Schritten im Bootstrap-Prozess. Er kann im Dateisystem normalerweise als [.filename]#/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 [.filename]#/boot/loader.rc#, welche ihn standardmäßig anweist [.filename]#/boot/defaults/loader.conf# zu lesen, wo sinnvolle Standardeinstellungen für diverse Variablen festgelegt werden und wiederum [.filename]#/boot/loader.conf# für lokale Änderungen an diesen Variablen ausgelesen wird. Anschließend arbeitet dann [.filename]#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 oder neu zu booten.

[[boot-loader-commands]]
.Die eingebauten Befehle des Loaders
[cols="20%,80%", frame="none", options="header"]
|===
| Variable
| Beschreibung

|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 [`-Optionen`] [`Kernelname`]
|Bewirkt das sofortige Booten des Kernels mit allen gegebenen Optionen, oder dem angegebenen Kernelnamen. Das übergeben eines Kernelnamens ist nur nach einem `unload` anwendbar, andernfalls wird der zuvor verwendete Kernel benutzt. Wenn nicht der vollständige Pfad für _Kernelname_ angegeben wird, dann sucht der Loader den Kernel unter [.filename]#/boot/kernel# und [.filename]#/boot/modules#.

|boot-conf
|Bewirkt die automatische Konfiguration der Module, abhängig von den entsprechenden Variablen (üblicherweise `kernel`). Dies nur dann sinnvoll, wenn zuvor `unload` benutzt wurde.

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

|include `_Dateiname_` ...
|Das Einlesen und Interpretieren der angegebenen Datei 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. Argumente, die auf _Dateiname_ folgen, werden der Datei übergeben. Wenn nicht der vollständige Pfad für _Dateiname_ angegeben wird, dann sucht der Loader die Datei unter [.filename]#/boot/kernel# und [.filename]#/boot/modules#.

|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ößen ebenfalls angezeigt werden.

|lsdev [`-v`]
|Listet alle Geräte auf, für die Module geladen werden können. Die Option `-v` bewirkt eine ausführliche Ausgabe.

|lsmod [`-v`]
|Listet alle geladenen Module auf. Die Option `-v` bewirkt eine ausführliche 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 angegebenen Umgebungsvariablen.

|unload
|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:

[source,shell]
....
 boot -s
....

Um alle gewöhnlichen Kernelmodule zu entladen und dann den alten, oder einen anderen Kernel zu laden:

[source,shell]
....
unload
/pfad/zur/kerneldatei
....

Verwenden Sie [.filename]#/boot/GENERIC/kernel#, um auf den allgemeinen Kernel zu verweisen, der bei jeder Installation dabei ist. [.filename]#/boot/kernel.old/kernel# hingegen bezeichnet den Kernel, der vor dem System-Upgrade installiert war.

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

[source,shell]
....
unload
set kernel="meinkernel"
boot-conf
....

Um ein automatisiertes Kernelkonfigurations-Skript zu laden, geben Sie ein:

[source,shell]
....
 load -t userconfig_script /boot/kernel.conf
....

[[boot-init]]
=== Die letzte Phase

Sobald der Kernel einmal geladen ist, entweder durch den loader oder durch boot2, welches den Loader umgeht, dann überprüft er vorhandene Boot-Flags und passt sein Verhalten nach Bedarf an. In <<boot-kernel>> sind die gebräuchlichsten Boot-Flags aufgelistet. Informationen zu den anderen Boot-Flags finden Sie in man:boot[8].

[[boot-kernel]]
.Interaktion mit dem Kernel während des Bootens
[cols="20%,80%", frame="none", options="header"]
|===
| Option
| Beschreibung

|`-a`
|Bewirkt, dass während der Kernel-Initialisierung gefragt wird, welches Gerät als Root-Dateisystem eingehängt werden soll.

|`-C`
|Das Root-Dateisystem wird von CD-ROM gebootet.

|`-s`
|Bootet in den Single-User Modus

|`-v`
|Zeigt mehr Informationen während des Starten des Kernels an.
|===

Nachdem der Kernel den Bootprozess abgeschlossen hat, übergibt er die Kontrolle an den Benutzer-Prozess man:init[8]. Dieses Programm befindet sich in [.filename]#/sbin/init#, oder dem Pfad, der durch die Variable `init_path` im `loader` spezifiziert wird.

Der automatische Reboot-Vorgang stellt sicher, dass alle Dateisysteme des Systems konsistent sind. Falls dies nicht der Fall ist und die Inkonsistenz des UFS-Dateisystems nicht durch `fsck` behebbar ist, schaltet `init` das System in den Single-User-Modus, damit der Systemadministrator sich des Problems annehmen kann. Andernfalls startet das System in den Mehrbenutzermodus.

[[boot-singleuser]]
==== Der Single-User Modus

Der Wechsel in den Single-User Modus kann beim Booten durch die Option `-s`, oder das Setzen der Variable `boot_single` in loader erreicht werden. Zudem kann er auch im Mehrbenutzermodus über den Befehl `shutdown now` erreicht werden. Der Single-User Modus beginnt mit dieser Meldung:

[.programlisting]
....
Enter full path of shell or RETURN for /bin/sh:
....

Wenn Sie die Eingabetaste drücken, wird das System die Bourne Shell starten. Falls Sie eine andere Shell starten möchten, geben Sie den vollständigen Pfad zur Shell ein.

Der Single-User Modus wird normalerweise zur Reparatur verwendet, beispielsweise wenn das System aufgrund eines inkonsistenten Dateisystems oder einem Fehler in einer Konfigurationsdatei nicht bootet. Der Modus wird auch verwendet, um das Passwort von `root` zurückzusetzen, falls dieses nicht mehr bekannt ist. Dies alles ist möglich, da der Single-User Modus vollen Zugriff auf das lokale System und die Konfigurationsdateien gewährt. Einen Zugang zum Netzwerk bietet dieser Modus allerdings nicht.

Obwohl der Single-User Modus für Reparaturen am System sehr nützlich ist, stellt es ein Sicherheitsrisiko dar, wenn sich das System an einem physisch unsicheren Standort befindet. In der Voreinstellung hat jeder Benutzer, der physischen Zugriff auf ein System erlangen kann, volle Kontrolle über das System, nachdem in den Single-User Modus gebootet wurde.

Falls die System-Konsole (`console`) in [.filename]#/etc/ttys# auf `insecure` (dt.: unsicher) gesetzt ist, fordert das System zur Eingabe des `root` Passworts auf, bevor es den Single-User Modus aktiviert. Dadurch gewinnen Sie zwar ein gewisses Maß an Sicherheit, aber Sie können dann nicht mehr das Passwort von `root` zurücksetzen, falls es nicht bekannt ist.

[[boot-insecure-console]]
.Auf insecure gesetzte Konsole in [.filename]#/etc/ttys#
[example]
====
[.programlisting]
....
# name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off insecure
....

====

Eine Konsole sollte auf `insecure` gesetzt sein, wenn die physikalische Sicherheit der Konsole nicht gegeben ist und sichergestellt werden soll, dass nur Personen, die das Passwort von `root` kennen, den Single-User Modus benutzen können.

[[boot-multiuser]]
==== Mehrbenutzermodus

Stellt init fest, dass das Dateisystem in Ordnung ist, oder der Benutzer den Single-User-Modus mit `exit` beendet, schaltet das System in den Mehrbenutzermodus, in dem dann die Ressourcen Konfiguration des Systems gestartet wird.

Das Ressourcen Konfigurationssystem (engl. resource configuration, rc) liest seine Standardkonfiguration von [.filename]#/etc/defaults/rc.conf# und System-spezifische Details von [.filename]#/etc/rc.conf#. Dann mountet es die Dateisysteme gemäß [.filename]#/etc/fstab#, startet die Netzwerkdienste, diverse System Daemons und führt schließlich die Start-Skripten der lokal installierten Anwendungen aus.

Lesen Sie man:rc[8] und ebenso die Skripte in [.filename]#/etc/rc.d#, um mehr über das Ressourcen Konfigurationssystem zu erfahren.

[[boot-splash]]
== Willkommensbildschirme während des Bootvorgangs konfigurieren

Wenn ein FreeBSD-System startet, gibt es normalerweise eine Reihe von Meldungen auf der Konsole aus. Ein Willkommensbildschirm erzeugt einen alternativen Boot-Bildschirm, der alle Bootmeldungen und Meldungen über startende Dienste versteckt. Ein paar Meldungen des Bootloaders, einschließlich das Menü mit den Bootoptionen und dem Warte-Countdown werden dennoch zur Bootzeit angezeigt, auch wenn der Willkommensbildschirm aktiviert ist. Der Willkommensbildschirm kann während des Bootvorgangs mit einem beliebigen Tastendruck ausgeschaltet werden.

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 eine konfigurierte, graphische Umgebung. crossref:x11[x11,Das X-Window-System] enthält weitere Informationen zur Installation und Konfiguration eines graphischen Display-Managers und Login-Managers.

Der Willkommensbildschirm ist standardmäßig 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 [.filename]#/etc/rc.conf# geändert werden. Es gibt mehrere eingebaute Bildschirmschoner, die in man:splash[4] beschrieben werden. Die `saver=`-Option bezieht sich nur auf virtuelle Konsolen und hat keinen Effekt bei grafischen Display-Managern.

Durch die Installation des Ports oder Pakets package:sysutils/bsd-splash-changer[] werden Willkommensbildschirme von einer zufällig ausgewählten Sammlung von Bildern bei jedem Neustart angezeigt. Die Willkommensbildschirm-Funktionalität unterstützt 256-Farben in den Formaten Bitmap ([.filename]#.bmp#), ZSoft PCX ([.filename]#.pcx#) oder TheDraw ([.filename]#.bin#). Die Willkommensbildschirm-Datei [.filename]#.bmp#, [.filename]#.pcx# oder [.filename]#.bin# muss in der Root-Partition, beispielsweise unterhalb von [.filename]#/boot# abgelegt werden. Willkommensbildschirm-Dateien dürfen eine Auflösung von 320 mal 200 Pixeln oder weniger besitzen, damit Standard-VGA Geräte damit arbeiten können. Für eine Standard-Auflösung von 256-Farben, 320 mal 200 Pixel oder weniger, fügen Sie folgende Zeilen in [.filename]#/boot/loader.conf# ein und ersetzen Sie _splash.bmp_ mit dem Namen der Bitmap-Datei:

[.programlisting]
....
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"
....

Wenn Sie anstelle der Bitmap-Datei eine PCX-Datei verwenden:

[.programlisting]
....
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx"
....

Für ASCII-Art im https://en.wikipedia.org/wiki/TheDraw[TheDraw]-Format schreiben Sie:

[.programlisting]
....
splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin"
....

Weitere interessante Optionen für [.filename]#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 man:splash[4], man:loader.conf[5] und man:vga[4].

[[device-hints]]
== Konfiguration von Geräten

Der Boot-Loader liest während des Systemstarts die Datei man:device.hints[5], die Variablen, auch "device hints" genannt, zur Konfiguration von Geräten enthält.

Die Variablen können auch mit Kommandos in Phase 3 des Boot-Loaders, wie in <<boot-loader>> beschrieben, bearbeitet werden. Neue Variablen werden mit `set` gesetzt, `unset` löscht schon definierte Variablen und `show` zeigt Variablen an. Variablen aus [.filename]#/boot/device.hints# können zu diesem Zeitpunkt überschrieben werden. Die hier durchgeführten Änderungen sind nicht permanent und beim nächsten Systemstart nicht mehr gültig.

Nach dem Systemstart können alle Variablen mit man:kenv[1] angezeigt werden.

Pro Zeile enthält [.filename]#/boot/device.hints# eine Variable. Kommentare werden durch `#` eingeleitet. Die verwendete Syntax lautet:

[source,shell]
....
 hint.driver.unit.keyword="value"
....

Der Boot-Loader verwendet die nachstehende Syntax:

[source,shell]
....
 set hint.driver.unit.keyword=value
....

Der Gerätetreiber wird mit `driver`, die Nummer des Geräts mit `unit` angegeben. `keyword` ist eine Option aus der folgenden Liste:

* `at`: Gibt den Bus, auf dem sich das Gerät befindet, an.
* `port`: Die Startadresse des I/O-Bereichs.
* `irq`: Gibt die zu verwendende Unterbrechungsanforderung (IRQ) an.
* `drq`: Die Nummer des DMA Kanals.
* `maddr`: Die physikalische Speicheradresse des Geräts.
* `flags`: Setzt verschiedene gerätespezifische Optionen.
* `disabled`: Deaktiviert das Gerät, wenn der Wert auf `1` gesetzt wird.

Ein Gerätetreiber kann mehr Optionen, als die hier beschriebenen, besitzen oder benötigen. Es wird empfohlen, die Optionen in der Manualpage des Treibers nachzuschlagen. Weitere Informationen finden Sie in man:device.hints[5], man:kenv[1], man:loader.conf[5] und man:loader[8].

[[boot-shutdown]]
== Der Shutdown-Vorgang

Im Falle eines regulären Herunterfahrens durch man:shutdown[8] führt man:init[8] [.filename]#/etc/rc.shutdown# aus, sendet dann sämtlichen Prozessen ein `TERM` Signal und schließlich ein `KILL` Signal an alle Prozesse, die sich nicht rechtzeitig beendet haben.

FreeBSD-Systeme, die Energieverwaltungsfunktionen unterstützen, können mit `shutdown -p now` ausgeschaltet werden. Zum Neustart des Systems wird `shutdown -r now` benutzt. Das Kommando man:shutdown[8] kann nur von `root` oder Mitgliedern der Gruppe `operator` benutzt werden. Man kann auch man:halt[8] und man:reboot[8] verwenden. Weitere Informationen finden Sie in den Hilfeseiten der drei Kommandos.

Das Ändern der Gruppenmitgliedschaft wird in crossref:basics[users-synopsis,“Benutzer und grundlegende Account-Verwaltung”] beschrieben.

[NOTE]
====
Die Energieverwaltungsfunktionen erfordern, dass die Unterstützung für man:acpi[4] als Modul geladen, oder statisch in einen angepassten Kernel kompiliert wird.
====
