Runlevel: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
Die Konfiguration der Runlevel findet sich üblicherweise in der Datei "/etc/inittab". | Die Konfiguration der Runlevel findet sich üblicherweise in der Datei "/etc/inittab". | ||
Anzeige des aktuellen Runlevel. | |||
# <b>runlevel</b> | |||
N 5 | |||
# <b>who -r</b> | |||
Runlevel 5 2015-01-30 08:22 last=S | |||
== Bedeutung == | == Bedeutung == | ||
Zeile 37: | Zeile 44: | ||
|} | |} | ||
Ein Runlevelskript kümmert sich darum, dass vor dem Start eines bestimmten Dienstes alle Bedingungen erfüllt sind, z. B. wird zuerst überprüft ob das Programm überhaupt installiert ist oder ob bestimmte Konfigurations- und | Ein Runlevelskript kümmert sich darum, dass vor dem Start eines bestimmten Dienstes alle Bedingungen erfüllt sind, z. B. wird zuerst überprüft ob das Programm überhaupt installiert ist oder ob bestimmte Konfigurations- und Protokolldateien vorhanden sind. | ||
Als Vorlage eines Runlevelskripts kann ein beliebiges anderes Skript aus dem Verzeichnis "/etc/init.d" dienen. | Als Vorlage eines Runlevelskripts kann ein beliebiges anderes Skript aus dem Verzeichnis "/etc/init.d" dienen. | ||
Zeile 47: | Zeile 54: | ||
* 1, wenn ein schwerer Fehler aufgetreten ist. | * 1, wenn ein schwerer Fehler aufgetreten ist. | ||
Der Eintrag "initdefault" in der Datei "etc/inittab" (die Konfigurationsdatei von "/sbin/init") bestimmt, in welchem Runlevel das Betriebssystem bootet. | Der Eintrag "initdefault" in der Datei "/etc/inittab" (die Konfigurationsdatei von "/sbin/init") bestimmt, in welchem Runlevel das Betriebssystem bootet. | ||
Beispielsweise steht die folgende Zeile für ein System mit Text-Login: | Beispielsweise steht die folgende Zeile für ein System mit Text-Login: | ||
Zeile 70: | Zeile 77: | ||
* Red Hat: "kudzu" | * Red Hat: "kudzu" | ||
* SUSE Linux: "hwscan" | * SUSE Linux: "hwscan" | ||
== FAQ == | |||
=== Temporäre Änderung des Runlevel === | |||
Wechsel in Runlevel 3. Beim nächsten Rechnerneustart wird wieder im Standard-Runlevel gestartet. | |||
# <b>init 3</b> | |||
=== Dauerhafte Änderung des Runlevel === | |||
Einstellung von Runlevel 3 als Standard-Runlevel. Beim nächsten Rechnerneustart wird also in diesen Runlevel gestartet. | |||
# <b>vi /etc/inittab</b> | |||
id:3:initdefault: | |||
Anstatt den Rechner jetzt tatsächlich neu zu starten kann mit folgendem Befehl direkt in den Runlevel 3 gewechselt werden. | |||
# <b>init 3</b> | |||
== Weblinks == | == Weblinks == | ||
{{ | {{Weblinks}} | ||
{{url_dewikipedia|Runlevel|Runlevel}} | |||
{{Fuss}} | |||
* https://www.suse.com/de-de/documentation/sles11/singlehtml/book_sle_admin/cha.boot.html | |||
{{cat|Bootvorgang}} | {{cat|Bootvorgang}} | ||
{{cat|Runlevel}} | {{cat|Runlevel}} |
Aktuelle Version vom 30. Januar 2015, 14:45 Uhr
Als Runlevel werden die abgestuften Systemzustände bezeichnet, welche viele Betriebssysteme von Rechnern beim Bootvorgang durchlaufen. Jedem Runlevel sind bestimmte Systemdienste zugeordnet, die beim Bootvorgang als Prozesse in bestimmter Reihenfolge innerhalb des Betriebssystems gestartet werden. So werden Systemressourcen des Rechners stufenweise in Betrieb genommen. Bei Beendigung des Betriebssystems (Shutdown) werden die Runlevel in umgekehrter Reihenfolge durchlaufen, die laufenden Prozesse werden stufenweise beendet, bis der Rechner ausgeschaltet werden kann. Daneben kann auch direkter Wechsel von einem Runlevel in einen anderen erfolgen.
Runlevel sind hauptsächlich aus den unterschiedlichen Unix-Systemen wie Linux oder Solaris bekannt. Im Gegensatz zu den eher an Unix System V orientierten Systemen kennen die von BSD abgeleiteten nur zwei Runlevel: single-user und multi-user. Doch auch in Windows entsprechen die Startoptionen "Abgesicherter Modus", "Abgesicherter Modus mit Netzwerk" oder "Windows normal Starten im Windows-Bootmenü" jeweils genau einem Runlevel.
Die Idee der unterschiedlichen Runlevel ist es, abgestufte Sicherheitsstufen bereitzustellen, in denen nur bestimmte Systemprozesse aktiv sind. Dies ist wichtig, wenn etwa ein System von Computerviren befallen ist und ohne Netzwerk-Anbindung laufen soll.
Konfiguration
Die Konfiguration der Runlevel findet sich üblicherweise in der Datei "/etc/inittab".
Anzeige des aktuellen Runlevel.
# runlevel N 5 # who -r Runlevel 5 2015-01-30 08:22 last=S
Bedeutung
Der Linux Standard Base / LSB legt die Bedeutung der Runlevel fest.
- Runlevel 0 dient dem Anhalten des Systems
- Runlevel 1, der Single User Mode, dient der Systemwartung: Hier kann sich nur der Benutezr "root" an einer einzigen Konsole anmelden und es laufen keine Dienste im Hintergrund.
- Runlevel 2 erlaubt nur einen sehr eingeschränkten Netzwerkbetrieb - kein (x)inetd, kein NFS- und SMB-Client oder -Server.
- Die Runlevel 3 und 5 stehen bei den meisten Distributionen für "normalen" Betrieb mit Text- bzw. grafischem Login.
- Runlevel 4 wird nicht verwendet.
- Runlevel 6 dient dem Neustart des Systems
Runlevel | Linux Standard Base / LSB | Debian | Mandrake | Red Hat | SUSE Linux |
---|---|---|---|---|---|
0 | Halt | Halt | Halt | Halt | Halt |
Single User Mode | Single User Mode | Single User Mode | Single User Mode | Single User Mode | |
2 | Multiuser ohne exportierte Netzwerkdienste | Multiuser | Multiuser ohne Netzlaufwerke und Netzwerk-Server | Multiuser ohne Netzlaufwerke und Netzwerk-Server | Multiuser ohne Netzlaufwerke und Netzwerk-Server |
3 | normaler/voller Multiuser-Betrieb | Multiuser | Multiuser mit vollem Netzwerk | Multiuser mit vollem Netzwerk | Multiuser mit vollem Netzwerk |
4 | reserviert; Standard: wie 3 | Multiuser | wie Runlevel 3 | wie Runlevel 3 | -- |
5 | Multiuser mit xdm oder entsprechendem Display Manager | Multiuser | Multiuser mit vollem Netzwerk und grafischem Login | Multiuser mit vollem Netzwerk und grafischem Login | Multiuser mit vollem Netzwerk und grafischem Login |
6 | Reboot | Reboot | Reboot | Reboot | Reboot |
Ein Runlevelskript kümmert sich darum, dass vor dem Start eines bestimmten Dienstes alle Bedingungen erfüllt sind, z. B. wird zuerst überprüft ob das Programm überhaupt installiert ist oder ob bestimmte Konfigurations- und Protokolldateien vorhanden sind.
Als Vorlage eines Runlevelskripts kann ein beliebiges anderes Skript aus dem Verzeichnis "/etc/init.d" dienen.
Der Befehl "/sbin/runlevel" gibt Auskunft über den aktuellen und den vorangegangenen Runlevel. "N" steht dabei für "kein vorheriger Runlevel".
Beim Bootvorgang fährt das Betriebssystem automatisch in einen dieser Runlevel:
- 5 oder 3 im Normalbetrieb.
- 1, wenn ein schwerer Fehler aufgetreten ist.
Der Eintrag "initdefault" in der Datei "/etc/inittab" (die Konfigurationsdatei von "/sbin/init") bestimmt, in welchem Runlevel das Betriebssystem bootet. Beispielsweise steht die folgende Zeile für ein System mit Text-Login:
id:3:initdefault
Für jeden Runlevel gibt es ein eigenes Verzeichnis ("/etc/init.d/rcn.d" bzw. "/etc/rc.d/rcn.d", je nach Distribution), das Links auf die Init-Dateien im Verzeichnis "/etc/init.d" enthält. Ob ein Init-Skript in ein Runlevel-Verzeichnis verlinkt ist, bestimmt darüber, ob dieses Skript in diesem Runlevel ausgeführt wird, und damit, ob der durch das Skript gestartete Dienst in diesem Runlevel verfügbar ist oder nicht.
In den "rcn.d"-Verzeichnissen finden sich zwei Arten von Links:
- Start-Skripte ("Snn...), die beim Wechsel in den jeweiligen Runlevel ausgeführt werden.
- Stop-Skripte ("Knn...), die beim Verlassen des jeweiligen Runlevels ausgeführt werden.
Die zweistellige Nummer hinter dem "S" oder "K" gibt die Reihenfolge an, in der das Betriebssystem die Skripte abarbeitet - von "00" bis "99". So lassen sich Abhängigkeiten bestimmen: Netzwerkdienste wie ein Mailserver oder das Einbinden von Netzlaufwerken via SMB oder NFS funktionieren natürlich erst, wenn das Netzwerk eingerichtet ist. Entsprechend müssen die "höheren" Dienste beim Verlasen des Runlevels auch vor den Grunddiensten beendet werden.
Zuständig für das Starten der Init-Skripte ist das Skript "/etc/init.d/rc", das "/sbin/init" mit dem gewünschten Runlevel als Argument aufruft. Die Datei "/etc/inittab" enthält dazu für jeden Runlevel eine Zeile wie die folgende:
l5:5:wait:/etc/init.d/rc5
Beim Erreichen des Runlevels 5 führt "/sbin/init" das Skript "/etc/init.d/rc" mit dem Argument "5" aus und wartet ("wait"), bis es durchgelaufen ist. Das Skript "rc" wiederum startet einfach alle Startskripte im Runlevel-Verzeichnis des übergebenen Runlevels ("/etc/init.d/rcn.d" bzw. "/etc/rc.d/rcn.d") mit der Option "start". Falls das Betriebssystem nicht gerade frisch bootet, sondern bloss den Runlevel wechselt, so ruft "rc" zuvor die Stoppskripte im Runlevel-Verzeichnis des übergebenen Runlevels mit der Option "stop" auf.
Die kommerziellen Distributionen starten während des Bootvorgangs einen recht langwierigen Test auf neue Hardware. Wird nicht ständig am Rechner herumgescharubt, kann das entsprechende Init-Skript aus seinem Standard-Runlevel entfernt und bei Bedarf von Hand aufgerufen werden.
- Mandrake: "harddrake"
- Red Hat: "kudzu"
- SUSE Linux: "hwscan"
FAQ
Temporäre Änderung des Runlevel
Wechsel in Runlevel 3. Beim nächsten Rechnerneustart wird wieder im Standard-Runlevel gestartet.
# init 3
Dauerhafte Änderung des Runlevel
Einstellung von Runlevel 3 als Standard-Runlevel. Beim nächsten Rechnerneustart wird also in diesen Runlevel gestartet.
# vi /etc/inittab id:3:initdefault:
Anstatt den Rechner jetzt tatsächlich neu zu starten kann mit folgendem Befehl direkt in den Runlevel 3 gewechselt werden.
# init 3
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Runlevelwbm | Enzyklopädischer Artikel |