Start me up!

Der Bootvorgang unter Linux

Ist zu Beginn des Linux-Bootprozesses der Kernel geladen, beginnt "Prozess Nr. 1": System V Init startet mithilfe diverser Shell-Skripte eine Vielzahl von Diensten. Wir zeigen die Funktionsweise und stellen moderne Alternativen vor.

  1. Der Bootvorgang unter Linux
  2. Teil 2: Der Bootvorgang unter Linux
Der Bootvorgang unter Linux

© Michael Schlenker

Der Bootvorgang unter Linux

Eine der ältesten Komponenten von Linux und anderen Unix-Systemen ist das Init - eine Routine des Betriebssystemstarts, die all das bestimmt, was passiert, wenn der Kernel geladen ist. Ihre Wurzeln liegen im System V der späten 1980-er. Standard wurde dieses Startverfahren bei Linux Mitte der 1990er. Bevor System V Init seinen Siegeszug antrat, herrschte das BSD-Init vor, das immer noch bei den Derivaten der Berkeley Software Distribution zum Einsatz kommt.

Das BSD Init ist sehr übersichtlich: eine Datei /etc/ttys definiert die (virtuellen) Konsolen, auf denen ein Login möglich sein soll, daneben wird ein Script /etc/rc ausgeführt, welchesSystemdienste startet. Den Entwicklern des System V Init war dies zu unflexibel: Für Wartungsarbeiten sollte die Möglichkeit bestehen, den Rechner mit nur einem Teil der möglichen Dienste zu starten.

Die Lösung fanden die Entwickler in so genannten Runlevels. Theoretisch gibt es zehn davon (0 bis 9), die unterschiedlich belegt werden können, in der Praxis der letzten zehn Jahre haben sich aber drei für das laufende System eingebürgert:

  • In Runlevel 1 werden keine Netzwerkdiensteund kein X-Server gestartet. Dieser Modusdient Notfallarbeiten an havarierten Systemen.Runlevel 3 enthält bereits die Netzwerk-Interfacesund Server-Dienste und ist deshalbbei Server-Systemen Standard.In Runlevel 5 wird der Displaymanager gestartet,der ein grafisches Login bereitstellt,weshalb dieses meist bei Desktop-Systemenzum Einsatz kommt.

Aus der Reihe tanzen Ubuntu, das bis 6.06 nur die Runlevels 1 und 2 kennt, und ältere SUSE- sowie Debian-Distributionen (vor 2004).

Eine besondere Bedeutung haben 0 und 6: Runlevel 0 steht für den Shutdown eines Systems, in Runlevel 6 wird rebootet. Das Default-Runlevel auf einen dieser Werte einzustellen ist demnach keine gute Idee: Ihr System würde sofort herunterfahren oder endlos neu starten. Wie das BSD Init verwendet das System V Init zwei wesentliche Orte für die Speicherung der Konfiguration: Eine Datei /etc/inittab enthält Einstellungen für Konsolen und definiert das Standard-Runlevel. Und anstelle eines Startscripts für alle Dienste existiert für jedes Runlevel ein Verzeichnis mit Skripten für die einzelnen Dienste.

Komfortable Tools

System V Init wartet mit komfortablen Hilfen für Wartungsarbeiten auf. Um in ein bestimmtes Runlevel zu wechseln, genügt es, den Befehl init gefolgt vom gewünschten Runlevel zu verwenden. Soll beispielsweise für Änderungen am X-Server das grafische Login abgeschaltet werden, reicht

Der Bootvorgang unter Linux

© Michael Schlenker

Beim klassischen Sys-V-Init werden die StartSkripte in ihrer alphanumerischen Reihenfolge abgearbeitet.
init 3

um von Runlevel 5 nach 3 zu wechseln. Wollen Sie nur einen bestimmten Dienst stoppen, rufen Sie das Start-Stop-Script in /etc/init.d auf:

/etc/init.d/xdm stop

Für den Neustart des gewünschten Dienstes verwenden Sie den Parameter start. Daneben sollten die meisten Skripte restart und reload kennen. Letzteres weist den Dienst nur an, eine geänderte Konfiguration neu einzulesen.

Die /etc/inittab

Die zentrale Konfigurationsdatei des System V Inits ist die /etc/inittab. Heute wird sie praktisch nur noch dazu verwendet, das Default Runlevel und die virtuellen Konsolen zu definieren. Dennoch sollte man ihren Aufbau kennen, denn zusammen mit dem Schlüsselwörtchen respawn ist die inittab der richtige Platz für Dienste, die nicht immer wochenlang stabil laufen. Und wenn Sie dem "Affengriff" (also STRG-Alt-Entf) eine andere Funktion zuordnen wollen, dann erledigen Sie das auch in der /etc/inittab.

Der Bootvorgang unter Linux

© Michael Schlenker

Mit dem Tool Boot-Chart können Bremsen beim Systemstart ermittelt und beseitigt werden.

Der Aufbau folgt dem Schema verschiedener "tabs" des letzten Jahrtausends, als Trenner fungiert der Doppelpunkt:

2:2345:respawn:/sbin/mingetty tty2

Das erste Feld definiert die ID des Eintrages. Sie kann willkürlich gewählt werden, muss aber eindeutig sein. Es folgt eine Liste der Runlevel, für die der Eintrag gilt. respawn gibt an, dass der Prozess, wenn er beendet wurde, neu gestartet werden soll. Und schließlich folgt der von init auszuführende Befehl.

Verzeichnisse für jedes Runlevel

Für jedes Runlevel existiert ein eigenes Verzeichnis, das die Startskripte als Softlink auf die bereits erwähnten Dateien in /etc/init.d enthält. Je nach Distribution heißen die Verzeichnisse /etc/rcX.d oder /etc/init.d/rcX.d, wobei X für das jeweilige Runlevel steht. Beim Blick in die Runlevel-Ordner fallen zwei Typen von Skripten auf: Neben den mit K beginnenden "Kill-Skripten" existieren die mit "S" beginnenden Startskripte. Beim Wechsel in ein Runlevel werden zuerst die Kill-Skripte in der durch die Zahlen vorgegebenen Reihenfolge und anschließend die Startskripte abgearbeitet. Um einen Dienst aus einem bestimmten Runlevel zu entfernen, genügt es theoretisch, den Softlink für das S-Script zu entfernen, der K-Link sollte verbleiben, da der Dienst sonst beim Wechsel des Runlevels möglicherweise aktiv bleiben würde.

In der Praxis ist das manuelle Entfernen und Hinzufügen von Softlinks recht fehleranfällig: Im Extremfall müssen für fünf Runlevels je zwei Links beachtetwerden. Die meisten Distributionen bieten deshalb Tools für die Verwaltung der Runlevel. Bei Ubuntu und Debian ist dies die Kommandozeilen-Applikation update-rc.d, SUSE enthält ein Modul für YaST. Zudem existiert für KDE ein Universalwerkzeug für die Runlevel-Verwaltung. Allerdings lassen sich nicht bei jeder Distribution alle Dienste über Softlinks steuern: Ubuntu liest in einigen Startskripten Variablen aus /etc/alternatives ein, die angeben, ob ein Service gestartet werden soll. Ist dem nicht so, ignoriert das Startscript die Übergabe des Parameters start.

Im Gänsemarsch

Ein Kritikpunkt an Linux ist der recht langsame Start: Zwar werden Kernel und Initrd flott geladen und entpackt, die folgenden Dienste werden jedoch einer nach dem anderen gestartet. Dabei spricht aus technischer Sicht wenig gegen eine Parallelisierung. Sofern benötigt, sollte vor dem Webserver zwar der Datenbank-Server gestartet werden, ein Mailserver wird aber in der Regel noch nicht gebraucht. Der Start von Mail- und Webserver ließe sich also parallelisieren. Ideal wäre es, wenn man nur die Dienste angeben müsste, von denen ein Server abhängig ist. Eine umständliche manuelle Festlegung der Startreihenfolge entfiele.

Der Bootvorgang unter Linux

© Michael Schlenker

SUSE bringt für die Verwaltung der Startskripte ein eigenes YaST-Modul mit.

Zudem wurde System V Init für Server und Workstations mit einer weitgehend festen Hardware- und Netzwerkkonfiguration entworfen, die selten neu gestartet werden. An Notebooks, die sich in wechselnden Netzen aufhalten, oder an USB-Festplatten, die, falls vorhanden, beim Start gleich eingebunden werden sollten, dachte vor fast zwanzig Jahren niemand. So haben es sich mehrere Projekte auf die Fahne geschrieben, das alte Init durch ein flexibleres System zu ersetzen:

Apples launchd übernimmt seit etwa einem Jahr die Überwachung des Systemstarts und ersetzt auch gleich den "Herrscher über die Zeit" cron sowie den xinetd, über den Netzwerkdienste gestartet werden, die nicht als Daemon laufen. Mit starkem Fokus auf den Server-Einsatz wurde Solaris Service Management Facility entwickelt. Daneben existiert mit initng ein eher auf Gentoo zugeschnittenes Init, das primär die Abarbeitung des klassischen Init parallelisiert.

Der Bootvorgang unter Linux

© Michael Schlenker

In der Datei /etc/inittab sind Default-Runlevel und zu öffnende Konsolen verzeichnet.

Mehr zum Thema

Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
Amazon Blitzangebote
Technik-Deals

Die Highlights der Amazon Blitzangebote - heute mit Sennheiser-Headset, Xbox-One-Tagesangeboten, Asustor-NAS, Powerline-Set und mehr.
Tipps zum leisen PC
Tipps und Tricks

Die Komponenten eines PCs erzeugen Hitze. Lüfter sorgen meist für eine lästige Geräuschkulisse. Mit unseren Tricks wird Ihr PC flüsterleise.
SSD Mythen Tipps
Solid State Disk

SSD-Tuning - was ist wahr, was ist falsch? Wir verraten, welche SSD-Mythen Sie vergessen können und welche Tipps wirklich helfen.
Urlaubsbilder
Fotografieren im Sommer

Von Sommerlicht bis Sonnernuntergang: Unsere 7 Tipps verraten, wie Sie Urlaubsfotos richtig machen und schöne Bilder mit nachhause bringen.