| Red Hat Documentation |
Der Bootprozeß, Init und ShutdownIn diesem Abschnitt werden die Vorgänge beim Starten und Herunterfahren eines Red Hat Linux Systems dargestellt. Hinter die Kulissen des Bootprozesses geschautWenn ein Computer gestartet wird, sucht der Prozessor am Ende des Systemspeichers nach dem BIOS (Basic Input/Output System) und führt es aus. Das BIOS-Programm ist in schreibgeschütztem Speicher abgelegt und ständig einsatzbereit. Das BIOS stellt die Schnittstelle der untersten Ebene zu den Peripheriegeräten dar und steuert den ersten Schritt des Bootprozesses. Das BIOS prüft das System, sucht und prüft Peripheriegeräte und sucht dann nach einem Bootlaufwerk. Normalerweise prüft es das Diskettenlaufwerk (oder auf vielen neueren Systemen das CD-ROM-Laufwerk, falls ein solches vorhanden ist) und sucht anschließend auf der Festplatte. Auf der Festplatte sucht das BIOS einen Master Boot Record (MBR), der im ersten Sektor der ersten Festplatte beginnt, und startet den MBR. Der MBR sucht nach der ersten aktiven Partition und liest den Boot Record der Partition. Der Boot Record enthält Anweisungen zum Laden des Bootloaders LILO ( LInux LOader). Anschließend lädt der MBR dann LILO, und LILO übernimmt den Prozeß. LILO liest die Datei /etc/lilo.conf, in der festgelegt ist, welche(s) Betriebssystem(e) zu konfigurieren ist/sind bzw. welcher Kernel zu starten ist und wo sich LILO installieren soll (zum Beispiel /dev/hda für Ihre Festplatte). LILO zeigt den LILO: -Prompt auf dem Bildschirm an und wartet eine festgelegte Zeitspanne (ebenfalls in der Datei lilo.conf festgelegt) auf Benutzereingaben. Wenn in Ihrer lilo.conf festgelegt ist, daß mit LILO ein bestimmtes Betriebssystem gewählt werden kann, können Sie am LILO-Prompt die Kennung des Betriebssystems eingeben, das Sie starten möchten. Nach einer festgelegten Zeitspanne (üblicherweise fünf Sekunden), startet LILO dasjenige Betriebssystem, das zuerst in der Datei lilo.conf aufgeführt ist. Wenn LILO Linux bootet, wird zuerst der Kernel gestartet, der als Datei vmlinuz (zuzüglich einer Versionsnummer, zum Beispiel vmlinuz-2.2.15-xx) im Verzeichnis /boot abgelegt ist. Dann übernimmt der Kernel den weiteren Bootprozeß. Der Kernel sucht in mehreren verschiedenen Verzeichnissen nach init (üblicherweise in /sbin abgelegt) und führt das erste gefundene Programm init aus. Init übernimmt den weiteren Bootprozeß. Init startet alle Prozesse Ihres Linux-System (und wird gleichzeitig zum Elternteil bzw. Großelternteil dieser Prozesse). Zuerst führt init /etc/rc.d/rc.sysinit aus, das Ihren Pfad setzt, das Netzwerk einrichtet (falls erforderlich), die Speicherauslagerung (Swapping) startet, Dateisysteme überprüft usw. Grundsätzlich kümmert sich rc.sysinit um alles, was bei der Systeminitialisierung auf Ihrem System erledigt werden muß. Zum Beispiel verwendet rc.sysinit auf einem System, das in ein Netzwerk eingebunden ist, die Informationen in den Dateien /etc/sysconfig/network und /etc/sysconfig/clock zum Initialisieren der Netzwerkprozesse und der Uhr. Wenn Sie serielle Port-Prozesse haben, die initialisiert werden müssen, kann auch rc.serial ausgeführt werden. Init wertet die Datei /etc/inittab aus und implementiert die dort vorhandenen Angaben. Die Datei /etc/inittab beschreibt, wie das System auf jedem Runlevel einzurichten ist und legt den Standard-Runlevel fest. Diese Datei legt fest, daß /etc/rc.d/rc und /sbin/update beim Start eines Runlevels ausgeführt werden müssen. Die Datei /sbin/update gibt fehlerhafte Puffer auf der Festplatte wieder frei. Bei Änderungen des Runlevels startet und stoppt /etc/rc.d/rc Dienste. Zuerst legt rc die Quellfunktionsbibliothek für das System fest (normalerweise /etc/rc.d/init.d/functions), in der beschrieben ist, wie Programme zu starten/beenden sind und wie die PID eines Programms bestimmt werden kann. Die Datei rc stellt dann fest, in welchem Runlevel sich das System aktuell befindet und in welchem es sich vorher befand, und übergibt diese Informationen an linuxconf. Die Datei rc startet alle Hintergrundprozesse, die für die Ausführung des Systems erforderlich sind, und sucht nach einem rc-Verzeichnis für dieses Runlevel (/etc/rc.d/rc<x>.d , wobei das <x> eine Zahl zwischen 0 und 6 sein kann). rc beendet alle kill-Skripte (ihr Dateiname beginnt mit einem K) in /rc.d/. Anschließend werden alle Startskripten (ihr Dateiname beginnt mit einem S ) im entsprechenden Runlevel-Verzeichnis initialisiert (damit alle Dienste und Anwendungen korrekt gestartet werden). Beispiel für Runlevel 5: rc sucht im Verzeichnis /etc/rc.d/rc5.d und stellt fest, daß rusersd, rwalld, rwhod, mcserv, mars-nwe, apmd und pcmcia beendet werden müssen. Danach sucht rc im selben Verzeichnis nach Startskripten und findet Startskripten für kmod , network, nfsfs, randomc, syslog, atd, crond, portmap, snmpd, inet, xntpd, lpd, nfs.rpmsave, dhcpd, ypbind, autofs, keytable, sendmail, gpm, sound und smb.rpmsave. Und so beginnt der ganze Vorgang erneut. Die Datei /etc/inittab erzeugt mit fork einen Terminalprozeß für jede virtuelle Konsole (Anmelde-Prompts) für jedes Runlevel (die Runlevels 2-5 verfügen über sechs solcher Konsolen, Runlevel 1 (Einzelbenutzermodus) nur über eine Konsole, die Runlevels 0 und 6 haben keine virtuelle Konsolen). /etc/inittab gibt außerdem an, daß gdm, der X-Anmeldemanager, in Runlevel 5 gestartet werden muß. /etc/inittab gibt auch an, wie das System die Tastenkombination Strg-Alt-Entf in einen Befehl wie /sbin/shutdown -t3 -r now umsetzt. Schließlich gibt /etc/inittab an, wie das System bei einem Stromausfall zu reagieren hat. Wenn das System an dieser Stelle angelangt ist, sollten Sie einen Anmelde-Prompt auf dem Bildschirm sehen. Diese Aufgaben werden innerhalb weniger Sekunden ausgeführt. Im nächsten Abschnitt werden die Dateien im Verzeichnis /etc/sysconfig beschrieben. SysconfigIm folgenden werden die verschiedenen Dateien in /etc/sysconfig, ihre Funktion und ihr Inhalt beschrieben. Dateien in /etc/sysconfigIn der Regel enthält /etc/sysconfig die folgenden Dateien:
Es folgt eine Beschreibung der einzelnen Dateien. /etc/sysconfig/clockIn der Datei /etc/sysconfig/clock wird festgelegt, wie die Systemuhr zu interpretieren ist. In früheren Red Hat Linux Versionen wurden die folgenden Werte verwendet (in dieser Version bitte nicht mehr verwenden):
In neueren Versionen werden nur noch die folgenden Einstellungen verwendet:
/etc/sysconfig/hwconfIn der Datei /etc/sysconfig/hwconf sind alle Hardware-Komponenten aufgeführt, die kudzu in Ihrem System erkannt hat, außerdem Informationen zu den verwendeten Treibern, Anbieter-ID und Geräte-ID. Diese Datei darf nicht verändert werden. Falls Sie die Datei dennoch ändern, kann es sein, daß Geräte plötzlich als hinzugefügt oder entfernt angezeigt werden. /etc/sysconfig/mouseDie Datei /etc/sysconfig/mouse enthält Informationen über die angeschlossene Maus. Folgende Werte können verwendet werden:
Außerdem ist /dev/mouse ein symbolischer Link, der auf das eigentliche Mausgerät zeigt. /etc/sysconfig/sendmailDie Datei /etc/sysconfig/sendmail ermöglicht das Versenden von Nachrichten an einen oder mehrere Empfänger, wobei die Nachricht je nach den Erfordernissen über beliebige Netzwerke geroutet werden können. In der Datei sind die Standardwerte für die Ausführung des Programms sendmail festgelegt. Standardmäßig läuft das Programm als Dämon im Hintergrund und prüft seine Warteschlange pro Stunde einmal für den Fall, daß Nachrichten zurückgekommen sind. Folgende Werte können verwendet werden:
/etc/sysconfig/apmdDie Datei /etc/sysconfig/apmd wird von apmd zur Konfiguration verwendet, welche Prozesse nach den Befehlen suspend bzw. resume gestartet/gestoppt/geändert werden sollen. In ihr ist festgelegt, ob apmd beim Startvorgang aktiviert oder deaktiviert wird, je nachdem, ob Ihre Hardware Advanced Power Management (apm) unterstützt bzw. ob Sie diese Funktionalität verwenden wollen. /etc/sysconfig/initIn der Datei /etc/sysconfig/init ist die Art der Bildschirmdarstellung beim Systemstart festgelegt. Folgende Werte können verwendet werden:
/etc/sysconfig/keyboardDie Datei /etc/sysconfig/keyboard bestimmt das Verhalten der Tastatur. Folgende Werte können verwendet werden:
/etc/sysconfig/networkDie Datei /etc/sysconfig/network enthält Informationen über die gewünschte Netzwerkkonfiguration. Folgende Werte können verwendet werden:
/etc/sysconfig/pcmciaDie Datei /etc/sysconfig/pcmcia enthält Informationen über die PCMCIA-Konfiguration. Folgende Werte können verwendet werden:
/etc/sysconfig/soundcardDie Datei /etc/sysconfig/soundcard wird von sndconfig erstellt und darf nicht verändert werden. Sie wird von /etc/rc.d/init.d/sound zur Einrichtung Ihres Systems verwendet. Dies hat den einzigen Zweck, daß festgelegt wird, welcher Karteneintrag im Menü standardmäßig geöffnet werden soll, wenn sndconfig das nächste Mal ausgeführt wird. Folgende Werte können verwendet werden:
Dateien in /etc/sysconfig/network-scripts/In der Regel enthält /etc/sysconfig/network-scripts die folgenden Dateien:
Es folgt eine Beschreibung der einzelnen Dateien. /etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdownEs handelt sich um symbolische Links auf /sbin/ifup bzw. /sbin/ifdown. In diesem Verzeichnis dürfen nur diese beiden Skripten direkt aufgerufen werden. Die anderen Skripten werden von diesen beiden Skripten nach Bedarf aufgerufen. Diese symbolischen Links sind aus historischen Gründen vorhanden - in zukünftigen Versionen werden sie wahrscheinlich entfallen. Verwenden Sie daher nur /sbin/ifup und /sbin/ifdown. Diesen Skripten wird in der Regel nur ein Argument übergeben: der Name des Geräts (z.B. " eth0"). Beim Booten werden sie mit einem zweiten Argument "boot" aufgerufen, damit Geräte, die nicht schon beim Booten eingerichtet werden sollen (ONBOOT=no, [siehe unten]), in dieser Phase ignoriert werden können. /etc/sysconfig/network-scripts/network-functionsDies ist eigentlich keine öffentliche Datei. Sie enthält Funktionen, die von den Skripten für das Einrichten und Entfernen von Schnittstellen verwendet werden. Sie enthält insbesondere den größten Teil des Codes für die Verwaltung alternativer Schnittstellenkonfigurationen und Schnittstellenänderungsmeldungen durch netreport. /etc/sysconfig/network-scripts/ifcfg-<Schnittstellenname>, /etc/sysconfig/network-scripts/ifcfg-<Schnittstellenname>-<Klonname>Die erste Datei definiert eine Schnittstelle, während die zweite Datei nur die Teile der Definition enthält, die bei einer "Klon-" (oder alternativen) Schnittstelle anders sind. Zum Beispiel können sich die Netzwerknummern unterscheiden, während alle anderen Definitionen gleich sind. In diesem Fall enthält die Klondatei nur die Netzwerknummern, während alle Geräteinformationen in der zugrundeliegenden ifcfg-Datei stehen. Die in der Datei ifcfg definierbaren Einträge hängen vom Schnittstellentyp ab. Die folgenden Werte sind in allen Basisdateien enthalten:
Die folgenden Werte sind in allen PPP- und SLIP-Dateien enthalten:
Die folgenden Werte sind in allen PPP-Dateien enthalten:
/etc/sysconfig/network-scripts/chat-<Schnittstellenname>Diese Datei ist ein Chat-Skript für PPP- und SLIP-Verbindungen und dient dem Aufbau der Verbindung. Bei SLIP-Geräten erzeugt das Chat-Skript ein DIP-Skript. Bei PPP-Geräten wird das Chat-Skript direkt verwendet. /etc/sysconfig/network-scripts/dip-<Schnittstellenname>Dieses Write-only-Skript wird von netcfg aus dem Chat-Skript erzeugt. Es darf nicht bearbeitet werden. Möglicherweise wird diese Datei später nicht mehr verwendet und vom Chat-Skript zum Zeitpunkt der Verwendung neu erzeugt. /etc/sysconfig/network-scripts/ifup-postDiese Datei wird aufgerufen, wenn ein Netzwerkgerät (mit Ausnahme eines SLIP-Geräts) eingerichtet wird. Sie ruft /etc/sysconfig/network-scripts/ifup-routes auf, um statische Routen einzurichten, die von diesem Gerät abhängig sind, und richtet Aliase für das Gerät ein. Wenn der Rechnername nicht bereits gesetzt wurde und für die IP-Adresse dieses Geräts ein Rechnername gefunden werden kann, wird der Rechnername gesetzt. An alle Programme, die die Meldung von Netzwerkereignissen angefordert haben, wird SIGIO gesendet. Diese Datei kann bei Bedarf erweitert werden, so daß noch die Nameservice-Konfiguration untergebracht werden kann, beliebige Skripten aufgerufen werden können usw. /etc/sysconfig/network-scripts/ifdhcpc-doneDiese Datei wird von dhcpcd aufgerufen, wenn die dhcp-Konfiguration komplett ist. Sie erstellt /etc/resolv.conf aus der Version, die von dhcpcd in /etc/dhcpc/resolv.conf abgelegt wurde. Systemstart mit SysV-InitIn diesem Abschnitt werden die internen Vorgänge beim Bootvorgang kurz beschrieben. Es wird im einzelnen dargestellt, wie der Computer mit SysV init bootet. Darüber hinaus werden die Unterschiede zwischen init in älteren Linux-Versionen und SysV init beschrieben. Init wird beim Booten vom Kernel ausgeführt. Es ist für das Starten aller normalen Prozesse verantwortlich, die beim Booten ausgeführt werden müssen: die getty-Prozesse zum Anmelden am System, NFS-Dämonen, FTP-Dämonen und alle weiteren Prozesse, die Sie beim Booten Ihres Computers ausführen möchten. SysV init setzt sich in der Linux-Welt immer mehr als Standard für die Steuerung des Startvorgangs durch. Der Grund: Es ist leichter bedienbar sowie leistungsfähiger und flexibler als das herkömmliche BSD-init. SysV init unterscheidet sich von BSD init auch darin, daß die Konfigurationsdateien in einem Unterverzeichnis von /etc liegen und nicht direkt in /etc. Dieses Verzeichnis heißt /etc/rc.d. Es enthält rc.sysinit und die folgenden Verzeichnisse:
init.d enthält eine ganze Reihe von Skripten. Grundsätzlich brauchen Sie ein Skript für jeden Dienst, den Sie beim Booten oder beim Wechsel in einen anderen Runlevel starten müssen. Zu den Diensten gehören Netzwerkdienste wie nfs, sendmail, httpd usw. Programme wie setserial, die nur einmal ausgeführt werden müssen und dann beendet werden, zählen nicht zu diesen Diensten. Solche Programme sollten in rc.local oder rc.serial abgelegt werden. Wenn Sie rc.local verwenden möchten, muß diese Datei in /etc/rc.d abgelegt werden. Obwohl die Datei rc.local kaum Aktionen auslöst, ist sie in den meisten Systemen enthalten. Wenn beim Booten des Systems der serielle Port bestimmte Aufgaben wahrnehmen muß, können Sie in /etc/rc.d auch die Konfigurationsdatei rc.serial ablegen. Folgende Ereignisse laufen nacheinander ab:
Der Standard-Runlevel wird in /etc/inittab festgelegt. Dort sollte in einer der ersten Zeilen etwa folgendes stehen:
Wie Sie sehen, ist in der zweiten Spalte der Standard-Runlevel auf 3 eingestellt. Sie können /etc/inittab von Hand bearbeiten und einen anderen Wert als 3 eintragen. Vorsicht bei Änderungen an inittab. Falls die Datei nicht mehr funktionsfähig ist, können Sie sie reparieren, indem Sie einen Neustart einleiten und folgendes eingeben:
Damit sollte es Ihnen gelingen, den Computer im Einzelbenutzermodus zu starten und in inittab wieder die vorherigen Werte einzutragen. Wie führt init nun die richtigen Skripten aus? Wenn Sie im Verzeichnis rc3.d ls -l eingeben, wird folgendes angezeigt:
Es fällt Ihnen sicher auf, daß es in diesem Verzeichnis keine "echten" Dateien gibt. Alle Einträge sind Verweise auf eines der Skripten im Verzeichnis init.d. Außerdem steht am Beginn der Verweisnamen ein "S" und danach eine Zahl. Das "S" bedeutet, daß dieses Skript gestartet werden soll. Ein "K" würde bedeuten, daß es gestoppt werden soll. Die Zahl im Dateinamen dient nur der Festlegung einer Reihenfolge. Init startet die Dienste entsprechend ihrer Reihenfolge. Sie können Zahlen mehrfach verwenden, was allerdings zu Verwechslungen führen kann. Eine aus zwei Ziffern bestehende Zahl in Verbindung mit einem großen "S" oder "K" reicht aus, um die von Ihnen benötigten Dienste zu starten oder zu stoppen. Wie startet und stoppt init Dienste? Ganz einfach: Die Skripten sind so geschrieben, daß ihnen ein Argument" start" bzw. "stop" übergeben werden kann. Sie können diese Skripten sogar mit einem Befehl wie den folgendem manuell ausführen:
Warum gibt es verschiedene Runlevels? Manche Systemadministratoren möchten Computer ohne großen Aufwand für verschiedene Zwecke nutzen. Ein "Server"-Runlevel könnte z.B. nur httpd, sendmail, Netzwerkunterstützung usw. ausführen. Weiterhin könnte ein "User"-Runlevel gdm, Netzwerkunterstützung usw. ausführen. Init-RunlevelsIm allgemeinen wird Red Hat Linux mit Runlevel 3 betrieben - dem uneingeschränkten Mehrbenutzermodus. Folgende Runlevels sind in Red Hat Linux definiert:
Booten Sie im Einzelbenutzermodus durch Eingabe von linux single am LILO Boot-Prompt, wenn Ihr Computer aufgrund einer beschädigten Datei /etc/inittab nicht booten kann oder wenn Sie sich nicht anmelden können, weil die Datei /etc/passwd beschädigt ist oder Sie Ihr Paßwort vergessen haben. Es wird ein sehr einfaches System gestartet, bei dem Ihnen eine Shell angeboten wird, mit der Sie Reparaturen durchführen können. Initscript-DienstprogrammeDas Dienstprogramm chkconfig ist ein einfaches Befehlszeilentool für die Pflege der /etc/rc.d -Verzeichnishierarchie. Es erspart den Systemadministratoren, die zahlreichen symbolischen Links in /etc/rc.d direkt bearbeiten zu müssen. Außerdem gibt es das Dienstprogramm ntsysv. Im Gegensatz zur befehlszeilenorientierten Oberfläche von chkconfig wird hier eine bildschirmorientierte Oberfläche verwendet. Weitere Informationen finden Sie in den man-Seiten zu chkconfig und ntsysv. Ausführen von Programmen beim SystemstartDie Datei /etc/rc.d/rc.local wird beim Systemstart ausgeführt, nachdem alle anderen Initialisierungen abgeschlossen sind, sowie bei jedem Wechsel des Runlevels. Dieser Datei können Sie zusätzliche Initialisierungsbefehle hinzufügen. Zum Beispiel könnten Sie zusätzliche Dämonen starten oder einen Drucker initialisieren. Wenn Sie zusätzlich einen seriellen Port einrichten müssen, können Sie die Datei /etc/rc.d/rc.serial bearbeiten. Beim Systemstart wird der Port dann automatisch eingerichtet. Die Standarddatei /etc/rc.d/rc.local erstellt nur eine einfache Meldung beim Booten, die Ihre Kernel-Version und den Computertyp ausgibt. HerunterfahrenUm Red Hat Linux herunterzufahren, geben Sie den Befehl shutdown ein. In der man-Seite zu shutdown finden Sie alle Einzelheiten. Die zwei am häufigsten verwendeten Befehlsvarianten sind:
Beide Varianten fahren das System ordnungsgemäß herunter. Bei Verwendung der Option -h wird das System nach dem Herunterfahren angehalten, bei Verwendung der Option -r wird das System nach dem Herunterfahren neu gestartet. Obwohl die Befehle reboot und halt mittlerweile so "intelligent" sind, daß diese shutdown aufrufen, wenn sie in den Runlevels 1-5 ausgeführt werden, sollten Sie sich diese beiden Befehle nicht angewöhnen, da nicht alle Linux-ähnlichen Betriebssysteme über dieses Leistungsmerkmal verfügen. |
|||||||||||||||||||
|
© 2001 Red Hat, Inc. All rights reserved. About Red Hat : Legal statement : Privacy statement : Y2K statement : Contact Red Hat |