Übersicht
Wenn der Bootvorgang eines Linux-Servers oder -PCs länger dauert als gewöhnlich, sollten Sie die Ursache ermitteln und unnötige Verzögerungen reduzieren. Mit dem Befehl systemd-analyze können Sie problemlos die gesamte Bootzeit messen, Dienste identifizieren, die Engpässe verursachen, und Unit-Dateien überprüfen. In diesem Artikel behandeln wir wichtige Analysebefehle und Optimierungstechniken, die Sie direkt in der Praxis anwenden können.
1. Bootzeit überprüfen und abschnittsweise Verzögerungen messen (time & blame)
Der Befehl systemd-analyze misst und zeigt die für den Bootvorgang benötigte Gesamtzeit sowie die Initialisierungszeiten von Kernel und Userspace (Benutzerbereich) an.
Anhand der Ausgabe lässt sich erkennen, dass das System insgesamt 315ms benötigte, um zu booten und das Ziel graphical.target der grafischen Oberfläche zu erreichen.
⚙️ [Wichtigste Optionen]
time : Gibt die beim Booten im Kernel und Userspace verbrachte Gesamtzeit aus (Standardverhalten).blame : Gibt eine Liste der Dienste aus, die während der Initialisierung Verzögerungen verursacht haben, absteigend sortiert nach benötigter Zeit.critical-chain : Zeigt den Abhängigkeitsbaum der Dienste auf dem kritischen Pfad (zeitkritische Kette) an, der die Boot-Verzögerung verursacht.plot : Gibt den Zeitablauf aller Dienste während des gesamten Bootvorgangs als SVG-Grafikdatei aus.dot : Erstellt die Abhängigkeitsbeziehungen zwischen Diensten im Graphviz-dot-Format.

Der Befehl systemd-analyze blame | head -n 10 sortiert und zeigt die Top 10 der beim Booten ausgeführten Dienste mit der längsten Initialisierungszeit in absteigender Reihenfolge an.
Das Ergebnis zeigt, dass systemd-resolved.service (68ms) und ldconfig.service (67ms) während der Boot-Initialisierung die meiste Zeit in Anspruch genommen haben.

2. Den kritischen Pfad der Boot-Verzögerung zurückverfolgen (critical-chain)
Der Befehl systemd-analyze critical-chain gibt den Abhängigkeitsbaum (kritischen Pfad) der Dienste aus, die einen direkten Einfluss auf den Abschluss des Systemstarts hatten.
In der Ausgabe steht die Angabe nach dem @-Zeichen für den Zeitpunkt, zu dem eine Unit aktiviert oder gestartet wurde; die Angabe nach dem +-Zeichen gibt die Zeit an, die für die Ausführung der Unit selbst benötigt wurde.
Am Ergebnisbaum lässt sich erkennen, dass bis zum Erreichen von graphical.target (315ms) Dienste wie systemd-resolved.service (68ms) und systemd-journald.service (39ms) seriell hintereinander ausgeführt wurden und somit den entscheidenden Engpass darstellen, der die gesamte Boot-Verzögerung verursacht hat.

Der Befehl systemd-analyze critical-chain networking.service verfolgt gezielt nur die kritische Kette bis zum Start eines bestimmten Dienstes (hier networking.service).
Dies ist besonders nützlich, wenn Sie anstelle des gesamten Systempfads nur die Engpass-Abhängigkeiten eines bestimmten Netzwerk- oder Backend-Dienstes isoliert analysieren möchten.

3. Visualisierten SVG-Report der Boot-Timeline erstellen (plot)
Um die Boot-Analyseberichte strukturiert zu speichern und zu verwalten, erstellen Sie mit dem Befehl mkdir -p ~/systemd-reports ein dediziertes Verzeichnis.

Der Befehl systemd-analyze plot > ~/systemd-reports/boot-analysis.svg generiert und speichert die Startzeitpunkte und Ausführungsdauern jedes einzelnen Dienstes während des gesamten Bootvorgangs als SVG-Grafikdatei in Form einer visuellen Timeline.
Auf diese Weise lassen sich parallele Ausführungsabläufe und Verzögerungsphasen zwischen Diensten, die anhand reiner Textprotokolle nur schwer zu erkennen sind, intuitiv in einem grafischen Diagramm nachvollziehen.

Der Befehl ls -lh ~/systemd-reports/boot-analysis.svg überprüft die Existenz der erstellten SVG-Berichtsdatei sowie Detailinformationen wie die Dateigröße (59KB).
Die erzeugte SVG-Datei kann in einem Webbrowser oder Bildbetrachter geöffnet werden, um das detaillierte Diagramm der Boot-Timeline visuell zu analysieren.

4. Konfigurationsfehler und Sicherheitsstatus von Service-Units überprüfen (verify & security)
Der Befehl sudo systemd-analyze verify /lib/systemd/system/ssh.service prüft die angegebene Unit-Datei vorab auf Syntaxfehler oder fehlende Einstellungen.
Wenn bei der Ausführung keine Meldung ausgegeben wird, bedeutet dies, dass die entsprechende Service-Unit-Datei keine syntaktischen Fehler oder Fehlkonfigurationen aufweist.

Der Befehl systemd-analyze security ssh.service diagnostiziert die Sicherheitsisolierungseinstellungen und das Systemexpositionsniveau (Security Exposure) der angegebenen Service-Unit.
Anhand der Ausgabe können Sie den Status zentraler Sicherheitseinstellungen wie Root-Rechte-Ausführung (User=), Gerätezugriffskontrolle (PrivateDevices=) und Schutz vor Rechteausweitung (NoNewPrivileges=) sowie den detaillierten Risiko-Exposure-Score einsehen.

In diesem Leitfaden haben wir uns angesehen, wie Sie mit dem Befehl systemd-analyze Engpass-Dienste identifizieren und optimieren können, die Verzögerungen beim Booten verursachen.
Deaktivieren oder bereinigen Sie unnötige Dienste, um eine spürbar schnellere und reibungslosere Linux-Boot-Umgebung zu schaffen.