26.02.2014 Aufrufe

Ubuntu User Desktopia (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Upstart<br />

Wissen<br />

wenn Init seine Arbeit aufnimmt. USB-Laufwerke<br />

und Netzwerkhardware verletzen diese Regel.<br />

Nach einigen Geräten muss das System gar die<br />

USB-Busse absuchen, um sie zu entdecken, andere<br />

erfordern das Laden von Firmware, bevor sie einsatzfähig<br />

sind.<br />

Solche Hotplug-Geräte zeigten auch andere Grenzen<br />

des traditionellen Init-Systems auf. So kann<br />

Init Skripte nur ausführen, wenn sich der Runlevel<br />

ändert – was meist beim Start oder beim Beenden<br />

des Systems geschieht. Aber das Anstecken<br />

einer neuen Hardware (etwa einer USB-Festplatte)<br />

verursacht auch eine wichtige Veränderung des<br />

Systemzustands. Auf die sollte das Betriebssystem<br />

nach Wunsch der Anwender und Entwickler möglichst<br />

sofort reagieren.<br />

1 Die Runlevel finden Sie auch unter <strong>Ubuntu</strong> 10.10 noch, z. B. in „/ etc/ rc2.d“.<br />

Auftritt Upstart<br />

Aus diesen Gründen entschied das <strong>Ubuntu</strong>-<br />

Projekt, Init komplett zu ersetzen. Eine Handvoll<br />

in Entwicklung befindlicher Alternativen wurde<br />

untersucht, inklusive Apples Launchd und Solaris’<br />

Service Management Facility (SMF). Keine davon<br />

verfügte jedoch über die benötigte Funktionalität<br />

und die Kompatibilität zu <strong>Ubuntu</strong>s freier Softwarelizenz.<br />

Das Ergebnis war Upstart – ein komplett<br />

neues Initialisierungssystem.<br />

Upstart arbeitet ereignisgesteuert. Das bedeutet,<br />

dass es Jobs startet, wenn die Aufforderung dazu<br />

kommt. Es hakt nicht systematisch eine Liste vordefinierter<br />

Ereignisse ab. Dieses Design erlaubt es<br />

Upstart, mehrere Aufgaben zugleich auszuführen,<br />

wodurch es unnötige Wartezeiten vermeidet. Zudem<br />

reagiert es auch auf Systemveränderungen,<br />

die zwischen dem Hoch- und Runterfahren eines<br />

Systems stattfinden, was es flexibler macht. Upstart<br />

kann das Verhalten des alten Init-Systems<br />

nachahmen, indem es auf dieselben RC-Skripte<br />

reagiert, die es auf älteren Systemen findet. Diese<br />

Rückwärtskompatibilität war ein wichtiges Ziel;<br />

Upstart wurde bereits mit <strong>Ubuntu</strong> 6.10 (Edgy Eft)<br />

eingeführt, um als Init-Ersatz zu dienen. Die fortgeschrittenen<br />

Features kamen erst im Laufe der<br />

Zeit und in den folgenden Releases hinzu.<br />

Im traditionellen Init-Modell platziert jeder Dienst<br />

(Apache, Asterisk, LIRC etc.) ein Skript in /etc/<br />

init.d. Auf dieses verlinken dann die Dateien in<br />

den rc-Verzeichnissen. Die Namen der symbolischen<br />

Links beginnen entweder mit S (das betrifft<br />

Skripte, die beim Erreichen eines neuen Runlevels<br />

starten) oder K (für Skripte, die beim Verlassen eines<br />

Runlevels aktiv werden). Dem S und K folgen<br />

schließlich jeweils Nummern. Init führt die Skripte<br />

exakt in der durch diese Nummern konstituierten<br />

Reihenfolge aus.<br />

Skripte für Upstart-Jobs gehören hingegen in das<br />

Verzeichnis /etc/ init (Abbildung 2). Jedes Skript<br />

beinhaltet eine Beschreibung des Ereignisses oder<br />

der Ereignisse (engl. events), die das Skript aufrufen,<br />

und die Kommandos, die es dann ausführt.<br />

Upstart kennt alle auslösenden Regeln, damit es<br />

Glossar<br />

Runlevel: So nennt man die verschiedenen<br />

Systemzustände, die<br />

ein Rechner beim Booten durchläuft.<br />

Beim Erreichen eines Runlevels<br />

starten definierte Dienste des<br />

Systems; der Runlevel 0 fährt es<br />

zum Beispiel herunter.<br />

Daemons: Programme, die automatisch<br />

und ohne Zutun des Anwenders<br />

starten und Dienste anbieten.<br />

Das umfasst insbesondere<br />

Programme, die beim Erreichen<br />

bestimmter Runlevel starten.<br />

2 Die Konfigurationsdateien für Upstart-Jobs gehören in das Verzeichnis<br />

„/ etc/ init“; die Zwischenlösung „/ etc/ event.d“ hat ausgedient.<br />

3 Über den Befehl „emit“ verkündet der NetworkManager seinen aktuellen<br />

Zustand. Upstart reagiert darauf und führt die zugehörigen Jobs aus.<br />

www.ubuntu-user.de 01/2011<br />

UBUNTU<br />

user<br />

61

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!