LPIC101/101.3 Runlevel wechseln und das System anhalten oder neu starten

Aus Foxwiki

Übersicht

Die Bezeichnung „Runlevel“ kann mit dem Begriff „Betriebszustand“ übersetzt werden, wird jedoch als feststehender Begriff auch im Deutschen als „Runlevel“ bezeichnet, und zwar in der Form „Runlevel N“, wobei N durch den betreffenden Runlevel ersetzt wird.

Jeder Runlevel definiert einen anderen Zustand, in dem sich ein System befindet.
Es gibt unter Linux insgesamt acht Runlevels, von denen unter Arch zwei Runlevel allerdings nicht benutzt werden.

Bei einem Systemstart durchläuft das System alle Runlevel außer Runlevel 0. Der Start wird vom System als beendet angesehen, wenn der als Standard-Runlevel definierte Runlevel erreicht ist.

Run Levels

- Runlevel 0 ist System Halt - Runlevel 1 ist Single user mode (genau so runlevel S) - Runlevel 2 ist Local multiuser ohne remote netzwerk - Runlevel 3 ist Full multiuser mit Netzwerk. - Runlevel 4 ist nicht benutzt. - Runlevel 5 ist voll multiuser mit Netzwerk und xdm - Runlevel 6 ist System neustart. - Runlevel S ist Single user mode (genauso wie Runlevel 1)


Runlevel 0 In diesem Runlevel befindet sich der Computer nur sehr kurz, und zwar dann, wenn er heruntergefahren wird. Daher wird Runlevel 0 auch als „Shutdown“ bezeichnet.
Es werden alle Netzwerk-Verbindungen getrennt, dann werden die Dateipuffer geschrieben, die Dateisysteme ausgehängt und das System ausgeschaltet.

Runlevel 1 (S) Dies ist ein Wartungsmodus. Im Runlevel S stehen nur lokale Ressourcen zur Verfügung. Und zwar sehr eingeschränkt.
Es werden nur für den Betrieb absolut notwendige Dienste gestartet, und es stehen neben Ein- und Ausgabegeräten und Festplatten keine weiteren Geräte zur Verfügung.
Dieser Runlevel wird für gewöhnlich nur dazu verwendet, Dateisystem-Tests durchzuführen, wenn das System nicht mehr normal starten kann.
Runlevel 1 und Runlevel S sind für gewöhnlich identisch.

Runlevel 2 Dieser Runlevel definiert als erster Runlevel in der Reihenfolge einen Mehrbenutzer-Betrieb. Dieser ist allerdings nur auf den Rechner beschränkt. Die Netzwerkunterstützung ist nicht verfügbar. Unter Arch wird dieser Runlevel nicht verwendet.

Runlevel 3 Im Runlevel 3 sind alle lokalen Ressourcen verfügbar, und es bestehen Mehrbenutzer- sowie Netzwerkunterstützung. Dies ist der übliche Runlevel für Systeme ohne grafische Benutzerschnittstelle und nach einer Arch-Grundinstallation der Standard-Runlevel.

Runlevel 4 Dieser Runlevel ist nicht weiter definiert, kann aber dennoch verwendet werden.

Runlevel 5 Dieser Runlevel entspricht weitestgehend Runlevel 3, allerdings wird unter Runlevel 5 zusätzlich noch eine grafische Benutzerschnittstelle bereitgestellt.

Runlevel 6 Im Runlevel 6 befindet der Computer sich, wenn er neu gestartet wird. Auch hier werden alle Daemons beendet, die Dateisysteme ausgehängt und alle Netzwerkverbindungen getrennt. Danach wird das System neu gestartet. Dieser Runlevel wird auch als „Reboot“ bezeichnet.

Wichtigste Dateien, Verzeichnisse und Anwendungen

  • /etc/inittab (in neueren Distributionen mit systemd gibt es diese Datei nicht mehr)
  • shutdown
  • init
  • /etc/init.d
  • telinit
  • systemd (Systemd ist abwärtskompatibel und kann auch weiterhin die alten Init-Skripte ausführen.)
  • systemctl
  • /etc/systemd/
  • /usr/lib/systemd/
  • wall

Wichtigste Befehle

Aktuellen Runlevel ausgeben:

who -r

Aktuellen Runlevel wechseln (n: ist die Nummber des Runlevels):

# telinit n

oder:

# init n

Konfiguration

Was das System in einem bestimmten Runlevel machen soll, wird in der Datei „/etc/inittab“ definiert. Die Definitionen folgen dabei immer einem bestimmten Schema.

id:runlevels:action:process
  • Die ID direkt am Anfang einer jeden Definitionszeile ist eine bis zu vier stellen lange, eindeutige Zeichenfolge, die diese Zeile eindeutig vom System erkennbar macht.
  • Das zweite Feld definiert, für welchen Runlevel die Definition gilt.

Es können mehrere Runlevel angegeben werden. Diese werden ohne Trennzeichen direkt aneinandergereiht: z. B. „S245“, um diese Definition für die Runlevels S, 2, 4 und 5 einzustellen.

  • Die dritte Stelle in der Definition bestimmt, wie/wann der am Ende der Zeile definierte Prozess gestartet werden soll.

Einige mögliche Werte sind zum Beispiel:
respawn: Der Prozess wird jedes mal neu gestartet, wenn er beendet wird.
wait: Der Prozess startet, wenn der definierte Runlevel betreten wird, der Bootvorgang bleibt so lange stehen, bis der definierte Prozess beendet wird.
once: Der Prozess wird einmalig bei betreten des Runlevels ausgeführt.
initdefault: Diese Angabe bestimmt, welcher Runlevel (eben jener, der in einer mit „initdefault“ konfigurierten Zeile definiert wurde) nach dem Systemstart benutzt werden soll. Das Prozess-Feld wird dabei ignoriert.

Erläuterung

Standardmäßig wird nach einer Grundinstallation von Arch in den Runlevel 3 gebootet, dies wird mittels der nachsten Zeile definiert:

id:3:initdefault:

„initdefault“ bestimmt hier den Standard-Runlevel.

Das Prozess-Feld ist leer gelassen, da diese Angabe sowieso ignoriert wird, will man nach dem Booten nicht in Runlevel 3 sein, sondern auch eine grafische Benutzerschnittstelle verwenden, so ersetzt man die 3 durch eine 5:

id:5:initdefault:

Nun wird automatisch nach dem Start des Systems in Runlevel 5 gewechselt. Dieser muss allerdings noch definiert werden, sonst passiert vermutlich gar nichts. Man kann hier beispielsweise XDM starten lassen, sofern man dieses als Login-Manager benutzt:

x:5:respawn:/usr/bin/xdm -nodaemon

Wenn XDM nun beendet wird, wird es automatisch neu gestartet.
Wenn man dies nicht will, kann man auch „once“ als Action definieren, wenn XDM nun beendet wird, landet man auf der Befehlszeile.
Die Login-Shells, die man unter Alt+F1 bis Alt+F6 erreicht, werden ebenfalls über solche Definitionen gestartet:

c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux

Die ID ist hier „c1“, und beim betreten der Runlevels 2, 3, 4 und 5 wird das Programm „/sbin/agetty“ ausgeführt, wobei die Parameter „-8“, „38400“, „tty1“ und „linux“ benutzt werden.
Was genau die Parameter bewirken, kann in der Manpage zu „agetty“ nachgelesen werden.
Standardmäßig werden unter Arch sechs TTYs erstellt. Aus Performancegründen kann man dies aber ändern, wenn man sowieso hauptsächlich mit einer grafischen Oberfläche arbeitet, oder der Rechner hauptsächlich als Server im Einsatz ist, auf den nur per SSH zugegriffen wird. Dazu löscht man die weiteren Definitionen einfach. Für den Notfall sollte man allerdings mindestens ein TTY definiert lassen.

Beispiel

Nach dem selben System sind die weiteren Standard-Angaben unter Arch aufgebaut. Eine vollständige, aber unkommentierte und bereits angepasste „/etc/inittab“ für Arch ist zum Beispiel diese hier:

id:5:initdefault:
rc::sysinit:/etc/rc.sysinit
rs:S1:wait:/etc/rc.single
rm:2345:wait:/etc/rc.multi
rh:06:wait:/etc/rc.shutdown
su:S:wait:/sbin/sulogin -p
c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
x:5:once:/bin/su benutzer -l -c "/bin/bash -l -c startx"

Der Standard-Runlevel ist Runlevel 5. Wenn in diesen Runlevel gestartet wurde, wird durch die am Ende der Datei befindliche Definition X mit den Rechten und der Umgebung des Anwenders „benutzer“ gestartet wird. Zudem wird auch nur ein TTY definiert. Die weiteren Angaben sind Standard-Angaben und sollten nur geändert werden, wenn man sich über die Konsequenzen bewusst ist.