Add the "boot" chapter, based on English rev 1.30.

Translated by:	Hans-Christian Ebke <hans-christian_ebke@gmx.de>.
Obtained from:	FreeBSD German Documentation Project
This commit is contained in:
Alexander Langer 2002-01-28 02:16:40 +00:00
parent b254804c72
commit 4f2ad6d62b
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=11916

View file

@ -0,0 +1,714 @@
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
Original version 1.30
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/boot/chapter.sgml,v 1.2 2002/01/20 23:32:27 mheinen Exp $
-->
<chapter id="boot">
<title>FreeBSDs Bootvorgang</title>
<sect1 id="boot-synopsis">
<title>&Uuml;bersicht</title>
<indexterm><primary>booting</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&ouml;glicht gro&szlig;e Flexibilit&auml;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 des selben Betriebssystems oder installierten Kernels
gew&auml;hlt werden.</para>
<para>Dieses Kapitel zeigt die zur Verf&uuml;gung stehenden Konfigurationsm&ouml;glichkeiten und
wie man den Bootvorgang anpasst. Dies schließt alles ein, bis
der Kernel gestartet worden ist, der dann alle Ger&auml;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&auml;hrend des Bootvorgangs von weiß zu
Hellgrau wechselt.</para>
<para>Dieses Kapitel informiert &uuml;ber folgende Punkte:</para>
<itemizedlist>
<listitem>
<para>Die Komponenten des FreeBSD Bootstraps und deren Interaktion.</para>
</listitem>
<listitem>
<para>Die Optionen, die die Komponenten im FreeBSD Bootstrap zum Kontrollieren des Bootvorgangs nehmen.</para>
</listitem>
</itemizedlist>
<note>
<title>nur x86</title>
<para>Dieses Kapitel erkl&auml;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 &auml;hnelt einer Geschichte des Barons von
M&uuml;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 und wurde
hinterher mit booten abgek&uuml;rzt.</para>
<para>Auf x86 Plattformen ist das BIOS (Basic Input/Output System)
daf&uuml;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&auml;ndig laden und ausf&uuml;hren und geht davon aus,
dass der die restlichen Dinge, die f&uuml;r das Laden des
Betriebssystems notwendig sind, selber erledigen kann. </para>
<indexterm>
<primary>BIOS</primary>
<secondary>Basic Input/Output System</secondary>
</indexterm>
<para>Falls nur ein Betriebssystem installiert ist, ist der
standard MBR ausreichend. Dieser MBR sucht nach dem ersten
bootbaren slice auf dem Laufwerk und f&uuml;rt ihn aus, um das
restliche Betriebssystem zu laden.</para>
<para>Falls mehrere Betriebssysteme installiert sind, sollte
man einen anderen MBR installieren, der eine Liste der
verf&uuml;gbaren Betriebssysteme anzeigt und einen w&auml;hlen
l&auml;sst, welches man booten m&ouml;chte. FreeBSD liegt ein
solcher MBR bei und andere Hersteller bieten Alternativen
an.</para>
<para>Das Restliche FreeBSD bootstrap System ist in drei Phasen
unterteilt. Die erste Phase wird vom MBR durchgef&uuml;hrt, der
gerade genug Funktionalit&auml;t besitzt um den Computer in
einen bestimmten Status zu verhelfen und die zweite Phase zu
starten. Die zweite Phase f&uuml;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&uuml;hrt, weil der PC Standard die Gr&ouml;ße
der Programme, die in Phase eins und zwei ausgef&uuml;hrt
werden, limitiert. Durch das Verketten der durchzuf&uuml;hrenden
Aufgaben wird es FreeBSD m&ouml;glich ein sehr flexibles
Ladeprogramm zu besitzen.</para>
<indexterm><primary>kernel</primary></indexterm>
<indexterm><primary><command>init</command></primary></indexterm>
<para>Als n&auml;chstes wird der Kernel gestartet, der zun&auml;chst nach
Ger&auml;ten sucht und sie f&uuml;r den Gebrauch
initialisiert. Nach dem Booten des Kernels &uuml;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&uuml;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>Der MBR, und die Boot-Phasen Eins, Zwei und Drei</title>
<sect2 id="boot-boot0">
<title>Der MBR, <filename>/boot/boot0</filename></title>
<indexterm><primary>Master Boot Record (MBR)</primary></indexterm>
<para>Der MBR von FreeBSD befindet sich im Verzeichnis
<filename>/boot/boot0</filename>. Allerdings ist dies nur eine
<emphasis>Kopie</emphasis> des MBR, da der eigentliche MBR auf
einem Teil des Laufwerks gespeichert sein muss, der außerhalb
von FreeBSDs benutzbaren Bereich ist.</para>
<para><filename>boot0</filename> ist ein ziemlich simples
Programm, und zwar aus dem einfachen Grund, dass der MBR nur
512 bytes groß sein darf. Falls Sie den FreeBSD MBR
installiert haben und sich mehrere Betriebssysteme auf Ihrer
Festplatte befinden, werden Sie beim Starten des Computers
eine Anzeige sehen, &auml;hnlich der Folgenden:</para>
<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 95 und
Nachfolger, &uuml;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&auml;t</replaceable></userinput></screen>
<para>Wobei <replaceable>Ger&auml;t</replaceable> das Ger&auml;t ist, von
dem gebootet wird, also z.B. <devicename>ad0</devicename>
f&uuml;r die erste IDE Festplatte,
<devicename>ad2</devicename> f&uuml;r die erste IDE Festplatte
am zweiten IDE Controller, <devicename>da0</devicename>
f&uuml;r die erste SCSI Festplatte, usw.</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 des
selben Programms, im selben Bereich auf der
Festplatte. Aufgrund von Speicherplatz-Beschr&auml;nkungen
wurden sie aufgeteilt, aber man installiert sie eigentlich
generell zusammen.</para>
<para>Sie befinden sich beide auf im Bootsektor des Boot-Slices,
wo <link linkend="boot-boot0">boot0</link> und jedes andere
Programm im <abbrev>MBR</abbrev> das Programm erwartet, das
den weiteren Bootvorgang durchf&uuml;hrt. Die Dateien im
Verzeichnis <filename>/boot</filename> sind nur Kopien der
eigentlichen Dateien, die sich außerhalb FreeBSDs Dateisystems
befinden.</para>
<para><filename>boot1</filename> ist ebenfalls ein sehr simples
Programm, da es auch nur 512 byte groß sein darf, und es
besitzt gerade genug Funktionalit&auml;t um FreeBSDs
<firstterm>disklabel</firstterm>, das Informationen &uuml;ber
den Slice enth&auml;lt, auszulesen um
<filename>boot2</filename> zu finden und
auszuf&uuml;hren.</para>
<para><filename>boot2</filename> ist schon ein wenig
umfangreicher und besitzt gen&uuml;gend Funktionalit&auml;t um
Dateien in FreeBSDs Dateisystem zu finden. Außerdem hat es
eine einfache Schnittstelle, die es erm&ouml;glicht, den zu
ladenden Kernel oder Loader auszuw&auml;hlen.</para>
<para>Da der <link linkend="boot-loader">loader</link> einen
weitaus gr&ouml;ßeren Funktionsumfang hat und eine sch&ouml;ne
und einfach zu bedienende Boot-Konfigurations-Schnitstelle zur
Verf&uuml;gung stellt, wird er gew&ouml;hnlich von
<filename>boot2</filename> anstatt des Kernels
gestartet. Fr&uuml;her war es jedoch dazu da den Kernel direkt
zu starten.</para>
<example id="boot-boot2-example">
<title><filename>boot2</filename> Screenshot</title>
<screen>&gt;&gt; FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:</screen>
</example>
<para>Um das installierte
<filename>boot1</filename> und <filename>boot2</filename> zu
ersetzen, benutzt man &man.disklabel.8;:</para>
<screen>&prompt.root; <userinput>disklabel -B <replaceable>Slice</replaceable></userinput></screen>
<para>Wobei <replaceable>Slice</replaceable> Laufwerk und Slice
darstellt, von dem gebootet wird, also
z.B. <devicename>ad0s1</devicename> f&uuml;r den ersten 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.disklabel.8;
benutzt wird eine "dangerously dedicated disk" erstellt,
ohne slices. Das ist ein Zustand, den man meistens nicht
hervorrufen m&ouml;chte. Aus diesem Grund sollte man ein
&man.disklabel.8; Kommando noch einmal pr&uuml;fen, bevor
man <keycap>Return</keycap> bet&auml;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&auml;nzt durch einen
umfangreichen Interpreter mit einem komplexeren
Befehlssatz.</para>
<sect3 id="boot-loader-flow">
<title>Loader Ablauf</title>
<para>Der Loader sucht w&auml;hrend seiner Initialisierung
nach Konsolen und Laufwerke, 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&auml;ßig anweist
<filename>/boot/defaults/loader.conf</filename> zu lesen, wo
sinnvolle Standardeinstellungen f&uuml;r diverse Variablen
festgelegt werden und wiederum
<filename>/boot/loader.conf</filename> f&uuml;r lokale
&Auml;nderungen an diesen Variablen ausgelesen
wird. Anschließend arbeitet dann
<filename>loader.rc</filename> entsprechend dieser Variablen
und l&auml;dt die ausgew&auml;hlten Module und den
gew&uuml;nschten Kernel.</para>
<para>Abschließend wartet der Loader standardm&auml;ßig 10
Sekunden lang auf eine Tastatureingabe und bootet den
Kernel, falls keine Taste bet&auml;tigt wurde. Falls doch
eine Taste bet&auml;tigt wurde wird dem Benutzer eine
Eingabeaufforderung angezeigt. Sie nimmt einen einfach zu
bedienenden Befehlssatz entgegen, der es dem Benutzer
erlaubt &auml;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&auml;uchlichsten Befehle
bearbeitet. F&uuml;r eine ersch&ouml;pfende Diskussion aller
verf&uuml;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&auml;tigt wurde. Es wird ein Countdown angezeigt und
die standardm&auml;ssige Zeitspanne ist 10
Sekunden.</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.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>boot-conf</term>
<listitem>
<para>Bewirkt die automatische Konfiguration der Module,
abh&auml;ngig von den entsprechenden Variablen. Dieser
Vorgang ist identisch zu dem Vorgang, den der Bootloader
ausf&uuml;hrt und daher nur sinnvoll, wenn zuvor
<command>unload</command> benutzt wurde und Variablen
(gew&ouml;hnlich <envar>kernel</envar>) ver&auml;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&uuml;gung stehenden
Hilfe-Themen angezeigt.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>include <replaceable>Dateiname</replaceable>
&hellip;</term>
<listitem>
<para>Verarbeitet die angegebene Datei. Das Einlesen und
Interpretieren geschieht Zeile f&uuml;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&auml;dt den Kernel, das Kernel-Modul, oder die Datei
des angegebenen Typs. Optionen, die auf den Dateinamen folgen, werden
der Datei &uuml;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&ouml;ssen ebenfalls angezeigt werden.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>lsdev <optional><option>-v</option></optional></term>
<listitem>
<para>Listet alle Ger&auml;te auf, f&uuml;r die Module geladen
werden k&ouml;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&auml;dt s&auml;mtliche geladenen Module.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="boot-loader-examples">
<title>Beispiele f&uuml;r die Loader Bedienung.</title>
<para>Hier ein paar praktische Beispiele f&uuml;r die Bedienung des Loaders.</para>
<itemizedlist>
<indexterm><primary>Single-User Modus</primary></indexterm>
<listitem>
<para>Um den gew&ouml;hnlichen Kernel im Single-User Modus zu
starten:</para>
<screen><userinput>boot -s</userinput></screen>
</listitem>
<listitem>
<para>Um alle gew&ouml;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 compiliert und
installiert hat, zum Beispiel).</para>
<note>
<para>Der folgende Befehl l&auml;dt die gew&ouml;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&auml;dt ein Kernel-Konfigurations-Skript (ein
automatisiertes Skript, dass das Selbe tut, was der
Benutzer normalerweise von Hand an der Eingabeaufforderung
durchf&uuml;hren w&uuml;rde):</para>
<screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>
<sect1 id="boot-kernel">
<title>Kernel Interaktion w&auml;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&auml;lt sich gem&auml;ß seiner Boot-Flags, falls es
welche gibt.</para>
<sect2 id="boot-kernel-bootflags">
<indexterm>
<primary>kernel</primary>
<secondary>bootflags</secondary>
</indexterm>
<title>Kernel Boot-Flags</title>
<para>Es folgt eine Auflistung der gebr&auml;uchlichsten
Boot-Flags:</para>
<variablelist id="boot-kernel-bootflags-list">
<varlistentry>
<term><option>-a</option></term>
<listitem>
<para>Bewirkt, dass der Benutzer w&auml;hrend der
Kernel-Initialisierung gefragt wird, welches Ger&auml;t als
Root-Dateisystem gemounted werden soll.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-C</option></term>
<listitem>
<para>Es wird von CDROM 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&auml;hrend des Starten des
Kernels an.</para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para>F&uuml;r Informationen &uuml;ber weitere Boot-Flags konsultieren
Sie bitte &man.boot.8;.</para></note>
</sect2>
<!-- <sect2 id="boot-kernel-userconfig">
<title>UserConfig: Das Boot-Zeit Konfigurationsprogramm</title>
<para> </para>
</sect2> -->
</sect1>
<sect1 id="boot-init">
<indexterm>
<primary><command>init</command></primary>
</indexterm>
<title>Init: Initialisierung der Prozess-Kontrolle</title>
<para>Nachdem der Kernel den Bootprozess abgeschlossen hat
&uuml;bergibt er die Kontrolle an den Benutzer-Prozess
<command>init</command>. 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
<command>fsck</command> behebbar ist, schaltet
<command>init</command> 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 Mode</primary></indexterm>
<indexterm><primary>console</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">Multi-User Modus</link> heraus durch
den Befehl <command>shutdown</command> ohne die reboot
(<option>-r</option>) oder halt (<option>-h</option>) Option
erreicht werden.
<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 root Passworts auf, bevor es den Single-User Modus
aktiviert.</para>
<example id="boot-insecure-console">
<title>Auf Insecure gesetzte Konsole in /etc/ttys</title>
<programlisting># name getty type status comments
#
# This entry needed for asking password when init goes to single-user mode
# If you want to be asked for password, change "secure" to "insecure" here
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 root-Passwort kennen den Single-User Modus
benutzen k&ouml;nnen. Es bedeutet nicht, dass die Konsole
"unsicher" laufen wird. Daher sollte man
<literal>insecure</literal> w&auml;hlen, wenn man auf Sicherheit
bedacht ist, nicht <literal>secure</literal>.</para>
</note>
</sect2>
<sect2 id="boot-multiuser">
<title>Multi-User Mode</title>
<indexterm><primary>Multi-User Mode</primary></indexterm>
<para>Stellt <command>init</command> 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 Multi-User Modus, in dem dann die
Ressourcen Konfiguration des Systems gestartet wird.</para>
<sect3 id="boot-rc">
<indexterm><primary>rc Dateien</primary></indexterm>
<title>Ressourcen Konfiguration (engl.: resource configuration, rc)</title>
<para>Das Ressourcen Konfigurationssystem liest seine
Standardkonfiguration von
<filename>/etc/defaults/rc.conf</filename> und
System-spezifische Details von
<filename>/etc/rc.conf</filename>. Dann mountet es das
Dateisystem gem&auml;ß <filename>/etc/fstab</filename>, startet
die Netzwerkdienste, diverse System Daemons und f&uuml;hrt
schließlich die Startup-Skripte der lokal installierten
Programmpakete (packages) aus.</para>
<para>Die &man.rc.8; Handbuch Seite ist eine gute Quelle f&uuml;r
Informationen &uuml;ber das Ressourcen Konfigurationssystem und
ebenso &uuml;ber die Skripte ansich.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="boot-shutdown">
<title>Der Shutdown Vorgang</title>
<indexterm>
<primary><command>shutdown</command></primary>
</indexterm>
<para>Im Falle eines kontrollierten herunterfahrens durch
<command>shutdown</command> f&uuml;hrt init das
<filename>/etc/rc.shutdown</filename> Skript aus, sendet dann
s&auml;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>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->