AA_mouse-start_123rf-3662402_VolodymyrVasylkiv.jpg

© Volodymyr Vasylkiv, 123rf.com

Fliegender Start

Upstart und Systemd im Vergleich

16.12.2010
Upstart und Systemd – gleich zwei neue Ansätze konkurrieren um die Pole-Position beim Linux-Start. Wir unterziehen die Kandidaten einem konzeptionellen Vergleich.

Der Linux-Kernel übergibt nach seinem Start die Kontrolle an das kleine Programm Init. Ihm kommt wiederum die Aufgabe zu, alle für den Betrieb notwendigen Dienste zu starten und die Hardware einzurichten. In der Vergangenheit werkelte in den meisten Distributionen ein sogenanntes SysV-Init, das alle Systemdienste strikt nacheinander anschiebt. Da die Distributionen jedoch immer mehr Programme und Dienste mitbringen, dauert es immer länger, bis der Anwender endlich vor seinem Desktop sitzt.

Damit aber nicht genug: Während SysV-Init etwa eine angestöpselte Festplatte initialisiert und einbindet, wartet der gesamte Rest des System auf diese eine Hardwarekomponente. Tritt hierbei ein Problem auf, stoppt dies den kompletten Bootvorgang.

Apropos Absturz: Um festzustellen, ob ein essenzieller Dienst noch läuft oder als Zombie durch den Hauptspeicher geistert, stellt SysV-Init einige Verrenkungen an – in der Regel überwacht es die vom Daemon unter /var/run in einer Datei hinterlegte Prozess-Nummer (PID). Abschließend unterscheidet SysV-Init noch mehrere recht starre Systemkonfigurationen, die sogenannten Runlevel [1].

Emporkömmling

Mit diesen Problemen sahen sich zunehmend auch die Macher der Distribution Ubuntu konfrontiert. Unter ihnen war auch Scott James Remnant, der das Heft schließlich selbst in die Hand nahm und Upstart [2] entwickelte. Wie SysV-Init kommt auch Upstart in Form des Programms /sbin/init, das der Kernel automatisch als ersten Prozess mit der PID 1 startet. Damit sind die Gemeinsamkeiten allerdings schon beendet.

Anstelle stupide alle einem Runlevel zugewiesenen Dienste zu starten, wartet Upstart auf bestimmte Ereignisse, wie etwa "Netzwerk aktiviert" oder "Fernsehempfänger angeschlossen". Sobald ein solches eintritt, führt Upstart eine oder mehrere passende Aktionen aus. Diese sogenannten Jobs wecken wiederum alle notwendigen Dienste oder richten die Hardware ein. Sämtliche Jobs sammelt Upstart im Verzeichnis /etc/init, einen Beispieljob zeigt Listing 1. Eine Liste mit allen Jobs wirft das Kommando initctl list aus (Abbildung 1).

Abbildung 1: Der Befehl initctl list liefert alle Jobs, deren aktuellen Zustand und – sofern bekannt – die jeweils zugehörige Prozess-ID.

Listing 1

start on filesystem
exec /usr/bin/Programm
pre-start script
  # Erstelle notwendiges Verzeichnis:
  mkdir -p /var/log/Programm
end script

In einer Upstart-Job-Description steht hinter den Schlüsselworten start on das Ereignis, bei dem das hinter exec eingetragene Programm startet. Die Prozesse laufen allesamt im Vordergrund und nicht wie bei SysV-Init im Hintergrund. Das macht es für Upstart einfacher, zu prüfen, ob ein Prozess noch läuft. Bevor Upstart das Programm anwirft, führt es zunächst das zwischen pre-start script und end script hinterlegte Shellskript aus.

Das Drucksystem Cups fährt beispielsweise erst nach dem Ereignis "Dateisystem eingebunden" hoch, da es erst dann möglich ist, Dateien in die Spool-Verzeichnisse abzulegen. Voneinander unabhängige Ereignisse bearbeitet Upstart asynchron: So kümmert es etwa einen Fernsehempfänger in der Regel nicht, ob das Netzwerk bereits läuft. Die zugehörigen Jobs führt Upstart folglich parallel aus und beschäftigt so alle Rechenkerne moderner Prozessoren. Beim alten SysV-Init hätte die TV-Karte noch auf das Netzwerk warten müssen.

Das Beispiel aus Listing 1 zeigt aber auch einen Pferdefuß von Upstart: Wer nicht aufpasst, produziert eine Kette aus Abhängigkeiten, sodass die Dienste doch wieder nacheinander starten. Beispielsweise startet der Networkmanager erst, wenn D-Bus läuft, für das wiederum vorab Syslog seine Arbeit aufnehmen muss. Dem Autor eines Jobs beziehungsweise dem Distributor obliegt folglich die Aufgabe, ein Auge auf die Abhängigkeiten werfen und diese wohlüberlegt zu setzen.

Altlasten

Um nicht die über Jahrzehnte gewachsenen SysV-Init-Skripte über Nacht nutzlos zu machen, wertet Upstart sie weiterhin aus und startet entsprechend die Programme – allerdings wieder strikt nacheinander. Dank dieser weitreichenden Abwärtskompatibilität haben Distributionen die Möglichkeit, langsam und gefahrlos auf Upstart umzusteigen.

Das bestes Beispiel hierfür liefert Ubuntu: Upstart kam erstmals 2006 mit Version 6.10 "Edgy Eft" zum Einsatz, damals noch schlicht als 1:1-Ersatz für SysV-Init. Es dauerte im Anschluss noch drei Jahre, bis der Umstieg mit Ubuntu 9.10 abgeschlossen war und Upstart die Vorteile seines Konzepts erstmals unter Beweis stellen durfte. Doch selbst heute warten unter Ubuntu 10.10 im Verzeichnis /etc/init.d immer noch viele SysV-Init-Skripte auf die Migration. Nach Canonicals Plänen übernimmt Upstart zukünftig noch weitere Aufgaben und löst im Idealfall andere ereignisbasierte Dienste wie Cron, Anacron und Ard ab.

Upstart erlangte in den letzten Jahren so viel Beliebtheit, dass bereits andere namhafte Distributionen den Umstieg wagten. So kommt es beispielsweise in Fedora seit Version 9, in Googles Chromium OS und einigen Netbook-Betriebssystemen zum Einsatz. OpenSuse 11.3 ist noch nicht ganz soweit; dort tauschen die Entwickler das alte Init-System per Hand gegen Upstart aus, und selbst dann darf es nur stupide die alten SysV-Init-Skripte abarbeiten.

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Linuxtag 2010: Init-Ersatz Systemd präsentiert sich der Welt
    Am Freitag, 11. Juni 2010, hält der Red-Hat -Entwickler Lennart Poettering den ersten öffentlichen Vortrag über Systemd, eine Software, die er als Init-Ersatz und Session-Manager für Linux vorschlägt.
  • Eigene Dienste mit Upstart zünden
    Unter Ubuntu wacht der SysV-Init-Ersatz Upstart über die komplexen Vorgänge beim Systemstart. Mit dem richtigen Know-how fügen Sie bei Bedarf hier ein eigenes Startskript ein.
  • Systemd als Schaltzentrale für das Linux-System
    Systemd polarisiert die Community – und hat zugleich das Zeug dazu, alte Gräben zu schließen und eine einheitliche Basis für Linux zu bilden.
  • Schneller Booten dank Parallelisierung
    Lennart Poettering von Red Hats Desktop-Team hat auf dem Linuxtag seinen runderneuerten Linux-Systemstart mit Systemd vorgestellt. Zum Abschluss führte er auf seinem Laptop vor, wie schnell die Software tatsächlich ist.
  • Systemstart
    Auf fast allen modernen Linux-Distributionen kümmert sich inzwischen Systemd um den Systemstart – und mehr. Wir erklären, wie die neue Schaltzentrale funktioniert.
Kommentare
Arch Linux schöpft das Potenzial aus...
Andreas (unangemeldet), Dienstag, 05. Februar 2013 17:09:23
Ein/Ausklappen

Ich hab mir vor kurzem Arch Linux nochmal angesehen. Im Systemd steckt gewiss sehr viel potenzial, mir war es jedoch zu radikal (und machte mit einem alten Druckertreiber Probleme).

In 2 oder 3 Jahren wird es vielleicht systemd auch für mich als Standard geben; doch die Geschwindigkeitsvorteile waren bei mir aktuell nicht so hoch da doch ein großer Teil der Bootzeit für BIOS, Bootloader, kernel+initrd laden, Dateisysteme prüfen etc. draufgeht.

In Zukunft gibt es vielleicht mehr Dokumentation, Beispiele usw. für Upstart. Aber gegenwärtig bin ich dann doch wieder zu upstart (bzw. Ubuntu) zurück.


Bewertung: 204 Punkte bei 28 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 02/2016: Alt-PCs flott machen

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

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Der Tipp der Woche

Schon gewußt?

14.11.2015

Auch unter Ubuntu 15.10 kann man wieder mit dem Startmedienersteller (alias Startup Disk Creator) ein Live-System auf einem USB-Stick einrichten. ...

Fehler des Startmedienerstellers von Ubuntu 15.10 umgehen

Aktuelle Fragen

Leap 42.1 und LibreOffice
Heinz Kolbe, 09.02.2016 21:54, 0 Antworten
Moin moin, auf meinem Notebook habe ich Leap 42.1 und Win 10 installiert. Alles läuft rund nur...
Tails Update
Val Lerie, 11.01.2016 10:51, 0 Antworten
Hallo zusammen, updaten > update Speichern unter > Persistent nicht möglich, mit der Meldung;...
Recoll
Jürgen Heck, 20.12.2015 18:13, 4 Antworten
Wie kann man mit Recoll nach bestimmten Zeichen/Satzzeichen bzw. Zeichenkombinationen suchen, z....
Wings Platinum 4 auf Linux?
Bodo Steguweit, 18.12.2015 11:37, 4 Antworten
Hallo in die Runde ich nutze für meine Diashows Wings Platinum 4 als Diareferent. Arbeite jetzt...
Bandbreite regulieren
Georg Armani, 25.11.2015 16:50, 1 Antworten
Hallo, ich bin ein Neuling in Sachen Linux und hoffe auf Hilfe. Ich habe zwei Windows Rechner...