Linux startet beim Booten viele Dienste – welche, hängt davon ab, wie Sie die Runlevels konfiguriert haben. Dazu verwendet man meist grafische Tools, aber “chkconfig” leistet das Gleiche in einem Bruchteil der Zeit.
Linux-Distributionen liefern zahlreiche Serverdienste mit. Viele davon landen im Rahmen einer Standardinstallation automatisch auf der Festplatte, und manche müssen auch laufen, damit das System volle Funktionalität bietet – selbst wenn der Rechner ein Desktop-PC ohne Netzwerkverbindungen ist. So ist beispielsweise das Drucksystem CUPS (das sich darum kümmert, Ihre Ausdrucke an den Drucker weiterzuleiten) ein Server-Dienst.
Meist startet Linux alle Dienste gleich beim Booten. Noch im Bootmenü können Sie eine von mehreren Betriebsarten wählen, Linux verwendet dafür das Wort “Runlevel”. Jeder Runlevel ist für unterschiedliche Einsatzzwecke gedacht, normale Desktop-PCs starten in dem Runlevel, der sich mit einer grafischen Oberfläche präsentiert – bei Suse und Mandriva Linux ist das Runlevel 5, bei Ubuntu ist es Runlevel 2. Starten Sie den Rechner gezielt in einem anderen Runlevel, wird er beim Booten andere Dienste aktivieren – typischerweise landen Sie dann an einem Login-Prompt im Textmodus, weil die grafische Oberfläche in diesem anderen Runlevel nicht vorgesehen ist.
Welche Systemdienste auf einem Linux-Rechner laufen, konfigurieren viele Anwender über grafische Tools, die die Distributoren mitliefern – bei Suse Linux beispielsweise mit YaST (Abbildung 1) und unter Mandriva Linux mit DrakConf (Abbildung 2). Diese Hilfsprogramme sind komfortabel und erklären auch ansatzweise die Aufgaben der zahlreichen Dienste; allein aus dem Namen kann man darauf in vielen Fällen nicht schließen.
Unter Suse Linux wählen Sie im Kontrollzentrum YaST den Eintrag System / Runlevel-Editor, um das Modul für die Runlevel-Konfiguration zu aktivieren; Mandriva-Anwender rufen im Startmenü den Punkt System / Aktivieren oder Deaktivieren der Systemdienste auf.

Abbildung 1: Suse Linux zeigt im YaST-Runlevel-Editor automatisch die Beschreibungen zu allen Diensten an – verzichtet dabei allerdings ganz auf deutsche Übersetzungen der englischen Texte. Neben der einfachen Variante gibt es einen Expertenmodus.

Abbildung 2: Die Diensteverwaltung von Mandriva Linux 2007 blendet nach einem Klick auf “Info” eine kurze Beschreibung zum jeweiligen Dienst ein – teilweise deutschsprachig (wie in der Abbildung), teils aber auch auf Englisch.
Schneller in der Shell
Wer allerdings schon weiß, welcher Dienst für eine bestimmte Aufgabe zuständig ist, empfindet das Ein- und Ausschalten über die grafischen Tools oft als umständlich. Alte Linux-Hasen wechseln in der Shell in die Unterverzeichnisse rc1.d bis rc6.d von /etc/rc.d/ bzw. /etc/init.d/, in denen sich symbolische Links befinden, die das Startverhalten festlegen.
Für die dort nötigen Arbeiten (das Löschen von Links oder das Setzen neuer Links) gibt es mit chkconfig ein Frontend, das über kurze und prägnante Shell-Befehle schnelle Änderungen an der Konfiguration gestattet.
Um beispielsweise das ALSA-Soundsystem für alle Standard-Runlevels zu aktivieren oder deaktivieren, suchen Sie zunächst mit
chkconfig --list|grep -i alsa
nach potenziellen Kandidaten. Der Befehl liefert unter Suse Linux alsasound als Treffer zurück, bei Mandriva Linux heißt es schlicht alsa. Die beiden Befehle
chkconfig --del alsasound chkconfig --all alsasound
schalten dann den Dienst für alle Runlevels aus oder an, in denen man ihn üblicherweise benutzt. (Welche diese Standard-Runlevels sind, legt ein Suse-System im zugehörigen Init-Skript fest – im Beispiel des Alsa-Systems steht etwa in /etc/init.d/alsasound die Zeile
# Default-Start: 2 3 5
Mandriva Linux handhabt es genauso, trägt für den gleichen Dienst aber die Runlevels 2, 3, 4 und 5 ein.)
Neben der Syntax chkconfig --del Service bzw. chkconfig --add Service gibt es die alternativen Befehlsformen
chkconfig Service off chkconfig Service on
Wichtig ist hier übrigens: Das Aktivieren oder Deaktivieren eines Dienstes mit chkconfig bezieht sich nur auf die Verwaltungsstrukturen, die das System beim Booten ausliest – an den aktuell laufenden Diensten ändert sich dadurch gar nichts. So schaltet etwa chkconfig cups off keinesfalls den CUPS-Server aus, sondern verhindert nur, dass er beim nächsten Bootvorgang gestartet wird.
Konfiguration im Detail
Wollen Sie von den Standardvorgaben (aus der Zeile # Default-Start: ... des Init-Skripts) abweichen, verwenden Sie zusätzlich die Option --level und geben dahinter (ohne Trennzeichen) die gewünschten Runlevels an, z. B.
# chkconfig --level 34 cups on # chkconfig --list cups cups 0:off 1:off 2:off 3:on 4:on 5:off 6:off
Bei diesem Befehl verhalten sich Suse und Mandriva Linux unterschiedlich:
- Unter Suse Linux ignoriert ein Aufruf der Form
chkconfig --level ... Service offdie Level-Angaben und schaltet den Dienst vollständig ab; der Befehlchkconfig --level ... Service onaktiviert den Dienst in allen angegebenen Leveln und schaltet ihn in den übrigen aus. - Bei Mandriva Linux betrachtet
chkconfigsolche Aufrufe immer als Veränderung im Vergleich zum Ist-Zustand: Für die mit--levelangegebenen Levels schaltet das Kommando den Dienst also ein (on) oder aus (off), die Einstellungen der übrigen Runlevels verändert das Tool dabei nicht.
Übersicht verschaffen
Auch für eine schnelle Übersicht, welche Dienste in welchem Runlevel laufen, eignet sich chkconfig: Dazu rufen Sie es mit dem Parameter --list auf. Zu jedem Dienst gibt das Programm dann eine Zeile aus, die für alle sieben Runlevels (0 bis 6) den Status (on oder off) anzeigt, zum Beispiel
cups 0:off 1:off 2:on 3:on 4:off 5:on 6:off
Abbildung 3 zeigt einen größeren Ausschnitt dieser Ausgabe. Während sich die Mandriva-Version des Programms auf diese Informationen beschränkt, gibt Suses chkconfig-Kommando zusätzlich an, welche Services der Super-Internet-Daemon xinetd potenziell bereitstellt und welche davon aktiviert sind. Dabei ist zu beachten, dass diese Angaben irrelevant sind, wenn der xinetd-Dienst selbst nicht läuft.
Fazit
Das Tool chkconfig ist ein klassisches Beispiel für die deutliche Beschleunigung einer Aufgabe, die durch den Wechsel von einem GUI-Tool zur Shell-Variante möglich ist. Bis etwa YaST überhaupt gestartet ist, haben Sie mit chkconfig schon die Einstellungen für diverse Dienste verändert. (hge)
Chkconfig-Ersatz für Ubuntu
Ubuntu liefert kein chkconfig-Programm mit. Die Lücke füllt das Programm sysv-rc-conf[1], das die gleichen Aufgaben übernimmt, aber nicht genau die gleiche Befehlssyntax besitzt.
Die Anzeige aller Dienste erolgt hier ebenfalls über die Option --list, also mit
sysv-rc-conf --list
Um einzelne Dienste an- und abzuschalten, stehen nur die Befehlsvarianten
sysv-rc-conf Service on sysv-rc-conf Service off
zur Verfügung – die Optionen --add und --del von chkconfig kennt das Tool nicht. Die Option --level zur gezielten Steuerung der betroffenen Runlevels kennt sysv-rc-conf auch; sie funktioniert wie die Mandriva-Variante.
[1] Sysv-rc-conf: http://sysv-rc-conf.sourceforge.net/


