[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Runlevel

Unix kennt verschiedene Modi, in denen es läuft. Diese werden Runlevel genannt. Die Runlevel sind vergleichbar mit der Gangschaltung eines Autos. Man schaltet beim Anfahren nacheinander die Gänge hoch. Zum Halten schaltet man wieder runter. Nicht bei jeder Fahrt werden alle Gänge benötigt.

Beim Hochfahren des Systems werden nacheinander die Runlevel durchlaufen. Diese sind durchnumeriert oder haben Buchstaben als Bezeichnung.

Es gibt große Abweichung der Runlevel bei unterschiedlichen Unix/Linux-Versionen.

Runlevels bei der SuSE-Distribution

Runlevel Bedeutung
0    Halt
S    Single User Mode
1    Multi User Mode ohne Netzwerk
2    Multi User Mode mit Netzwerk (Standard)
3    Multi User Mode mit Netzwerk und X
4    Frei
5    Frei
6    Reboot

Beim Runlevel Halt ist das System heruntergefahren. Der Single-User-Mode dient zum Pflegen des Systems. Wie der Name es schon sagt, kann nur ein Nutzer (der Superuser) in diesem Mode mir dem System arbeiten. Dies ist bei Wartungsarbeiten unbedingt notwendig, da andere Nutzer mit ihren Prozessen diese Arbeiten stören können. Runlevel 1 ermöglicht hier mehreren Nutzer die Arbeit mit dem System. Bei 2 und 3 wird das Netzwerk bzw. das graphische Login dazugeschaltet.

Runlevels bei muLinux

Runlevel Bedeutung
0    Halt
1    limbo level
2    Frei
3    Frei
4    full setup
5    Server, Daemons, X-Window
6    Shutdown

Der Runlevel 1 wird hier als limbo (engl. für Rumpelkammer) bezeichnet. Runlevel 4 arbeitet das setup-Programm ab. Erst Runlevel 5 ermöglicht uns die volle Leistung von muLinux zu nutzen.

Definition der Runlevel

Die Definition der Runlevel bei den Unix-/Linux-Versionen erfolgt in der Datei /etc/inittab. Unix-Einsteiger sollten hier keine Änderungen vornehmen. Eine zerstörte /etc/inittab kann dazu führen, daß das System nicht mehr richtig hochgefahren wird. Solange wir muLinux jedesmal von der Diskette jungfräulich starten, haben wir aber keine Probleme.

/# less /etc/inittab
id:4:initdefault:
r:S:sysinit:/etc/rc.4
l:1:once:/etc/rc.1
f:4:wait:/etc/rc.4
x:5:wait:/etc/rc.5
ca::ctrlaltdel:/etc/rc.6
l0:0:wait:/etc/rc.0
l6:6:wait:/etc/rc.6
c1:45:respawn:/bin/agetty 38400 tty1
c2:45:respawn:/bin/agetty 38400 tty2
c3:45:respawn:/bin/agetty 38400 tty3
c4:45:respawn:/bin/agetty 38400 tty4
c5:45:respawn:/bin/agetty 38400 tty5
c6:45:respawn:/bin/agetty 38400 tty6

#-----------------------
# servers & deamons
#-----------------------

# at command scheduler
AT:5:respawn:/usr/bin/atd
...

Jede Zeile, die nicht mit einem # beginnt (Kommentar) beginnt, ist ein Datensatz mit vier durch Doppelpunkt voneinander getrennten Einträgen.

ID:Runlevel:Aktion:Prozeß

ID dient zu Identifizierung des Prozesses. Dieser Bezeichner wird bei Einträgen in Logfiles und bei Fehlermeldungen ausgegeben.

Im zweiten Eintrag werden die Runlevel festgelegt, bei denen die entsprechende Zeile ausgeführt werden soll. Wenn das Feld leer ist, wird die Aktion bei jedem Moduswechsel ausgeführt.

Im dritten Eintrag wird bestimmt, welche Aktion von init ausgeführt wird. init ist das erste Programm, das ein Unixsystem startet. Hier einige init-Aktionen:

initdefault legt den Runlevel fest, bis zu dem das System durchstartet. Hier ist das Runlevel 4.

sysinit aktiviert den nach dem Doppelpunkt festgelegten Befehl einmal unmittelbar nach dem Systemstart, noch bevor irgendein Anwender Zugang zum System erhält.

once aktiviert den nach dem Doppelpunkt festgelegten Befehl. Auf die Beendigung wird nicht gewartet.

wait aktiviert den nach dem Doppelpunkt festgelegten Befehl. Es wird auf die Beendigung des Befehls gewartet.

ctrlaltdel aktiviert den nach dem Doppelpunkt festgelegten Befehl beim "Affengriff" [Strg] [Alt] [Entf]. Hier wird damit der Runlevel 6 (shutdown) ausgelöst.

respawn aktiviert den nach dem Doppelpunkt festgelegten Befehl beim Übergang in einem der angeführten Modi. Dieser Befehl wird wieder neu gestartet, wenn er beendet wurde. So wird dieser Prozeß am Leben gehalten. Hier sind es die virtuellen Konsolen, die nach dem Ausloggen wieder zum Einloggen zur Verfügung gestellt werden.

Es werden hier mehrere Skripte aufgerufen (rc.0, rc.1, rc.4, rc.5 und rc.6). Diese beinhalten die Befehle, die beim Wechsel zu dem Runlevel ausgeführt werden. Es lohnt sich diese Skripte mal anzuschauen. Zum Beispiel rc.0:

/# less /etc/rc.0

Man sieht die Meldungen beim Herunterfahren des Systems und unter anderem die Befehle kill, unmount und halt.

Beim "richtigen" Unix/Linux stehen für den Wechsel von Runlevel anstelle von einem Skript jeweils ein Verzeichnis zur Verfügung. Diese Verzeichnisse beinhalten Skripts zum Hochfahren und Deaktivieren der entsprechenden Programme des Runlevels. Da muLinux aus Platzgründen diese Möglichkeiten nicht hat, sind die Runlevel-Wechsel nicht immer "sauber."

Die Änderung von initdefault ist meist die einzig zu ändernde Einstellung in dieser Datei. Bei SuSE-Linux kann hier zwischen Text- und Grafik-Login (2 oder 3) gewechselt werden.

Das Programm init

init ist, wie gesagt, das erste Programm. das ein Unix-System startet. Es kann aber auch zum manuellen Wechsel der Runlevel benutzt werden. Dies kann zur Neuinitialisierung von Prozessen verwendet werden. Im Gegensatz zu Windows ist bei bei Unix ein kompletter Neustart nur bei Hardware-Problemen notwendig.

In den Single-User-Mode wechselt folgender Befehl:

/# init s

Wir können uns nun nur an einer Konsole einloggen. Ein Hochfahren zum Runlevel 5 bewirkt init 5.

/# init 5

Leider klappt dieser Wechsel bei muLinux nicht problemlos. Ein Neustart bringt das in Ordnung.

/# init 6
[Zurück] [Home] [Weiter]