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