<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <!-- The FreeBSD Documentation Project The FreeBSD German Documentation Project $FreeBSD$ $FreeBSDde: de-docproj/books/handbook/boot/chapter.sgml,v 1.63 2012/04/22 20:05:15 bcr Exp $ basiert auf: 1.76 --> <chapter id="boot"> <chapterinfo> <authorgroup> <author> <firstname>Hans-Christian</firstname> <surname>Ebke</surname> <contrib>Übersetzt von </contrib> </author> </authorgroup> </chapterinfo> <title>FreeBSDs Bootvorgang</title> <sect1 id="boot-synopsis"> <title>Übersicht</title> <indexterm><primary>booten</primary></indexterm> <indexterm><primary>Bootstrap</primary></indexterm> <para>Das Starten des Computers und das Laden des Betriebssystems wird im Allgemeinen als <quote>Bootstrap-Vorgang</quote> bezeichnet, oder einfach als <quote>Booten</quote>. 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.</para> <para>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. Falls Sie sich nicht ganz sicher sind, wann dies passiert: Es passiert, wenn die Farbe des Textes während des Bootvorgangs von weiß zu Hellgrau wechselt.</para> <para>Dieses Kapitel informiert über folgende Punkte:</para> <itemizedlist> <listitem> <para>Die Komponenten des FreeBSD-Bootvorgangs und deren Interaktion.</para> </listitem> <listitem> <para>Die Optionen, mit denen Sie den FreeBSD-Bootvorgang steuern können.</para> </listitem> <listitem> <para>Wie Geräte mit &man.device.hints.5; konfiguriert werden.</para> </listitem> </itemizedlist> <note> <title>nur x86</title> <para>Dieses Kapitel erklärt den Bootvorgang von FreeBSD auf Intel X86 Plattformen.</para> </note> </sect1> <sect1 id="boot-introduction"> <title>Das Problem des Bootens</title> <para>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 nun der Computer kein Programm von der Festplatte starten kann, sich das Betriebssystem aber dummerweise genau dort befindet, wie wird es dann gestartet?</para> <para>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. <foreignphrase>bootstrap</foreignphrase>) herausgezogen. In den jungen Jahren des Computerzeitalters wurde mit dem Begriff Bootstrap dann die Technik das Betriebssystem zu laden bezeichnet und wurde hinterher mit booten abgekürzt.</para> <indexterm><primary>BIOS</primary></indexterm> <indexterm> <primary>Basic Input/Output System</primary> <see>BIOS</see> </indexterm> <para>Auf x86-Plattformen ist das BIOS (Basic Input/Output System) dafür verantwortlich, das Betriebssystem zu laden. Dazu liest das BIOS den Master Bootsektor (MBR; Master Boot Record) aus, der sich an einer bestimmten Stelle auf der Festplatte/Diskette 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.</para> <indexterm><primary>Master Boot Record (MBR)</primary></indexterm> <indexterm><primary>Boot Manager</primary></indexterm> <indexterm><primary>Boot Loader</primary></indexterm> <para>Der Code innerhalb des MBRs wird für gewöhnlich als <emphasis>Boot-Manager</emphasis> bezeichnet, insbesondere, wenn eine Interaktion mit dem Anwender stattfindet. Ist dies der Fall, verwaltet der Boot-Manager zusätzlichen Code im ersten <emphasis>Track</emphasis> der Platte oder in Dateisystemen anderer Betriebssysteme. (Boot-Manager werden manchmal auch als <emphasis>Boot Loader</emphasis> bezeichnet, unter FreeBSD wird dieser Begriff aber für eine spätere Phase des Systemstarts verwendet.) Zu den bekanntesten Boot-Managern gehören <application>boot0</application> (der auch als <application>Boot Easy</application> bekannte Standard-Boot-Manager von &os;), <application>Grub</application>, <application>GAG</application>, sowie <application>LILO</application>. (Von diesen Boot-Managern hat nur <application>boot0</application> innerhalb des MBRs Platz.)</para> <para>Falls nur ein Betriebssystem installiert ist, ist der Standard MBR ausreichend. Dieser MBR sucht nach dem ersten bootbaren Slice (das dabei als <emphasis>active</emphasis> gekennzeichnet ist) auf dem Laufwerk und führt den dort vorhandenen Code aus, um das restliche Betriebssystem zu laden. Der von &man.fdisk.8; in der Voreinstellung installierte MBR ist ein solcher MBR und basiert auf <filename>/boot/mbr</filename>.</para> <para>Falls mehrere Betriebssysteme installiert sind, sollte man einen anderen Boot-Manager installieren, der eine Liste der verfügbaren Betriebssysteme anzeigt und einen wählen lässt, welches man booten möchte. Der nächste Abschnitt beschreibt zwei Boot-Manager mit diesen Fähigkeiten.</para> <para>Das restliche FreeBSD-Bootstrap-System ist in drei Phasen unterteilt. Die erste Phase wird vom MBR durchgeführt, der gerade genug Funktionalität besitzt 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 PC Standard die Größe der Programme, die in Phase eins und zwei ausgeführt werden, limitiert. Durch das Verketten der durchzuführenden Aufgaben wird es FreeBSD möglich, ein sehr flexibles Ladeprogramm zu besitzen.</para> <indexterm><primary>Kernel</primary></indexterm> <indexterm><primary><command>init</command></primary></indexterm> <para>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 generell alle Prozesse, die auf einem FreeBSD-System normalerweise beim Hochfahren gestartet werden.</para> </sect1> <sect1 id="boot-blocks"> <title>Boot-Manager und Boot-Phasen</title> <indexterm><primary>Boot Manager</primary></indexterm> <sect2 id="boot-boot0"> <title>Der Boot-Manager</title> <indexterm><primary>Master Boot Record (MBR)</primary></indexterm> <para>Der Code im MBR oder im Boot-Manager wird manchmal auch als <emphasis>stage zero</emphasis> des Boot-Prozesses bezeichnet. Dieser Abschnitt beschreibt zwei der weiter oben erwähnten Boot-Manager: <application>boot0</application> sowie <application>LILO</application>.</para> <formalpara><title>Der <application>boot0</application> Boot-Manager:</title> <para>Der vom FreeBSD-Installationsprogramm oder &man.boot0cfg.8; in der Voreinstelung installierte Master Boot Record (MBR) basiert auf <filename>/boot/boot0</filename>. Bei <application>boot0</application> handelt es sich um ein sehr einfaches Programm, da im <abbrev>MBR</abbrev> lediglich 446 Bytes verfügbar sind, weil der restliche Platz für die Partitionstabelle sowie den <literal>0x55AA</literal>-Identifier am Ende des MBRs benötigt wird. Falls Sie <application>boot0</application> verwenden und mehrere Betriebssysteme auf Ihrer Festplatte installiert haben, werden Sie beim Starten des Computers eine Anzeige ähnlich der folgenden sehen:</para></formalpara> <example id="boot-boot0-example"> <title><filename>boot0</filename>-Screenshot</title> <screen>F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2</screen> </example> <para>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:</para> <screen>&prompt.root; <userinput>fdisk -B -b /boot/boot0 <replaceable>Gerät</replaceable></userinput></screen> <para>Bei <replaceable>Gerät</replaceable> handelt es sich um das Gerät, von dem gebootet wird, also beispielsweise <devicename>ad0</devicename> für die erste IDE-Festplatte, <devicename>ad2</devicename> für die erste IDE-Festplatte am zweiten IDE-Controller, <devicename>da0</devicename> für die erste SCSI-Festplatte, usw. Diese Einstellungen können aber über &man.boot0cfg.8; angepasst werden.</para> <formalpara><title>Der LILO-Boot-Manager:</title> <para>Damit dieser Boot-Manager auch FreeBSD booten kann, starten Sie zuerst Linux und fügen danach folgende Zeilen in die Konfigurationsdatei <filename>/etc/lilo.conf</filename> ein:</para></formalpara> <programlisting>other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD</programlisting> <para>Dabei müssen Sie die primäre Partition von FreeBSD sowie dessen Platte im Linux-Format angeben. Dazu ersetzen Sie <replaceable>X</replaceable> durch die Linux-Bezeichnung der Platte und <replaceable>Y</replaceable> durch die von Linux verwendete Partitionsnummer. Wenn Sie ein <acronym>SCSI</acronym>-Laufwerk verwenden, müssen Sie <replaceable>/dev/sd</replaceable> anstelle von <replaceable>/dev/hd</replaceable> verwenden. Die Zeile <option>loader=/boot/chain.b</option> kann weggelassen werden, wenn beide Betriebssysteme auf der gleichen Platte installiert sind. Geben Sie danach <command>/sbin/lilo -v</command> ein, um Ihre Änderungen zu übernehmen. Achtung Sie dabei besonders auf etwaige Fehlermeldungen.</para> </sect2> <sect2 id="boot-boot1"> <title>Phase Eins, <filename>/boot/boot1</filename> und Phase Zwei, <filename>/boot/boot2</filename></title> <para>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 <application>bsdlabel</application> aus der kombinierten Datei <filename>/boot/boot</filename> kopiert.</para> <para>Beide Phasen befinden sich außerhalb des Dateisystems im Bootsektor des Boot-Slices, wo <link linkend="boot-boot0">boot0</link> 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 <filename>/boot/boot</filename> bestimmt.</para> <para><filename>boot1</filename> ist ein sehr einfaches Programm, da es nur 512 Bytes groß sein darf, und es besitzt gerade genug Funktionalität, um FreeBSDs <firstterm>bsdlabel</firstterm>, das Informationen über den Slice enthält, auszulesen, und um <filename>boot2</filename> zu finden und auszuführen.</para> <para><filename>boot2</filename> 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.</para> <para>Da der <link linkend="boot-loader">Loader</link> 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 <filename>boot2</filename> anstatt des Kernels gestartet. Früher war es jedoch dazu da den Kernel direkt zu starten.</para> <example id="boot-boot2-example"> <title><filename>boot2</filename>-Screenshot</title> <screen>>> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot:</screen> </example> <para>Um das installierte <filename>boot1</filename> und <filename>boot2</filename> zu ersetzen, benutzt man &man.bsdlabel.8;:</para> <screen>&prompt.root; <userinput>bsdlabel -B <replaceable>diskslice</replaceable></userinput></screen> <para>Wobei <replaceable>Slice</replaceable> das Laufwerk und die Slice darstellt, von dem gebootet wird, beispielsweise <devicename>ad0s1</devicename> für die erste Slice auf der ersten IDE-Festplatte.</para> <warning> <title>Dangerously Dedicated Mode</title> <para>Wenn man nur den Festplatten-Namen, also z.B. <devicename>ad0</devicename>, in &man.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 &man.bsdlabel.8;-Kommando noch einmal prüfen, bevor man <keycap>Return</keycap> betätigt.</para> </warning> </sect2> <sect2 id="boot-loader"> <title>Phase drei, <filename>/boot/loader</filename></title> <indexterm><primary>boot-loader</primary></indexterm> <para>Der boot-loader ist der letzte von drei Schritten im Bootstrap-Prozess und kann im Dateisystem normalerweise unter <filename>/boot/loader</filename> gefunden werden.</para> <para>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.</para> <sect3 id="boot-loader-flow"> <title>Loader Ablauf</title> <para>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.</para> <indexterm><primary>loader</primary></indexterm> <indexterm><primary>loader Konfiguration</primary></indexterm> <para>Danach liest der Loader die Datei <filename>/boot/loader.rc</filename> aus, welche ihn standardmäßig anweist <filename>/boot/defaults/loader.conf</filename> zu lesen, wo sinnvolle Standardeinstellungen für diverse Variablen festgelegt werden und wiederum <filename>/boot/loader.conf</filename> für lokale Änderungen an diesen Variablen ausgelesen wird. Anschließend arbeitet dann <filename>loader.rc</filename> entsprechend dieser Variablen und lädt die ausgewählten Module und den gewünschten Kernel.</para> <para>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.</para> </sect3> <sect3 id="boot-loader-commands"> <title>Die eingebauten Befehle des Loaders</title> <para>Hier werden nur die gebräuchlichsten Befehle bearbeitet. Für eine erschöpfende Diskussion aller verfügbaren Befehle konsultieren Sie bitte &man.loader.8;.</para> <variablelist> <varlistentry> <term>autoboot <replaceable>Sekunden</replaceable></term> <listitem> <para>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.</para> </listitem> </varlistentry> <varlistentry> <term>boot <optional><replaceable>-options</replaceable></optional> <optional><replaceable>Kernelname</replaceable></optional></term> <listitem> <para>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 <emphasis>unload</emphasis>-Befehl anwendbar, andernfalls wird der zuvor verwendete Kernel benutzt.</para> </listitem> </varlistentry> <varlistentry> <term>boot-conf</term> <listitem> <para>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 <command>unload</command> benutzt wurde und Variablen (gewöhnlich <envar>kernel</envar>) verändert wurden.</para> </listitem> </varlistentry> <varlistentry> <term>help <optional><replaceable>Thema</replaceable></optional></term> <listitem> <para>Zeigt die Hilfe an, die zuvor aus der Datei <filename>/boot/loader.help</filename> gelesen wird. Falls <literal>index</literal> als Thema angegeben wird, wird die Liste der zur Verfügung stehenden Hilfe-Themen angezeigt.</para> </listitem> </varlistentry> <varlistentry> <term>include <replaceable>Dateiname</replaceable> …</term> <listitem> <para>Verarbeitet die angegebene Datei. Das Einlesen und Interpretieren geschieht Zeile für Zeile und wird im Falle eines Fehlers umgehend unterbrochen.</para> </listitem> </varlistentry> <varlistentry> <term>load <optional><option>-t</option> <replaceable>Typ</replaceable></optional> <replaceable>Dateiname</replaceable></term> <listitem> <para>Lädt den Kernel, das Kernel-Modul, oder die Datei des angegebenen Typs. Optionen, die auf den Dateinamen folgen, werden der Datei übergeben.</para> </listitem> </varlistentry> <varlistentry> <term>ls <optional><option>-l</option></optional> <optional><replaceable>Pfad</replaceable></optional></term> <listitem> <para>Listet die Dateien im angegebenen Pfad auf, oder das root-Verzeichnis(/), falls kein Pfad angegeben wurde. Die Option <option>-l</option> bewirkt, dass die Dateigrössen ebenfalls angezeigt werden.</para> </listitem> </varlistentry> <varlistentry> <term>lsdev <optional><option>-v</option></optional></term> <listitem> <para>Listet alle Geräte auf, für die Module geladen werden können. Die Option <option>-v</option> bewirkt eine detailreichere Ausgabe.</para> </listitem> </varlistentry> <varlistentry> <term>lsmod <optional><option>-v</option></optional></term> <listitem> <para>Listet alle geladenen Module auf. Die Option <option>-v</option> bewirkt eine detailreichere Ausgabe.</para> </listitem> </varlistentry> <varlistentry> <term>more <replaceable>Dateiname</replaceable></term> <listitem> <para>Zeigt den Dateinhalt der angegebenen Datei an, wobei eine Pause alle <varname>LINES</varname> Zeilen gemacht wird.</para> </listitem> </varlistentry> <varlistentry> <term>reboot</term> <listitem> <para>Bewirkt einen umgehenden Neustart des Systems.</para> </listitem> </varlistentry> <varlistentry> <term>set <replaceable>Variable</replaceable></term> <term>set <replaceable>Variable</replaceable>=<replaceable>Wert</replaceable></term> <listitem> <para>Setzt die Umgebungsvariablen des Loaders.</para> </listitem> </varlistentry> <varlistentry> <term>unload</term> <listitem> <para>Entlädt sämtliche geladenen Module.</para> </listitem> </varlistentry> </variablelist> </sect3> <sect3 id="boot-loader-examples"> <title>Beispiele für die Loader Bedienung</title> <para>Hier ein paar praktische Beispiele für die Bedienung des Loaders.</para> <itemizedlist> <indexterm><primary>Single-User Modus</primary></indexterm> <listitem> <para>Um den gewöhnlichen Kernel im Single-User Modus zu starten:</para> <screen><userinput>boot -s</userinput></screen> </listitem> <listitem> <para>Um alle gewöhnlichen Kernelmodule zu entladen und dann nur den alten (oder jeden beliebigen anderen) Kernel zu laden:</para> <indexterm> <primary><filename>kernel.old</filename></primary> </indexterm> <screen><userinput>unload</userinput> <userinput>load <replaceable>kernel.old</replaceable></userinput></screen> <para>Es kann <filename>kernel.GENERIC</filename> verwendet werden, um den allgemeinen Kernel zu bezeichnen, der vorinstalliert wird. <filename>kernel.old</filename> bezeichnet den Kernel, der vor dem aktuellen installiert war (falls man einen neuen Kernel kompiliert und installiert hat zum Beispiel).</para> <note> <para>Der folgende Befehl lädt die gewöhnlichen Module mit einem anderen Kernel:</para> <screen><userinput>unload</userinput> <userinput>set kernel="<replaceable>kernel.old</replaceable>"</userinput> <userinput>boot-conf</userinput></screen></note> </listitem> <listitem> <para>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):</para> <screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen> </listitem> </itemizedlist> </sect3> <sect3 id="boot-splash"> <sect3info> <authorgroup> <author> <firstname>Joseph J.</firstname> <surname>Barbish</surname> <contrib>Contributed by </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Benedict</firstname> <surname>Reuschling</surname> <contrib>Übersetzt von </contrib> </author> </authorgroup> </sect3info> <title>Willkommmensbildschirme während des Bootvorgangs</title> <para>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.</para> <para>Es existieren zwei grundlegende Umgebungen in &os;. 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 <link linkend="x-install">X11</link> und eine der <link linkend="x11-wm">Graphischen Oberflächen</link>, wie <application>GNOME</application>, <application>KDE</application>, oder <application>XFce</application> installiert wurden, kann der X11-Desktop über das Kommando <command>startx</command> gestartet werden.</para> <para>Manche Benutzer ziehen den graphischen Anmeldebildschirm von X11 dem traditionellen, textbasierten Anmeldeprompt vor. Display-Manager wie <application>XDM</application> für &xorg;, <application>gdm</application> für <application>GNOME</application> und <application>kdm</application> für <application>KDE</application> (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.</para> <para>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 µsoft; &windows; (oder ein nicht-Unix-artiger Systemtyp) zur Verfügung stellt.</para> <sect4 id="boot-splash-function"> <title>Willkommensbildschirm-Funktionalität</title> <para>Die Willkommensbildschirm-Funktionalität unterstützt nur 256-Farben Bitmaps (<filename>.bmp</filename>), ZSoft <acronym>PCX</acronym> (<filename>.pcx</filename>) oder TheDraw (<filename>.bin</filename>) 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.</para> <para>Um grössere Bilder bis zu einer maximalen Auflösung von 1024 mal 768 Pixeln zu verwenden, muss Unterstützung für <acronym>VESA</acronym> in &os; enthalten sein. Dies kann durch das Laden des <acronym>VESA</acronym>-Moduls während des Systemstarts geschehen, oder durch Hinzufügen der <literal>VESA</literal>-Kernelkonfigurationsoption und anschliessendem Bau des Kernels (Lesen Sie dazu <xref linkend="kernelconfig"/>). Die <acronym>VESA</acronym>-Unterstützung ermöglicht es den Benutzern, Willkommensbildschirme als Vollbild anzuzeigen, die den gesamten Bildschirm ausfüllen.</para> <para>Wenn der Willkommensbildschirm beim Bootvorgang angezeigt wird, kann dieser jederzeit mit einem beliebigen Tastendruck ausgeschaltet werden.</para> <para>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 <literal>saver=</literal>-Zeile in <filename>/etc/rc.conf</filename> geändert werden. Die Option <literal>saver=</literal> besitzt mehrere eingebaute Screen-Saver, aus denen man wählen kann, und deren komplette Liste in der &man.splash.4;-Manualpage enthalten ist. Der Standard-Screen-Saver ist <quote>warp</quote>. Beachten Sie, dass sich die <literal>saver=</literal>-Option in <filename>/etc/rc.conf</filename> nur auf virtuelle Konsolen bezieht. Sie hat keinen Effekt auf X11-Display-Manager.</para> <para>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.</para> <para>Dateien mit Beispiel-Willkommensbildschirmen können von der Galerie auf <ulink url="http://artwork.freebsdgr.org/node/3/">http://artwork.freebsdgr.orgb</ulink> heruntergeladen werden. Durch die Installation des Ports <filename role="package">sysutils/bsd-splash-changer</filename> können Willkommensbildschirme von einer zufällig ausgewählten Sammlung von Bildern bei jedem Neustart angezeigt werden.</para> </sect4> <sect4 id="boot-splash-enable"> <title>Aktivieren der Willkommensbildschirm-Funktionalität</title> <para>Die Willkommensbildschirm-Datei (<filename>.bmp</filename>, <filename>.pcx</filename> oder <filename>.bin</filename>) muss im Wurzelverzeichnis, z.B. <filename class="directory">/boot</filename> abgelegt werden.</para> <para>Für die Standard-Auflösung (256-Farben, 320 mal 200 Pixel oder weniger) beim Booten bearbeiten Sie die Datei <filename>/boot/loader.conf</filename>, so dass diese die folgenden Zeilen enthält:</para> <programlisting>splash_bmp_load="YES" bitmap_load="YES" bitmap_name="<replaceable>/boot/splash.bmp</replaceable>"</programlisting> <para>Für grössere Video-Auflösungen bis zum Maximum von 1024 mal 768 Pixeln ändern Sie die Datei <filename>/boot/loader.conf</filename>, damit diese die folgenden Zeilen enthält:</para> <programlisting>vesa_load="YES" splash_bmp_load="YES" bitmap_load="YES" bitmap_name="<replaceable>/boot/splash.bmp</replaceable>"</programlisting> <para>Das Beispiel oben nimmt an, dass <filename><replaceable>/boot/splash.bmp</replaceable></filename> als Willkommensbildschirm verwendet wird. Wenn eine <acronym>PCX</acronym>-Datei verwendet werden soll, benutzen Sie die folgenden Zeilen, inklusive der <literal>vesa_load="YES"</literal>-Zeile, abhängig von der Auflösung.</para> <programlisting>splash_pcx_load="YES" bitmap_load="YES" bitmap_name="<replaceable>/boot/splash.pcx</replaceable>"</programlisting> <para>In der Version 8.3 kann als weitere Option ascii-Kunst im <ulink url="https://en.wikipedia.org/wiki/TheDraw">TheDraw</ulink> Format verwendet werden.</para> <programlisting>splash_txt="YES" bitmap_load="YES" bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting> <para>Wie das Beispiel oben demonstriert, ist der Dateiname nicht auf <quote>splash</quote> beschränkt. Es ist beliebig, so lange es den Dateityp <acronym>BMP</acronym> oder <acronym>PCX</acronym> besitzt, z.B. <filename><replaceable>splash_640x400</replaceable>.bmp</filename> oder <filename><replaceable>blue_wave</replaceable>.pcx</filename>.</para> <para>Weitere interessante Optionen für <filename>loader.conf</filename> sind:</para> <variablelist> <varlistentry> <term><literal>beastie_disable="YES"</literal></term> <listitem> <para>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.</para> </listitem> </varlistentry> <varlistentry> <term><literal>loader_logo="beastie"</literal></term> <listitem> <para>Dies ersetzt die Standardanzeige des Wortes <quote>&os;</quote>. Stattdessen wird wie in der Vergangenheit auf der rechten Seite des Bootmenüs das bunte Beastie-Logo angezeigt.</para> </listitem> </varlistentry> </variablelist> <para>Für weitere Informationen lesen Sie die Manualpages &man.splash.4;, &man.loader.conf.5; und &man.vga.4;.</para> </sect4> </sect3> </sect2> </sect1> <sect1 id="boot-kernel"> <title>Kernel Interaktion während des Bootprozesses</title> <indexterm> <primary>Kernel</primary> <secondary>boot interaction</secondary> </indexterm> <para>Wenn der Kernel einmal geladen ist, entweder durch den <link linkend="boot-loader">Loader</link> (die Standardmethode) oder durch <link linkend="boot-boot1">boot2</link> (den Loader umgehend), verhält sich gemäß seiner Boot-Flags, falls es welche gibt.</para> <sect2 id="boot-kernel-bootflags"> <title>Kernel Boot-Flags</title> <indexterm> <primary>Kernel</primary> <secondary>bootflags</secondary> </indexterm> <para>Es folgt eine Auflistung der gebräuchlichsten Boot-Flags:</para> <variablelist id="boot-kernel-bootflags-list"> <varlistentry> <term><option>-a</option></term> <listitem> <para>Bewirkt, dass der Benutzer während der Kernel-Initialisierung gefragt wird, welches Gerät als Root-Dateisystem gemounted werden soll.</para> </listitem> </varlistentry> <varlistentry> <term><option>-C</option></term> <listitem> <para>Es wird von CD-ROM gebootet.</para> </listitem> </varlistentry> <varlistentry> <term><option>-c</option></term> <listitem> <para>UserConfig, das Boot-Zeit Konfigurationsprogramm, wird gestartet.</para> </listitem> </varlistentry> <varlistentry> <term><option>-s</option></term> <listitem> <para>Bewirkt den Start des Single-User Modus.</para> </listitem> </varlistentry> <varlistentry> <term><option>-v</option></term> <listitem> <para>Zeigt mehr Informationen während des Starten des Kernels an.</para> </listitem> </varlistentry> </variablelist> <note> <para>Andere Boot-Flags sind in der Hilfeseite &man.boot.8; erläutert.</para></note> </sect2> <!-- <sect2 id="boot-kernel-userconfig"> <title>UserConfig: Das Boot-Zeit Konfigurationsprogramm</title> <para> </para> </sect2> --> </sect1> <sect1 id="device-hints"> <sect1info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Beigetragen von </contrib> </author> </authorgroup> <!-- 18 OCT 2002 --> </sect1info> <title>Konfiguration von Geräten</title> <indexterm> <primary>device.hints</primary> </indexterm> <para>Der Boot-Loader liest während des Systemstarts die Datei &man.device.hints.5;, die Variablen, auch <quote>device hints</quote> genannt, zur Konfiguration von Geräten enthält.</para> <para>Die Variablen können auch mit Kommandos in der <link linkend="boot-loader">Phase 3 des Boot-Loaders</link> bearbeitet werden. Neue Variablen werden mit <command>set</command> gesetzt, <command>unset</command> löscht schon definierte Variablen und <command>show</command> zeigt Variablen an. Variablen aus <filename>/boot/device.hints</filename> können zu diesem Zeitpunkt überschrieben werden. Die hier durchgeführten Änderungen sind nicht permanent und beim nächsten Systemstart nicht mehr gültig.</para> <para>Nach dem Systemstart können alle Variablen mit &man.kenv.1; angezeigt werden.</para> <para>Pro Zeile enthält <filename>/boot/device.hints</filename> eine Variable. Kommentare werden, wie üblich, durch <literal>#</literal> eingeleitet. Die verwendete Syntax lautet:</para> <screen><userinput>hint.<replaceable>driver</replaceable>.<replaceable>unit</replaceable>.<replaceable>keyword</replaceable>="<replaceable>value</replaceable>"</userinput></screen> <para>Der Boot-Loader verwendet die nachstehende Syntax:</para> <screen><userinput>set hint.<replaceable>driver</replaceable>.<replaceable>unit</replaceable>.<replaceable>keyword</replaceable>=<replaceable>value</replaceable></userinput></screen> <para>Der Gerätetreiber wird mit <replaceable>driver</replaceable>, die Nummer des Geräts mit <replaceable>unit</replaceable> angegeben. <replaceable>keyword</replaceable> ist eine Option aus der folgenden Liste:</para> <itemizedlist> <listitem> <para><option>at</option>: Gibt den Bus, auf dem sich das Gerät befindet, an.</para> </listitem> <listitem> <para><option>port</option>: Die Startadresse des <acronym>I/O</acronym>-Bereichs.</para> </listitem> <listitem> <para><option>irq</option>: Gibt die zu verwendende Unterbrechungsanforderung (IRQ) an.</para> </listitem> <listitem> <para><option>drq</option>: Die Nummer des DMA Kanals.</para> </listitem> <listitem> <para><option>maddr</option>: Die physikalische Speicheradresse des Geräts.</para> </listitem> <listitem> <para><option>flags</option>: Setzt verschiedene gerätespezifische Optionen.</para> </listitem> <listitem> <para><option>disabled</option>: Deaktiviert das Gerät, wenn der Wert auf <literal>1</literal> gesetzt wird.</para> </listitem> </itemizedlist> <para>Ein Gerätetreiber kann mehr Optionen, als die hier beschriebenen, besitzen oder benötigen. Schlagen Sie die Optionen bitte in der Online-Hilfe des Treibers nach. Weitere Informationen erhalten Sie in &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5; und &man.loader.8;.</para> </sect1> <sect1 id="boot-init"> <title>Init: Initialisierung der Prozess-Kontrolle</title> <indexterm> <primary><command>init</command></primary> </indexterm> <para>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</filename>, oder dem Pfad, der durch die Variable <envar>init_path</envar> im <command>Loader</command> spezifiziert wird.</para> <sect2 id="boot-autoreboot"> <title>Der automatische Reboot-Vorgang</title> <para>Der automatische Reboot-Vorgang stellt sicher, dass alle Dateisysteme des Systems konsistent sind. Falls dies nicht der Fall ist und die Inkonsistenz nicht durch &man.fsck.8; behebbar ist, schaltet &man.init.8; das System in den <link linkend="boot-singleuser">Single-User Modus</link>, damit der Systemadministrator sich des Problems annehmen kann.</para> </sect2> <sect2 id="boot-singleuser"> <title>Der Single-User Modus</title> <indexterm><primary>Single-User Modus</primary></indexterm> <indexterm><primary>Konsole</primary></indexterm> <para>Das Schalten in diesen Modus kann erreicht werden durch <link linkend="boot-autoreboot">den automatischen Reboot-Vorgang</link>, durch das Booten mit der Option <option>-s</option> oder das Setzen der <envar>boot_single</envar> Variable in <command>Loader</command>.</para> <para>Weiterhin kann der Single-User Modus aus dem <link linkend="boot-multiuser">Mehrbenutzermodus</link> heraus durch den Befehl &man.shutdown.8; ohne die reboot (<option>-r</option>) oder halt (<option>-h</option>) Option erreicht werden.</para> <para>Falls die System-Konsole (<literal>console</literal>) in <filename>/etc/ttys</filename> auf <literal>insecure</literal> (dt.: unsicher) gesetzt ist, fordert das System allerdings zur Eingabe des Passworts von <username>root</username> auf, bevor es den Single-User Modus aktiviert.</para> <example id="boot-insecure-console"> <title>Auf insecure gesetzte Konsole in <filename>/etc/ttys</filename></title> <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</programlisting> </example> <note> <para>Eine Konsole sollte auf <literal>insecure</literal> gesetzt sein, wenn die physikalische Sicherheit der Konsole nicht gegeben ist und sichergestellt werden soll, dass nur Personen, die das Passwort von <username>root</username> kennen, den Single-User Modus benutzen können. Es bedeutet nicht, dass die Konsole "unsicher" laufen wird. Daher sollte man <literal>insecure</literal> wählen, wenn man auf Sicherheit bedacht ist, nicht <literal>secure</literal>.</para> </note> </sect2> <sect2 id="boot-multiuser"> <title>Mehrbenutzermodus</title> <indexterm><primary>Mehrbenutzermodus</primary></indexterm> <para>Stellt &man.init.8; fest, dass das Dateisystem in Ordnung ist, oder der Benutzer den <link linkend="boot-singleuser">Single-User Modus</link> beendet, schaltet das System in den Mehrbenutzermodus, in dem dann die Ressourcen Konfiguration des Systems gestartet wird.</para> <sect3 id="boot-rc"> <title>Ressourcen Konfiguration, rc-Dateien</title> <indexterm><primary>rc-Dateien</primary></indexterm> <para>Das Ressourcen Konfigurationssystem (engl. <foreignphrase>resource configuration</foreignphrase>, rc) liest seine Standardkonfiguration von <filename>/etc/defaults/rc.conf</filename> und System-spezifische Details von <filename>/etc/rc.conf</filename>. Dann mountet es die Dateisysteme gemäß <filename>/etc/fstab</filename>, startet die Netzwerkdienste, diverse System Daemons und führt schließlich die Start-Skripten der lokal installierten Anwendungen aus.</para> <para>Die &man.rc.8; Handbuch Seite ist eine gute Quelle für Informationen über das Ressourcen Konfigurationssystem und ebenso über die Skripte an sich.</para> </sect3> </sect2> </sect1> <sect1 id="boot-shutdown"> <title>Der Shutdown-Vorgang</title> <indexterm> <primary><command>shutdown</command></primary> </indexterm> <para>Im Falle eines regulären Herunterfahrens durch &man.shutdown.8; führt &man.init.8; <filename>/etc/rc.shutdown</filename> aus, sendet dann sämtlichen Prozessen ein <literal>TERM</literal> Signal und schließlich ein <literal>KILL</literal> Signal an alle Prozesse, die sich nicht schnell genug beendet haben.</para> <para>FreeBSD-Systeme, die Energieverwaltungsfunktionen unterstützen, können Sie mit dem Kommando <command>shutdown -p now</command> ausschalten. Zum Neustart des Systems benutzen Sie <command>shutdown -r now</command>. Das Kommando &man.shutdown.8; kann nur von <username>root</username> oder Mitgliedern der Gruppe <groupname>operator</groupname> benutzt werden. Sie können auch die Kommandos &man.halt.8; und &man.reboot.8; verwenden. Weitere Informationen finden Sie in den Hilfeseiten der drei Kommandos.</para> <note> <para>Unter FreeBSD müssen Sie die &man.acpi.4;-Unterstützung im Kernel aktivieren oder das Modul geladen haben, damit Sie die Energieverwaltungsfunktionen benutzen können.</para> </note> </sect1> </chapter>