Coders.ger Magazine | Special
13
vorherige Seite Zur Hauptseite Zum Inhaltsverzeichnis Seite drucken nächste Seite



System V Runlevels
Was sind Runlevels ? Das wird sich der ein oder andere Leser fragen. Runlevels sind Betriebszustände die ein System V Unix, wozu auch die aktuellen Linux - Distributionen zählen , annehmen kann. In so einem Runlevel wird festgelegt welche Programme beim Booten des Systems gestartet werden. Läuft ein Linux - Rechner zum Beispiel als Webserver, dann wird er in seinem Standart Runlevel garantiert den Apache HTTP - Demon starten. Bestimmte Programme beim Systemstart ausführen kann fast jedes Betriebssystem, aber das Runlevel - Konzept kann mehr. Es gibt nehmlich nicht nur einen Runlevel der konfiguriert werden kann sondern mindestens 6. Und das beste dabei ist das man ohne Probleme (d.h. auch ohne Reboot) von einem Runlevel in den nächsten springen kann. Bei einem solchen Sprung werden alle Programme und Treiber des momentanen Runlevels entfernt und die des neune Runlevels gestartet. Zum Beispiel kann man, bevor man sich im Internet einwählt auf einen zuvor auf Netzwerksicherheit getrimmten Runlevel wechseln, um das
Eindringen eines Fremden übers Netz zu vermeiden. Ist der Rechner wieder offline kann man zurück auf den 'freizügigeren' Runlevel wechseln. Interessant sind unter anderem die vordefinierten Runlevel 0,1,3 (nicht bei allen Systemen) und 6. Beim Wechsel in den Runlevel 0 wird das System herruntergefahren und angehleten (HALT). Level 1 ist der Single - User - Mode, er wird initialisiert falls beim Booten Probleme auftreten (z.B.: Fehler im Dateisystem). In Level 6 wird schließlich gewechselt wenn das System neu starten soll. Der Betriebszustand 3 ist bei vielen Unixvarianten der Zustand in dem sich das System nach dem Booten standartmässig befindet. Der Runlevel dieses Standartbetriebszustand wird in der Datei /etc/inittab festgelegt. In dieser Datei ist der Default - Runlevel immer wie folgt festgelegt.

# default runlevel
id:3:initdefault:

Ändernt man den Wert 3 auf 0 wird Linux nur noch in den 'System
halted.' Zustand booten. Möchte man nicht immer in dem in der inittab festgelegten Runlevel starten kann man den gewünschten Runlevel als parameter bei LILO bzw. LOADLIN angeben.

LILO:
LILO: Kernel Runlevel

LILO: Linux 3

LOADLIN:
loadlin Kernel Runlevel Disk

c:\lin>loadlin image1.krl 3 hdb1


Oder man wechselt nach dem Booten mit dem Befehl init <runlevel> in den gewünschten Betriebszustand. Ab hier werden wir uns hauptsächlich mit der Verwirklichung des System V Konzepts unter Suse 6.1 auseinandersetzen. In der obigen Datei /etc/inittab wird auch beschreiben was passiert wenn von einem Runlevel in den nächsten gewechselt wird. Bei Suse wird z.B. das Script /sbin/init.d/rc <runlevel> ausgeführt. Zu diesem Script später mehr, schauen wir uns zuerst einmal die Verzeichnisstruktur genauer an. Unter Suse existiert /etc/rc.d. Dies ist ein Link auf /sbin/init.d/, indem sich unteranderem unser rc Script befindet. Manche Distributionen haben nur einen dieser beiden Pfade. Ind /sbin/init.d/ bzw. /etc/rc.d befinden neben dem rc Skript noch andere Skripte mit Namen wie z.B. apache (Webserver), lpd (Line Printer Demon), cron, ... . Des weiteren enthält /sbin/init.d noch die Unterverzeichnise rc0.d bis rc6.d. Jedes dieser 7 Verzeichnise representiert einen Runlevel (rc0.d = Runlevel 0; rc1.d = Runlevel 1; ...) In jedem dieser Verzeichnise befinden sich nun Links derart SXXYYYYYY und KXXYYYYY (z.B.: S20lpd und K20lpd) Wobei das S für Start und das K für Kill (beenden) steht. Gefolgt wird dieser Buchstabe von einer 2-stelligen Ordnungszahl. Der letzte Teil representiert den Namen des zu Startenden oder zu beendenden Programms. In unserm Beispiel also lpd der Line Printer