Alle Dateien, die beim Systemstart gebraucht werden, befinden sich im Verzeichnis /etc/rc.d. Es folgt eine Liste der Dateien:
$ ls /etc/rc.d init.d/ rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.local* rc.sysinit* rc* rc1.d/ rc3.d/ rc5.d/ rc.alsa_default* rc.modules* |
Wie bereits erwähnt. ist rc.sysinit die erste Datei, die vom System ausgeführt wird. Durch sie werden die grundlegenden Teile des Systems eingerichtet: Tastaturtyp, Einrichtung verschiedener Geräte, Prüfung der Dateisysteme, usw.
Danach wird das Skript rc mit dem gewünschten Runlevel als Argument gestartet. Wie Sie sehen konnten ist der Runlevel eine einfache Zahl. Für jeden vorhandenen Runlevel <x> muss ein korrespondierendes Verzeichnis rc<x>.d existieren. In einem typischen Mandrakelinux-System finden Sie also sechs Runlevel:
1: single-user („Einzelbenutzer-Modus“). Wird zur Behebung von schweren Problemen oder zum Wiederherstellen des Systems benutzt.
2: multi-user („Mehrbenutzer-Modus“), ohne Netzwerk.
5: wie Runlevel 3, allerdings mit Start des grafischen Anmeldeschirms.
Lassen Sie uns einen Blick auf den Inhalt des Verzeichnisses rc5.d werfen:
$ ls rc5.d K15postgresql@ K60atd@ S15netfs@ S60lpd@ S90xfs@ K20nfs@ K96pcmcia@ S20random@ S60nfs@ S99linuxconf@ K20rstatd@ S05apmd@ S30syslog@ S66yppasswdd@ S99local@ K20rusersd@ S10network@ S40crond@ S75keytable@ K20rwhod@ S11portmap@ S50inet@ S85gpm@ K30sendmail@ S12ypserv@ S55named@ S85httpd@ K35smb@ S13ypbind@ S55routed@ S85sound@ |
Wie Sie sehen sind alle Dateien in diesem Verzeichnis nur symbolische Links mit einer sehr spezifischen Form:
<S|K><order><service_name> |
Das S steht für Start des entsprechenden Dienstes und das K bedeutet Kill (Stopp) für den entsprechenden Dienst. Die Skripte werden in aufsteigender numerischer Reihenfolge ausgeführt. Wenn zwei Skripte die gleiche Nummer haben gilt die alphabetische Reihenfolge. Jeder der symbolischen Links zeigt auf ein vorhandenes Skript im Verzeichnis /etc/rc.d/init.d (mit Ausnahme von local, das einen speziellen Dienst kontrolliert).
Wenn das System in einen bestimmten Runlevel startet werden zuerst alle K-Links der Reihe nach aufgerufen und deren korrespondierende Skripte mit dem Argument stop gestartet. Dann werden die S-Skripte in der gleichen Art, allerdings mit dem Parameter start ausgeführt.
Also können wir, ohne jetzt alle vorhandenen Skripte zu behandeln, sehen, dass das System im Runlevel 5 zuerst den Befehl K15postgresql (also /etc/rc.d/init.d/postgresql stop) ausführt. Danach kommt K20nfs, dann K20rstatd, usw., bis zum letzten Befehl. Anschließend werden alle S-Skripte gestartet: zuerst S05apmd (also /etc/rc.d/init.d/apmd start), und so weiter.
Mit diesen Informationen versorgt, können Sie in ein paar Minuten Ihren eigenen Runlevel erstellen (beispielsweise den Runlevel 4) oder den einen oder anderen Dienst durch Entfernen des entsprechenden Links davon abhalten, gestartet oder gestoppt zu werden. Es gibt für diese Aufgabe auch einige Programme, speziell drakxservices (siehe DrakXServices: Einrichtung der Dienste beim Systemstart im Starter Handbuch) mit einem grafischen Interface oder chkconfig für den Textmodus.