Upstart räumt mit den alten unübersichtlichen Runlevels auf, bietet mit den einfach aufgebauten Jobs eine viel simplere Konfiguration und beschleunigt durch die Parallelisierung den Systemstart. Der System-V-Init-Ersatz ist jedoch kein Allheilmittel: Je nachdem, wie die Jobs voneinander abhängen, muss Upstart im schlimmsten Fall doch wieder stur einen nach dem anderen abarbeiten.
Upstart befindet sich immer noch in der Entwicklung. Mit jeder neuen Version und jedem Ubuntu-Release kommen neue Funktionen oder kleinere Verbesserungen hinzu. In Zukunft soll es beispielsweise auch Ereignisse zeitgesteuert auslösen und somit gleichzeitig die Aufgaben von »cron
«
übernehmen. Die Entwickler von Upstart weisen deshalb auch ausdrücklich darauf hin, dass sich der Aufbau der Konfigurationsdateien durchaus noch ändern kann – was auch laufend geschieht. So kam in Version 1.3 das Schlüsselwort »kill signal
«
hinzu, mit dem man in einer Job-Datei das SIGTERM-Signal abfangen kann.
Den aktuellen Entwicklungsstand findet man auf der Launchpad-Seite [2], die Upstart-Homepage zeigte bei Redaktionsschluss immer noch auf die veraltete Version 0.6.7 [1]. Wer eigene Jobs schreiben oder tiefer in ihre Programmierung einsteigen möchte, sollte unbedingt das ausführliche Cookbook studieren [3]. Es enthält viele wertvolle Tipps sowie Standardlösungen für häufig auftauchende Probleme und Fragen.
Auf Upstart trifft man im Moment lediglich in Ubuntu, seinen offiziellen Derivaten (wie Kubuntu), den direkt darauf aufbauenden Distributionen, wie Linux-Mint, im bereits erwähnten RHEL 6 und in Googles Chromium OS. Die Tage in RHEL dürften allerdings gezählt sein, ist doch Fedora seit Version 15 auf den Konkurrenten »systemd
«
umgestiegen [4]. Ihn favorisieren auch viele Distributionen. Da Canonical sein eigenes Baby sehr wahrscheinlich nicht verstoßen wird, dürfen sich Administratoren zukünftig wohl mit gleich mehreren Init-Varianten herumschlagen. (ofr)
Troubleshooting
Auftauchende Probleme protokolliert Upstart im Syslog – unter Ubuntu 11.10 also beispielsweise in »/var/log/syslog
«
(Abbildung 2). Wem die dort hinterlegten Informationen nicht ausreichen, macht Upstart mit
initctl log-priority info
oder sogar
initctl log-priority debug
noch gesprächiger. Im letzten Fall protokolliert es jeden einzelnen seiner Schritte. Das Kommando nützt freilich nichts, wenn die Probleme schon während des Bootens aufgetaucht sind. Dann kann man dem Kernel den Parameter »--verbose
«
oder für die noch geschwätzigere Variante »--debug
«
anhängen (unter Ubuntu indem man nach dem Einschalten die [Umschalt]-Taste gedrückt hält, dann [e] tippt, mit den Pfeiltasten zur Zeile »linux /boot/vmlinuz ...
«
fährt, [Ende] drückt, mit englischer Tastaturbelegung »--debug
«
anhängt und [Strg+X] bemüht). Solange noch kein Syslog-Daemon aktiv ist, wandern alle Meldungen in das Kernel-Log. Man muss folglich sowohl das Kernel-Log als auch das Syslog im Auge behalten. Eine konkrete Job-Datei »messen.conf
«
klopft
init-checkconf messen.conf
auf Tippfehler ab. Anschließend mahnt
initctl check-config
noch alle in »/etc/init
«
abgelegten Jobs an, deren Ereignis-Bedingungen sich nie erfüllen – die also von sich aus niemals starten oder stoppen werden. Die beiden Befehle gibt es in dieser Form übrigens erst seit Upstart 1.3, das sein Debüt in Ubuntu 11.10 feierte. Schon seit Upstart 0.6.4 lässt sich auch ein Überblick über alle Jobs ausgeben:
initctl show-config -e > ausgabe.txt
Die dabei entstandene Datei wandelt auf Wunsch »initctl2dot
«
in ein Graphviz-Diagramm um:
initctl2dot -f ausgabe.txt -o ausgabe.dot
aus dem Graphviz wiederum einen Abhängigkeitsgraphen zeichnet:
dot ausgabe.dot -Tps > diagramm.ps
Das Ergebnis ist dann eine Postscript-Datei, in der man für jeden Job sieht, von welchen anderen er abhängt beziehungsweise welche seiner Kollegen nur auf seinen Start warten (Abbildung 6). Das Diagramm ist übrigens nicht ganz so verwirrend, wie es vielleicht auf den ersten Blick erscheint.
Infos
Vor allem in Testumgebungen ist es mühsam, sich immer wieder aufs Neue einloggen zu müssen. Ein automatisches Login lässt sich außer auf dem grafischen Desktop auch auf der Linux-Console realisieren.