claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 01/2007   »   Ausgabe bestellen

Runlevel mit "chkconfig" bearbeiten

Mit den Dienern reden

Hans-Georg Eßer


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.

Abb. 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.

Abb. 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:

Ü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.

Abb. 3: Welche Dienste laufen in welchen Runlevels? Suse zeigt das sogar farbig an.

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.

Infos
[1] Sysv-rc-conf: http://sysv-rc-conf.sourceforge.net/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2008-11-05 17:26

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]