Wie beschreibt man einen Runlevel?

Wir wissen jetzt, dass beim Boot-Vorgang ein Programm namens init die aufgerufenen Programme kontrolliert. Wir kennen die Konfigurationsdatei /etc/inittab, die unter anderem festlegt, in welchen Runlevel das System beim Booten wechselt. Aber woher weiß der Computer, wie solch ein Runlevel aussieht?

Für jeden Runlevel von 0 bis 6 (siehe Tabelle 1) existiert ein eigenes Verzeichnis, das den Runlevel detailliert beschreibt. Auf einem "normalen" Linux-System heißt dieses Verzeichnis für Runlevel 5 beispielsweise /etc/rc.d/rc5.d, aber der genaue Name kann je nach Distribution abweichen – verbreitete Alternativen sind /etc/rc5.d oder auch /etc/init.d/rc5.d.

In diesen Verzeichnissen stehen die so genannten Init-Skripte. Jedes davon kontrolliert ein Subsystem Ihres Computers, z. B. die Uhr, den Mail-Server oder den Drucker-Spooler. Alle Init-Skripte folgen einer einheitlichen Syntax: Beim Aufruf wird genau ein Argument übergeben, entweder start oder stop, je nachdem, ob der betreffende Dienst gestartet oder angehalten wird. Viele Skripte kennen noch weitere Argumente für andere Aufgaben, aber jedes Init-Skript weiß über start und stop Bescheid. So kann init jeden Teil des Systems vollautomatisch kontrollieren.

Abbildung 2: Vorgänge beim Wechsel des Runlevels

Beim Wechsel in einen Runlevel (siehe auch Abbildung 2) ruft init alle Init-Skripte im zugehörigen Runlevel-Verzeichnis auf. Wenn Sie in den Runlevel 2 wechseln, werden alle Skripte aus /etc/rc.d/rc2.d gestartet. Werfen Sie einen Blick in dieses Verzeichnis:

$ ls /etc/rc.d/rc2.d
K09sshd     S16apmd    S75keytable
K75netfs    S20random  S90xfs
K89portmap  S30syslogd S99local
S08ipchains S40crond
S10network  S60lpd

Der Name jedes Skriptes besteht aus drei Bestandteilen:

  • Ein Buchstabe "K" oder "S" entscheidet, ob das Subsystem angehalten ("geKillt") oder geStartet wird.
  • Eine zweistellige Zahl von 00 bis 99 legt die Reihenfolge fest, in der die Skripte aufgerufen werden.
  • Ein Kürzel beschreibt das Subsystem für menschliche Administratoren.

Das im Beispiel gezeigte Runlevel-Verzeichnis wird demnach die Dienste sshd, netfs und portmap anhalten. Anschließend initialisiert es diverse Subsysteme neu, wodurch zum Beispiel Netzwerkeinstellungen korrigiert oder ein Tastaturtreiber geladen werden. Aktuelle Distributionen rufen ein Subsystem dabei nicht noch einmal auf, wenn es bereits läuft; es kommt also nicht zu doppelten Daemons.

Der gute Stil der Unix-Systemadministration fordert übrigens, dass die init-Skripte der Runlevel-Verzeichnisse Links in ein anderes Verzeichnis sind. Die eigentlichen Skripte stehen dann z. B. in /etc/init.d oder /etc/rc.d/init.d. Wenn Sie ein dadurch beschriebenes Subsystem für einen bestimmten Runlevel aktivieren möchten, legen Sie einfach einen neuen Link an:

# cd /etc/rc.d/rc5.d
# ln ../init.d/mysql S97mysql
# cd ../rc0.d
# ln ../init.d/mysql K02mysql
# cd ../rc1.d
# ln ../init.d/mysql K02mysql
# cd ../rc6.d
# ln ../init.d/mysql K02mysql

Der Vorteil: Änderungen am init-Skript wirken sich sofort auf alle Kopien aus; es kommt zu keinem Versions-Wirrwarr. Am Beispiel sehen Sie noch einen weiteren wichtigen Tipp: Wenn Sie einen neuen Start-Link anlegen, erstellen Sie am besten gleich die symmetrischen Stopp-Links für die Runlevel 0, 1 und 6.

Ausblick

Wenn Sie gerade ein Stündchen Zeit haben, sehen Sie sich doch einmal die init-Skripte für die wichtigsten Runlevel an. Dabei lernt man eine Menge über das System – und nebenbei auch über die Programmierung mit der Shell. Eine kleine Warnung an dieser Stelle: Mit init ist nicht gut Kirschen essen. Ein Fehler in der Boot-Konfiguration kann einen Computer lahmlegen. Und das bemerkt man erst am nächsten Morgen, wenn man den Rechner das nächste Mal einschaltet.

Glossar

BIOS

Das BIOS (Basic Input/Output System) ist meistens in einem programmierbaren Festspeicher (in aktuellen Geräten sind das EEPROMs) auf der Hauptplatine des Computers gespeichert. Es enthält neben dem Setup-Programm zur Steuerung einiger Hardware-Funktionen die Boot-Logik des PCs. Diese liest den Boot-Sektorder Festplatte ein, also ein paar Kilobyte Daten, und führt ihn aus – fertig. Alles andere muss die Software aus dem Boot-Sektor tun. Theoretisch enthält das BIOS auch noch Gerätetreiber für DOS-basierte Betriebssysteme, doch werden diese unter Linux in der Regel nicht benutzt.

Boot-Sektor

Am Anfang der Festplatte liegt ein Boot-Sektor, der ein Programm enthalten kann, das für das Laden des Betriebssystems zuständig ist. Es gibt einen Haupt-Boot-Sektor pro Festplatte, den Master Boot Record (MBR), sowie einen zusätzlichen Boot-Sektor für jede einzelne Partition. Der MBR wird meist für die Auswahl zwischen den installierten Betriebssystemen benutzt, oder er lädt seinerseits den Boot-Sektor einer Festplattenpartition. Dieser startet das eigentliche Betriebssystem.

Links

Links sind ein wichtiges Konzept bei Unix-artigen Betriebssystemen. Anstatt eine Datei zu kopieren, erstellt man einen neuen Verzeichniseintrag, der auf die ursprüngliche Datei zeigt. Wenn ein Programm diesen neuen Eintrag öffnet, sieht es den Inhalt der ursprünglichen Datei. Dabei unterscheidet man harte von symbolischen Links – bei harten Links ist die Kopie vom Original überhaupt nicht mehr zu unterscheiden, wohingegen symbolische Links wirklich nur Zeiger sind.

Der Autor

Marc André Selig arbeitet als wissenschaftlicher Angestellter an der Universität Trier und als Arzt im Praktikum am Kreiskrankenhaus Schramberg. Momentan beschäftigt er sich vor allem mit der Programmierung Internet-basierter Datenbanken auf diversen Unix-Plattformen, doch auch die E-Mail-Administration der von ihm betreuten Server lässt ihn selten zur Ruhe kommen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Systeminitialisierung und Runlevel
    Zwischen dem Einschalten des Computers und dem Einloggen der Benutzer arbeitet das Programm init als erster Prozess. Es initialisiert das System, weckt Daemons wie crond oder syslogd und legt den Runlevel fest, den der Anwender vorfindet.
  • SysV-Init und die Runlevel
    Die meisten Distributionen bürden den kompletten Systemstart einem kleinen Programm namens Init auf, das den Job wiederum ganz ungeniert an eine wilde Bande aus Skripten delegiert. Mit denen gilt es zu kämpfen, gerät der Bootprozess einmal ins Stocken.
  • Durchstarten
    Beim Wettstreit zwischen dem klassischen Init und dem recht jungen Systemd trifft jahrzehntelang gewachsene Technik auf neue Konzepte.
  • Bootvorgang 2. Anlauf
  • Mit den Dienern reden
    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.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...