In diesem Kapitel wird erläutert, wie Ihr OpenLinux eServer System gestartet und gestoppt wird und welche Vorgänge bei der Systeminitialisierung ablaufen. Wenn Sie über Grundlagenwissen zu diesen Themen verfügen, können Sie die entsprechenden Abläufe bei Ihrem System individuell konfigurieren und Probleme beheben.
Nachdem der Linux-Kernel durch LILO gestartet wurde, werden durch den Kernel die folgenden Schritte ausgeführt:
Eine detailliertere Erklärung von Schritt 6 erhalten Sie im nächsten Abschnitt mit der Bezeichnung Systeminitialisierung.
Im Verzeichnis /etc/rc.d befinden sich mehrere Unterverzeichnisse, und zwar eines für jeden Runlevel, rc0.d - rc6.d und init.d. Jedes dieser Unterverzeichnisse enthält zahlreiche symbolische Verknüpfungen mit den tatsächlichen Intialisierungsskripten, die im Master-Init-Verzeichnis, init.d,gespeichert werden. Alle Skripten beginnen mit einem S oder einem K, gefolgt von einer zweistelligen Zahl, und akzeptieren die Argumente start oder stop und mitunter auch reload oder restart. Jedes Skript steuert einen einzelnen Dämon oder Dienst im System. Dadurch ist es für den Systemadministrator problemlos möglich, Dämonen oder Dienste von der Befehlszeile aus zu starten, zu stoppen oder neu zu starten.
Wenn nicht direkt von der Befehlszeile aus Anweisungen übergeben werden, d.h. wenn das System gestartet, heruntergefahren oder in einen anderen Runlevel gebracht wird, steuert das Skript /etc/rc.d/rc in Abhängigkeit vom aktuellen und vorherigen Runlevel, welche Dämonen und Dienste auf welche Weise ausgeführt werden müssen. Angenommen, Sie booten in Runlevel 3. Das Skript rc führt alle Skripten im Verzeichnis /etc/rc3.d aus. Zuerst werden die Skripten ausgeführt, die mit dem Buchstaben K beginnen (in aufsteigender Reihenfolge), wodurch alle Prozesse gestoppt werden, die in Runlevel 3 nicht ausgeführt werden sollen. Dann startet das Skript rc alle Skripten, die mit einem S beginnen (und auch das wiederum in aufsteigender Reihenfolge).
Wenn das System heruntergefahren wird, wechselt es entweder bei einem Neustart in Runlevel 6 oder beim Anhalten des Systems in Runlevel 0. Auch hier müssen alle Dienste in der richtigen Reihenfolge heruntergefahren werden. Zu diesem Zweck werden wiederum die Skripten mit K am Anfang in aufsteigender Reihenfolge ausgeführt, gefolgt von den Skripten mit S am Anfang, die in diesem Fall die Skripten zum Neustarten oder Anhalten des Systems "starten".
Wenn Sie neue Prozesse hinzufügen möchten, die beim Booten oder Anhalten des Systems gestartet bzw. beendet werden sollen, stehen Ihnen zwei Optionen zur Verfügung. Die einfachste Methode besteht darin, den zu startenden Prozess in die Datei /etc/rc.d/rc.local einzufügen. Er wird dann automatisch beendet, wenn das System angehalten oder neu gestartet wird.
Alternativ können Sie auch ein Skript in /etc/rc.d/init.d erstellen, mit dessen Hilfe der entsprechende Prozess gestartet oder gestoppt wird. Glücklicherweise müssen Sie das Skript nicht von Grund auf neu schreiben. Statt dessen können Sie die Vorlage mit der Bezeichnung /etc/rc.d/init.d/skeleton verwenden, in der Sie das Wort daemon in der Zeile
durch die Bezeichnung des gewünschten Programms ersetzen müssen. Als nächstes müssen Sie festlegen, zu welchem Zeitpunkt das Programm beim Booten oder Herunterfahren des Systems gestartet und gestoppt werden muss. Erstellen Sie schließlich noch in den entsprechenden Unterverzeichnissen in rcX.d in /etc/rc.d eine symbolische Verknüpfung, die mit einem K oder einem S beginnt, gefolgt von einer zweistelligen Zahl, die noch nicht verwendet wird und festlegt, zu welchem Zeitpunkt das Skript in /etc/rc.d/init.d ausgeführt wird.
In diesem Abschnitt wird beschrieben, wie Sie Webmin für das Steuern der Systeminitialisierung verwenden können und wie Webmin gestartet wird.
Um Webmin aufzurufen, starten Sie den Netscape-Browser durch Klicken auf dessen Symbol in der Kontrolleiste (siehe Abbildung 22) oder über das
KMenü->Internet->Communicator. Um die Verbindung mit dem Webmin-Server herzustellen, geben Sie localhost:1000 in das Textfeld Location des Browsers ein und drücken dann die Eingabetaste. Daraufhin wird der Anmeldebildschirm von Webmin angezeigt (siehe Abbildung See Das Symbol für Netscape in der Kontrolleiste von KDE.). Geben Sie den Benutzernamen und das Kennwort ein, das Sie gegen Ende von Kapitel 2 festgelegt haben, und klicken Sie auf OK. Dadurch wird der Hauptbildschirm von Webmin angezeigt, der in Abbildung See Der Hauptbildschirm von Webmin. dargestellt wird.
Um mit Hilfe der Benutzeroberfläche von Webmin die Einstellungen zur Systeminitialisierung zu ändern, klicken Sie auf das Symbol Bootup and Shutdown Actions (siehe Abbildung See Das Symbol Bootup and Shutdown Actions in Webmin.). Abbildung See Das Modul Bootup and Shutdown. zeigt den anschließend angezeigten Bildschirm.
In diesem Fenster werden im Wesentlichen alle aktuell definierten Initialisierungsskripten (die Skripten befinden sich in /etc/rc.d/init.d) und das spezielle Skript /etc/rc.d/rc.local angezeigt. Um eines der Skripten zu bearbeiten, klicken Sie auf dessen Namen. Angenommen, Sie möchten verhindern, dass der Maustreiber für die Konsole, gpm, beim Booten in Runlevel 5 geladen wird. Klicken Sie hierzu auf die Verknüpfung gpm, worauf der in Abbildung See Der Konfigurationsbildschirm für gpm. dargestellte Bildschirm angezeigt wird.
In der oberen Hälfte des Bildschirms wird das tatsächliche Initialisierungsskript angezeigt, das Sie hier direkt bearbeiten können. In der unteren Bildschirmhälfte können Sie hingegen festlegen, in welchen Runlevels gpm gestartet und gestoppt wird. Wie Sie erkennen können, ist gpm momentan so konfiguriert, dass der Konsolenmaustreiber in den Runlevels 3, 4 und 5 gestartet und in den Runlevels 0, 1, 2 und 6 gestoppt wird. Die Zahlen 75 und 25 legen fest, in welcher Reihenfolge der Dämon jeweils gestartet bzw. gestoppt wird. So wird gpm in Runlevel 5 deaktiviert:
Nachdem Sie auf Save geklickt haben, kehren Sie zum Bildschirm Bootup and Shutdown Actions von vorhin zurück. Um zu überprüfen, ob gpm jetzt in Runlevel 5 nicht mehr gestartet wird, klicken Sie auf die Verknüpfung gpm. Sie werden daraufhin feststellen, dass Ihre Änderungen gespeichert wurden.
Mit Hilfe des Hauptbildschirms von Bootup and Shutdown Actions können Sie auch neue Aktionen für das Booten und Herunterfahren des Systems festlegen. Gehen Sie hierzu wie folgt vor:
Ein Beispiel für das Erstellen eines neuen Initialisierungsskripts wird in Abbildung See Erstellen eines neuen Initialisierungsskripts. dargestellt.
Um ein Skript zum Starten oder Beenden von Dämonen oder Diensten zu löschen, klicken Sie zuerst auf die Verknüpfung für dieses Skript im Hauptfenster Bootup and Shutdown und dann auf die Schaltfläche Delete unten rechts im Bildschirm.
In diesem Abschnitt erhalten Sie grundlegende Informationen über die Konfiguration und Verwendung von LILO. Dadurch erwerben Sie das nötige Vorwissen für den nächsten Abschnitt, in dem die Vorgehensweise zum Booten mehrerer Kernel erläutert wird. Das Modul von Webmin für das Bearbeiten von LILO und der Datei /etc/lilo.conf (durch die das Verhalten von LILO festgelegt wird) wird durch Klicken auf das Symbol Linux Bootup Configuration aufgerufen (siehe Abbildung See Das Symbol Linux Bootup Configuration.). Dadurch wird der Bildschirm in Abbildung See Das Modul Linux Bootup Configuration. mit der Bezeichnung Linux Bootup Configuration angezeigt.
Über diesen Bildschirm können Sie mehrere Aktivitäten vornehmen:
Um die Bootoptionen des aktuellen Kernels zu ändern, klicken Sie auf eines der Symbole in der oberen Bildschirmhälfte. In Abbildung See Der Bildschirm Edit Boot Kernel. wurde beispielsweise das Symbol mit der Bezeichnung linux gewählt. Abbildung See Der Bildschirm LILO Global Options von Webmin. zeigt den Bildschirm, der daraufhin erscheint. Tabelle See Beschreibung der Felder in der Maske Boot Options. beschreibt die einzelnen Felder.
Nachdem Sie diese Optionen geändert haben, klicken Sie auf die Schaltfläche Save, um Ihre Änderungen zu speichern. Klicken Sie dann auf die Schaltfläche Apply Configuration, damit Ihre Änderungen übernommen werden. Wenn Sie Ihre Änderungen hingegen wieder rückgängig machen möchten, klicken Sie auf die Verknüpfung Return to kernels and partitions.
Ihr OpenLinux eServer System kann für die Verwendung mehrerer Kernel konfiguriert werden. Diese Funktion bietet sich an, wenn Sie spezielle Hardwarekonfigurationen unterstützen oder bestimmte Dienste zur Verfügung stellen möchten oder einen neu kompilierten Kernel testen wollen. Vor allem beim Testen eines neuen Kernels ist es besonders wichtig, mehrere Kernel booten zu können, da der neue Kernel möglicherweise nicht stabil ist oder nicht über alle gewünschten Funktionen verfügt. Beachten Sie bitte, dass Sie vor dem Erstellen eines neuen Kernels den alten Kernel sichern müssen und auch ein Eintrag für den alten Kernel in Ihrer Bootkonfigurationsdatei, /etc/lilo.conf, erhalten bleiben sollte. Die für das Neukompilieren des Kernels erforderlichen Schritte werden in Kapitel 4, Verwalten des Kernels, näher erläutert.
Um von mehreren Kerneln booten zu können (nur ein Kernel kann jeweils gleichzeitig geladen und ausgeführt werden), benötigt OpenLinux eServer Informationen zum Speicherort und zu den Ladeoptionen für jeden Kernel. LILO (LInux LOader) übergibt diese Informationen über den auszuführenden Kernel an den Computer. Webmin erleichtert das Konfigurieren Ihres Systems zum Booten mehrerer Kernel ganz beträchtlich. Klicken Sie zuerst auf die Verknüpfung Create a new boot kernel. Der daraufhin angezeigte Bildschirm sieht ähnlich wie in Abbildung See Der Bildschirm Edit Boot Kernel. aus, allerdings müssen Sie noch alle Felder ausfüllen. Klicken Sie auf die Schaltfläche Save, wenn Sie mit dem Ausfüllen fertig sind. Nachdem Sie wieder in den Bildschirm Linux Bootup Configuration zurückgekehrt sind, klicken Sie auf die Schaltfläche Apply Configuration, um Ihre Änderungen zu aktivieren.
Um einen Bootkernel zu löschen, wählen Sie dessen Symbol aus und klicken dann auf die Schaltfläche Delete, die sich in der unteren rechten Ecke des Bildschirms Edit Boot Kernel befindet.
Im ersten Abschnitt der Konfigurationsdatei zu LILO, /etc/lilo.conf, wird eine Reihe von Optionen für alle Kernel und das allgemeine Verhalten von LILO festgelegt. Wenn Sie diese Optionen anzeigen, erweitern oder ändern möchten, klicken Sie auf die Schaltfläche Edit Global Options. Der entsprechende Bildschirm wird in Abbildung See Der Bildschirm LILO Global Options von Webmin. dargestellt.
In Abbildung See Der Bildschirm LILO Global Options von Webmin. hat Webmin die bereits in der Datei /etc/lilo.conf vorhandenen globalen Optionen eingelesen. Die wichtigsten Optionen werden in Tabelle See Globale Optionen in LILO. behandelt.
Die weiteren Felder wurden in Tabelle 5 aufgelistet und erläutert. Nachdem Sie die gewünschten Änderungen vorgenommen haben, können Sie diese durch Klicken auf die Schaltfläche Save speichern. Klicken Sie dann wie im vorigen Abschnitt auf die Schaltfläche Apply Configuration, um Ihre Änderungen zu aktivieren.
Im vorherigen Abschnitt wurde erläutert, wie Webmin für das Konfigurieren von LILO verwendet wird. In diesem Abschnitt wird nun am Beispiel einer konkreten LILO-Konfigurationsdatei erklärt, wie diese Datei aufgebaut ist und was sie im System bewirkt. In der folgenden Auflistung sehen Sie zunächst den Inhalt der vollständigen Datei. Danach wird die Datei Zeile für Zeile detailliert untersucht, und die Verwendung der einzelnen Befehle und Optionen wird erläutert. Zeilen, die mit dem Gatterzeichen # beginnen, enthalten Kommentare, die von LILO ignoriert werden.
# Beispiel für eine LILO Konfigurationsdatei
append = "debug=2 noapic nosmp"
Das Schlüsselwort boot gibt das Laufwerk an, von dem der Computer bootet. Das Schlüsselwort install übergibt an den Computer Informationen zur Geometrie des Bootlaufwerks und zum genauen Speicherort des Kernels auf der Festplatte.
In diesem Abschnitt der Konfigurationsdatei werden die Optionen für das Booten aufgelistet. Der Eintrag prompt gibt beispielsweise an, dass ein Bootprompt angezeigt werden soll. Die Option delay weist den Computer an, den angegebenen Zeitraum (in Zehntelsekunden) zu warten, bevor der standardmäßige Kernel gebootet wird. Das Schlüsselwort default enthält den Namen des Kernels, der geladen werden soll, falls vor dem Ablaufen der voreingestellten Zeitspanne am Bootprompt keine alternative Kennung eingegeben wird. Die Option timeout übergibt dem Computer die Information, wie lang dieser warten soll, bevor die weiteren Standardeinstellungen für das Booten verwendet werden. Die Angaben unter message enthalten den Speicherort von Meldungen, die Sie den Benutzern anzeigen möchten.
append = "debug=2 noapic nosmp"
Dabei handelt es sich um den ersten Abschnitt, der in englischen Fachtexten häufig auch als Stanza bezeichnet wird und Anweisungen für das Laden eines speziellen Kernels enthält. Das Schlüsselwort image gibt an, welches Kernel-Image geladen werden soll, wie der Name dieses Images lautet und wo dieser in Bezug auf die Rootpartition gespeichert ist, in der Linux installiert ist. label ist ein Name oder Alias für das angegebene Kernel-Image. Bei dieser Kennung ("label") handelt es sich um den Begriff, den der Benutzer am Bootprompt eingeben muss. root wiederum legt fest, welche Partition auf dem Bootlaufwerk die Rootpartition enthält.
Die Einträge unterhalb dem Schlüsselwort root in jedem Stanza enthalten zusätzliche Parameter, die Sie an den Kernel vor dem Booten übergeben möchten. vga bezieht sich auf den Grafikmodus, in dem das Betriebssystem gestartet wird. Bei der Einstellung 274 in unserem Beispiel handelt es sich um den speziellen LIZARD Bootmodus. Das Schlüsselwort read-only weist den Kernel an, die Rootpartition beim Booten im Lesemodus zu mounten. Der Prozess init mountet das Rootdateisystem dann nach dem Booten des Kernels neu und ermöglicht dadurch auch Schreibzugriffe. Bei der Option in der Zeile append handelt es sich um eine von doppelten Anführungszeichen umschlossene Zeichenkette mit zusätzlichen Parametern, die beim Booten an den Kernel übergeben werden müssen. Diese Parameter unterstützen den Kernel beim Erkennen von Hardware und vermeiden dadurch beispielsweise Probleme, die durch das fehlerhafte Erkennen der tatsächlichen Hardwarekonfiguration entstehen könnten. Außerdem legen diese Parameter fest, welche Module geladen oder nicht geladen werden sollen u.ä.
Dieses Stanza enthält Anweisungen für das Laden von anderen Betriebssystemen als Linux, was durch das Schlüsselwort other bereits angedeutet wird. In diesem Beispiel verweist diese Zeile auf die zweite primäre Partition auf der ersten IDE-Festplatte. Für die Kennung ("label") können Sie einen beliebigen Begriff festlegen. Es empfiehlt sich jedoch, einen Begriff auszuwählen, aus dem klar hervorgeht, welches Betriebssystem durch das Stanza geladen werden soll.
Alle Änderungen an der Datei /etc/lilo.conf müssen in den Master Boot Record (falls Sie nur LILO verwenden) oder in den Bootsektor Ihrer Linux-Partition geschrieben werden, falls Sie einen Bootloader eines anderen Anbieters wie System Commander oder BootMagic verwenden. Um die Änderungen zu aktivieren, führen Sie den Befehl /sbin/lilo -v aus. LILO zeigt dann die hinzugefügten neuen Kernel an.