silvesterlangen.de

Seite
Menü

SystemV

SystemV - Die Runlevels

Anders als Windows startet Linux nicht in einem Rutsch durch. Der Bootvorgang in Linux durchläuft verschiedene Runlevels bis letztendlich der Runlevel erreicht ist wo das gesamte System vollständig läuft. Die verschiedenen Distributionen verwenden die Runlevels etwas unterschiedlich. Einige Runlevels sind jedoch immer gleich. Runlevel 0, 1 und 6. SystemV verwendet der Prozess Init (erster Prozess im System mit PID 1), um seine Runlevels "umzuschalten", ist aber mittlerweile etwas betagt und wird durch Systemd ersetzt. Eine einfache Übersicht mit kurzer Erklärung zeigt wie das ausschaut.

Runlevel 0 - System halt
Das ist eigentlich kein richtiger Runlevel. Wird dieser Runlevel erreicht, so schaltet das System sich ganz einfach aus. Mit einem einfachen "init 0" fährt das System runter und schaltet sich ab.

Runlevel 1 - Single User Mode
Der single User Mode (s bzw S) ist sehr mager ausgestattet. Er bietet kein Multiuser und keine Netzwerkfähigkeit für den Benutzer. Der Modus ist sinnvoll, wenn man Wartungsarbeiten am System vornehmen muss.

Runlevel 2 - Local User Mode Without Remote Network
Der Runlevel 2 wird nicht auf allen Distributionen gleichermaßen verwendet. Man kann aber sagen, dass auf Runlevel 2 noch keine grafische Anwendung möglich ist. Multiuserfähig ist dieser Runlevel aber schon.

Runlevel 3 - Full Multi User With Network
Auch hier ist die Verwendung nicht bei allen Distributionen gleich. Allerdings läuft auf diesem Runlevel schon das Netzwerk. Je nach Distribution ist hier schon die grafische Anmeldung möglich oder eben nicht.

Runlevel 4 - Not Used
Dieser Runlevel wird von keiner Distribution genutzt.

Runlevel 5 - Full Multi User With Network And XDM
Ab hier steht das volle System bereit. Runlevel 5 ist der höchste Runlevel.

Runlevel 6 - System Reboot
Dieser Runlevel dient ganz einfach dem Reboot. Möchte man den Server neu starten, so kommt man prima mit einem "init 6" aus und schon startet der Server neu.

 

SystemV - Die Konfigurationsdatei inittab

Default Runlevel
In der Datei /etc/inittab, die Hauptkonfigurationsdatei des Init-Prozesses, lassen sich unter anderem die Runlevels festlegen, die das System beim Start erreichen soll. Dort finden sich folgende Zeilen, die man einfach nur an seine Bedürfnisse anpassen muss.

id:3:initdefault:

Dass man 0 und 6 nicht als Init-Default machen sollte, müsste jedem einleuchten und bedarf keiner weiteren Erklärungen.

 

Die Konsolen
Bei den meisten Distributionen sind 6 Konsolen vorkonfiguriert, die sich gleichzeitig verwenden lassen. Man erreicht sie mit ALT+F1 bis -F6. Je nach Bedarf kann man weitere Konsolen hinzufügen.

Im Grunde sind die Zeilen für die Konsolen wie folgt zu sehen:
id:runlevels:action:process

Das schaut dann in der Konfiguration wie folgt aus:
1:2345:respawn:/bin/mingetty --noclear tty1
2:2345:respawn:/bin/mingetty tty2
3:2345:respawn:/bin/mingetty tty3
usw...

 

Strg+Alt+Ent
Auch als Affengriff bekannt sorgt die Tastenkombination für gewöhnlich für einen Reboot des Servers. Man sollte sich überlegen, ob man sowas in der Produktivumgebung haben möchte oder doch lieber abschaltet. Neben den Runlevels und der Konsolen ist auch das Verhalten dieser Tastenkombination konfiguriert. Hier schaut man nach folgender Zeile:

ca:12345:ctrlaltdel:/sbin/shutdown -t 4 -r now

Anhand der Zeile erkennt man, dass mit der Tastenkombination ein Reboot nach 4 Sekunden ausgeführt wird. Vielleicht will man das abstellen und ändert es auf eine Nachricht, die per Echo ausgegeben wird. Oder, sofern es um einen privaten PC geht, kann man damit auch die Abschaltung des Gerätes einstellen. Jeder nach seinem Gusto.

Am Ende der Konfigurationen muss man noch dafür sorgen, dass die Konfiguration auch eingelesen wird. Das kann man mit einem Reboot machen. Allerdings kann man das auch einfacher haben und ein telinit q ausführen. Das ist übrigens auch eine Prüfungsfrage. Merke also: telinit -q

 

SystemV - Directories und Files von Init

Neben der Datei /etc/inittab gibt es noch eine ganze Reihe von Start-/Stop-Scripten, die das System braucht. Dabei muss man aber unterscheiden, denn bei einem Red-Hat-basierten System ist das meist ein Script. Hingegen ist das bei Debian so, dass es viele Scripte sind - für jeden Daemon ein Script in dem sein Start-/Stop-Verhalten festgelegt ist.

Die Scripte befinden sich meist in den Verzeichnissen /etc/init.d/ bzw. /etc/rc.d/. Die dort gespeicherten Scripte ermöglichen den Start und Stop. Entsprechend sind die Scripte aufgebaut, um das zu ermöglichen. Möchte man beispielsweise den Postfix anhalten, so reicht die Eingabe des entsprechenden Scripts mit der Option.

/etc/init.d/postfix stop

Wie das Stop, so geht auch der Start.

/etc/init.d/postfix start

Die meisten Scripte haben noch weitere Optionen. Beispielsweise "status", um den Zustand des Dienstes erkennen zu können, wenn man sich nicht sicher ist, ob der Service läuft oder nicht.

Eine gute Idee ist so ein Script mal mit dem Editor zu öffnen und sich anzuschauen wie es aufgebaut ist. Da wir hier an einem LPIC-2 arbeiten, muss ich wohl keine Grundlagen mehr zu Bash-Scripting legen. Wer noch Probleme damit hat, der kann sich hier auf meiner Seite bzw. auch sonst überall im Internet schlau machen. :-)

 

Nun gibt es unterhalb von /etc/init.d/ noch Subdirectories wie ./rc1.d, ./rc2.d, ./rc3.d etc. In denen zu finden sind Verlinkungen zu den Start-/Stop-Scripten. Dabei sind es dann Link-Namen wie K04apache2, S12named, K06postfix oder S18apache. Nun fragt man sich was das mit diesen seltsamen Namen aufsich hat. Das S am Namenanfang steht für Start und das K für Kill. Die Nummer dahinter ist die Reihenfolge in der das Script ausgeführt werden soll und dahinter befindet sich der Name, damit man weiß um welche Daemon es hier geht.

Die Namenwahl des Link und die damit verbundene Reihenfolge soll dafür sorgen, dass Init das  Netzwerk vor dem Postfix und Apache starteten soll. Anders herum würde es kaum Sinn machen. So lassen sich Abhängigkeiten für den Start und Stop des Systems regeln.

Nun kann man die Softlinks natürlich händisch anlegen und löschen. Muss man aber nicht. Dafür gibt es, je nach dem welche Distribution man verwendet, chkconfig und update-rc.d. Beide können dem Script entnehmen in welchem Runlevel es ausgeführt werden soll und die entsprechenden Links anlegen.

 

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login