Von init an

Wie Linux sich die Stiefel anzieht

Nach dem Einschalten zeigt ein Computer viele kryptische Nachrichten an, bevor er sich mit dem Login-Bildschirm bereit meldet. Wir zeigen, was im Hintergrund des Boot-Vorgangs abläuft.

Der Boot-Vorgang hat schon etwas Faszinierendes. Am Anfang steht ein Haufen Silizium mit einem winzigen Progrämmchen im BIOS, das gerade einmal ein ebenso winziges Programm von der Festplatte nachladen kann. Dann passiert irgend etwas, und am Ende bietet eine vollwertige Workstation ihre Dienste an – mit der Herrschaft über komplexe Hardware-Merkmale und Peripheriegeräte, mit einer Netzwerk-Anbindung und zahlreichen laufenden Servern, kurz – ein richtiges Linux-System.

Die wesentliche Aufgabe des Boot-Vorgangs ist, ganz einfach zusammengefasst, die Initialisierung der Hard- und Software. Zuerst werden die Datenstrukturen des Betriebssystemkerns vorbereitet, anschließend die vorhandene Hardware rudimentär geprüft und alle passenden Treiber gestartet. Damit schafft das System vor allem die Voraussetzung für das Nachladen des eigentlichen Betriebssystems. Wenn BIOS und Boot-Sektor ihre Aufgabe getan haben, geht das Wissen über die Festplatte nämlich zunächst wieder verloren.

Anschließend führt Linux bereits normale Programme aus. Diese beschäftigen sich am Anfang ebenfalls noch mit der Hardware: Jetzt werden exotischere Peripheriegeräte initialisiert. Daneben finden Wartungsaufgaben statt, z. B. prüft das System die Festplatte ganz kurz auf Fehler oder räumt Bereiche mit temporären Daten auf. Schließlich werden die diversen Daemons und Server-Dienste gestartet, die ein Unix-System erst richtig zum Leben erwecken. Dieses geschieht in einer genau abgestimmten und sorgfältig durchdachten Reihenfolge.

Kernelspace und Userspace

Bevor wir uns die einzelnen Schritte im Detail ansehen, sollten wir noch eine wichtige Unterscheidung treffen: Wo und wie werden die einzelnen Funktionen ausgeführt? Davon hängt schließlich ab, ob und wie leicht wir die Vorgänge manipulieren können.

Die allerersten Schritte nach dem Einschalten gehören noch gar nicht in den Aufgabenbereich von Linux. Das BIOS ist für Normalsterbliche ohnehin unantastbar; allenfalls installiert man einmal ein Update. Auch das erste vom BIOS geladene Programm aus dem Boot-Sektor ist noch kein Teil des eigentlichen Betriebssystems. Dieser so genannte Bootloader hat lediglich die Aufgabe, das Betriebssystem zu starten. Bekannte Exemplare dieser Gattung sind neben dem Bootloader von Windows NT die in der Linux-Welt verbreiteten Programme LILO und GRUB. Allen gemeinsam: Sie laden einen Betriebssystemkern und starten ihn.

Bei allen folgenden Aktionen gibt es bei Unix-Betriebssystemen zwei grundlegend verschiedene Möglichkeiten: Funktionen können im Kernel- oder im Userspace ablaufen. Zu den Kernel-Funktionen gehört beim Booten die Initialisierung der wichtigsten Hardware-Treiber. Was im Kernel passiert, lässt sich nur durch eine Änderung des Linux-Quelltextes und eine Neuübersetzung modifizieren. Stoff für echte Hacker!

Mit Userspace meint man alles, was durch "normale" Programme oder Skripte gesteuert wird. Natürlich interagieren die beiden: Wenn ein Programm aus dem Userspace zum Beispiel auf die Festplatte zugreifen will, ruft es eine entsprechende Funktion aus dem Kernel auf. Und bei Linux wird die Sache durch die Kernel-Module besonders kompliziert. Module sind zwar eindeutig Kernel-Funktionen, doch sie werden durch Programme aus dem Userspace geladen und kontrolliert.

Hardware

Die ersten Meldungen, die an uns vorbeiflimmern, werden also vom Kernel generiert – wir werden uns in diesem Artikel nicht weiter um diese kümmern; schließlich können wir sie ohne tiefes Hintergrundwissen nicht beeinflussen.

Nach zehn oder zwanzig Sekunden ist der Kernel jedoch mit seinen Vorbereitungen fertig und ruft das erste Programm aus dem Userspace auf. Hierbei handelt es sich bei den heute üblichen Distributionen oft um ein ganz kurzes Skript namens linuxrc, das auf einer RAM-Disk gemeinsam mit ein paar Modulen abgelegt ist und noch vom Boot-Sektor geladen wurde. linuxrc soll Treiber und Funktionen laden, die zwar für den weiteren Boot-Vorgang unerlässlich sind, aber nicht in den Kernel einkompiliert wurden. Dazu können Treiber für eine SCSI-Festplatte, verschlüsselte Dateisysteme oder essentielle Netzwerktreiber gehören.

Die Funktionalität rund um linuxrc ist optional – wenn bei der Übersetzung des Kernels bereits alle notwendigen Treiber fest einkompiliert wurden, also keine Module nachgeladen werden müssen, verzichtet man auf linuxrc einschließlich der RAM-Disk. Sie selbst werden sich kaum jemals um dieses Skript kümmern, da das Installationsprogramm Ihrer Distribution ein solches Skript mit allen für Ihren Computer notwendigen Befehlen geschrieben und eine passende RAM-Disk erstellt hat. Wenn Sie Ihren Kernel später einmal verändern sollten, erleichtern Sie sich die Arbeit, indem Sie alle lebensnotwendigen Funktionen fest einkompilieren und nicht in Module auslagern.

Am Ende dieses Abschnittes muss ein wichtiges Ziel erreicht sein: Die weiteren Bestandteile können von der Festplatte nachgeladen werden, d. h. zumindest die so genannte Root-Partition mit den Verzeichnissen /bin, /sbin, /lib, /etc, /dev und /tmp muss zugänglich sein. Sie ist in der Regel noch nicht voll vorbereitet; beispielsweise sind Schreibzugriffe meist noch verboten. Aber zumindest kann der Kernel gezielt auf vordefinierte Abschnitte dieser Partition zugreifen.

Abbildung 1: Zusammenfassung des Boot-Vorgangs

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/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(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!

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...