1842947

Schneller Linux-Start über Systemd - so geht's

25.11.2013 | 11:04 Uhr |

Der Init-Daemon sorgt für die Bereitschaft vieler Dienste beim Systemstart. Das kann aber dauern. Oft setzt man daher auf das effiziente Systemd, um Boot-Zeiten zu verkürzen.

Bis ein Linux-System nach dem Boot die Benutzeranmeldung präsentiert, ist im Hintergrund schon viel geschehen: Hardware-Treiber wurden initialisiert, Festplatten eingehängt und System- sowie Server-Prozesse gestartet. Diese Vorbereitungen übernimmt der Init-Daemon, der sich als erster Prozess um alle nachfolgenden Prozesse kümmert. Traditionell nutzte Linux dafür das teilweise von Unix geerbte System-V-Init, das Init-Scripts in den Unterverzeichnissen von „/etc/init.d“ nacheinander in einer vorkonfigurierten Reihenfolge nach Runlevel und Dateiname abarbeitet. Wie lange das System damit beschäftigt ist, war beim Einsatz von Linux auf Servern Nebensache, denn Reboots sind im Serverbetrieb selten und meist sowieso mit längerer, geplanter Downtime verbunden. Am Desktop erwartet der Anwender hingegen ansprechende Ladezeiten.

Schneller booten dank Systemd

Wie lange dauert der Systemstart? Zur Analyse der Startzeiten und der Auflistung aller ausgeführten Aktionen kann Systemd ein Diagramm im SVG-Format erzeugen.
Vergrößern Wie lange dauert der Systemstart? Zur Analyse der Startzeiten und der Auflistung aller ausgeführten Aktionen kann Systemd ein Diagramm im SVG-Format erzeugen.

Desktop-Anwender starten Ihren PC oder das Notebook häufig neu. Das ältere System-V-Init ist deshalb ein Auslaufmodell, und an dessen Stelle tritt bei vielen Distributionen das noch recht junge, 2010 erstmals vorgestellte Systemd. Dessen Entwickler, Lennart Poettering und Kay Sievers, haben sich unter anderem von Launchd inspirieren lassen, das sich bei Apples Mac-OS und iOS um den Betriebssystemstart kümmert. Systemd unterstützt Parallelisierung, um mehrere Aktionen und Dienste gleichzeitig auszuführen. Es arbeitet im Gegensatz zu System-V-Init nicht mehr mit Start-Scripts, die beim Boot eine eigens gestartete, langsame Shell abarbeiten muss. Damit Prozesse nicht lange aufeinander warten müssen, bietet Systemd einen Puffer für Prozess-Sockets. Ein Systemprozess wie D-Bus, der in das Syslog schreiben will, legt seine Daten erst mal in diesem Puffer ab, bis auch Syslog vollständig gestartet ist. Zudem kann kann Systemd Dienste nach Bedarf ausführen, was besonders auf Desktop-Systemen von Vorteil ist: So brauchen Anwender beispielsweise das Drucksystem CUPS selten gleich zum Systemstart. Es genügt, wenn CUPS erst dann in Aktion tritt, wenn ein Programm etwas an den Drucker senden will, und Systemd kümmert sich dann um den nachträglichen Start.

Tipps und Tricks zum Linux-Desktop
Schrittweiser Umbau
Eine weitere Aufgabe, die der neue Init-Prozess stemmen will, ist die Standardisierung der Startumgebung, denn hier gingen Linux-Distributionen lange ihre eigenen Wege. Grundlegende Dienste bekamen unterschiedliche Namen, und Init-Scripts waren an verschiedenen Orten im Dateisystem untergebracht, was immer wieder zu lästigen Unterschieden bei der Administration führte. Da Systemd eine Neuentwicklung mit größeren Umbauarbeiten ist, geht es auch gleich die dringend nötige Konsolidierung an.

Auch wenn der Umstieg zu Systemd viele Vorteile bietet, bricht es mit Gewohnheiten und bringt neue Befehle und Scripts zur Konfiguration, zum Starten und Beenden von Prozessen. Der Wechsel geht deshalb nicht von heute auf morgen, und Systemd unterstützt deshalb abwärtskompatibel auch herkömmliche Start-Scripts, was den Distributionen mehr Zeit zum Umbau ihrer Startumgebungen gibt. Fedora hat Systemd mit Version 15 eingeführt, Open Suse seit 12.1 und Mageia ab Version 2. Bei Debian ist noch das alte System-V-Init vorinstalliert, Systemd liegt aber optional in den Paketquellen zum Nachrüsten.

So geht's: Linux über das Netzwerk booten

Dienste mit Systemd verwalten

Übersicht zu Diensten, Sockets, Geräten und Mount-Punkten, die Systemd verwaltet: Distributionen mit Systemd bringen grafische Tools wie Systemadm als Konfigurationshilfe mit.
Vergrößern Übersicht zu Diensten, Sockets, Geräten und Mount-Punkten, die Systemd verwaltet: Distributionen mit Systemd bringen grafische Tools wie Systemadm als Konfigurationshilfe mit.

Wer eine dieser Distributionen einsetzt, die bereits zu Systemd gewechselt sind, erhält auch einen neuen Werkzeugkasten zur Konfiguration von Prozessen, um Server-Dienste zu aktivieren, anzuhalten oder neu zu starten. Die Kenntnis der Befehle und Tools ist nicht nur nützlich, wenn man einen Server administriert, sondern auch am Desktop –etwa um unnnötige Dienste abzuschalten. Die wichtigsten Befehle führen Sie mit root-Privilegien oder mittels sudo über das Tool systemctl in der Kommandozeile aus. Eine Liste aller aktuell laufenden Dienste erhalten Sie nach

systemctl -t service

angezeigt. Die Liste können Sie mit den Pfeiltasten abrollen und mit der Q-Taste schließen. Alle Dienste, auch jene, die gerade inaktiv sind, zeigt der zusätzliche angehängte Parameter -a. Der Status eines Diensts lässt sich auch direkt mit dem Befehl

systemctl status [Dienst].service

abfragen. Zum Beenden und Starten eines Dienstes geben Sie

systemctl stop [Dienst].service

beziehungsweise

systemctl start [Dienst].service

ein, während der Parameter restart einen Dienst neu startet. Zum permanenten Deaktivieren dient

systemctl disable [Dienst].service

und um einen Dienst wieder zum Systemstart einzuschalten, geben Sie systemctl enable [Dienst].service

ein. Auch die Runlevel-Konfiguration ist jetzt die Sache von Systemd, die hier „targets“ heißen. In einen Runlevel ohne grafische Oberfläche wechseln Sie beispielsweise nicht mehr mit telinit, sondern mit dem Befehl

systemctl isolate multi-user.target

Das entspricht unter Fedora und Open Suse dem früheren Runlevel 3.

SSDs unter Linux optimal einsetzen
Hilfe bei der Administration
Auch wenn die Administration von Diensten generell eher ein Job für die Kommandozeile ist, so gibt es auch für Systemd bei einigen Distributionen mit Systemadm ein grafisches Werkzeug. Bei Fedora, Open Suse und Mageia installieren Sie es mit dem Paket „systemd-ui“ über den jeweiligen Paketmanager. In Debian heißt das Paket „systemd-gui“. Das Tool bietet eine Übersicht zu den Prozessen von Systemd und erlaubt das Starten und Stoppen von Diensten. Dabei sind root-Rechte erforderlich:

sudo -H systemadm

Systemd protokolliert die Startzeiten des Systems; zusätzliche Programme benötigen Sie zur Auswertung nicht. Dazu bringt der neue Init-Daemon mit systemd-analyze schon sein eigenes Tool mit. Folgender Befehl erzeugt ein hübsches Diagramm im SVG-Format:

systemd-analyze plot >diagramm.svg

Zum Betrachten der resultierenden SVG-Grafik genügt dann jeder Internet-Browser.

Ubuntu Upstart statt Systemd

Canonical setzt bei Ubuntu auf eine Eigenentwicklung, die das alte System-V-Init ersetzt und ebenfalls den parallelen Start von Diensten und Prozessen unterstützt: Upstart arbeitet seit Ubuntu 6.10 als Init-Daemon und hatte auch in Fedora 9 bis 15 ein Gastspiel. Obwohl Systemd gegenüber Upstart inzwischen größere Verbreitung hat und sich in absehbarer Zeit als Quasi-Standard durchsetzen wird, gibt es für Ubuntu keine Pläne, Upstart als Init-Daemon zu ersetzen. Denn die Init-Scripts von Ubuntu sind mittlerweile speziell für Upstart angepasst und zu Systemd nicht kompatibel. Eine Umstellung wäre zu aufwendig. Systemd ist deshalb Nutzern von Debian, Open Suse, Fedora, Mageia und Arch Linux vorbehalten.

0 Kommentare zu diesem Artikel
1842947