Was ist Systemd?
Systemd ist das Standard-Init-System und der Dienstmanager für die meisten modernen Linux-Distributionen. Es ist dafür verantwortlich, das System nach dem Laden des Kernels in der richtigen Reihenfolge zu initialisieren. Eine einfache Möglichkeit zu prüfen, ob Ihr System es verwendet, besteht darin, zu sehen, ob das Verzeichnis /usr/lib/systemd existiert. Wenn ja, verwenden Sie wahrscheinlich ein von systemd verwaltetes System.
Der Systemd-Bootprozess
Anstelle starrer sequenzieller Skripte verwendet systemd das Konzept der "Ziele" (Goals), um Ihr System in einen funktionsfähigen Zustand zu versetzen. Es identifiziert ein primäres Ziel oder einen target und arbeitet daran, dessen Abhängigkeiten zu erfüllen. Dieser Ansatz ermöglicht mehr Flexibilität und Parallelisierung beim Start. Ein typischer Bootprozess, der von systemd verwaltet wird, folgt diesen Schritten:
- systemd lädt zuerst seine Konfigurationsdateien aus Verzeichnissen wie
/etc/systemd/systemund/usr/lib/systemd/system. - Es identifiziert dann das Standard-Bootziel, was typischerweise ein symbolischer Link namens
default.targetist. - Schließlich löst systemd alle Abhängigkeiten für dieses Ziel auf und aktiviert die notwendigen Units, um den gewünschten Systemzustand zu erreichen.
Systemd Targets verstehen
Targets in systemd sind analog zu den Runlevels im älteren SysV-Init-System. Sie repräsentieren verschiedene Zustände, in denen sich das System befinden kann. Häufige Targets sind:
poweroff.target: Fährt das System herunter.rescue.target: Bootet in eine Einzelbenutzer-Shell zur Wartung.multi-user.target: Eine Standard-Multi-User-Umgebung mit Netzwerk, aber ohne grafische Oberfläche.graphical.target: Eine vollständige Multi-User-Umgebung mit Netzwerk und grafischer Benutzeroberfläche (GUI).reboot.target: Startet das System neu.
The default.target ist ein symbolischer Link, der auf das Ziel zeigt, in das das System standardmäßig bootet, oft graphical.target auf Desktop-Systemen.
Kernkonzept: Systemd Units
Die grundlegenden Objekte, die systemd verwaltet, werden als "Units" bezeichnet. Eine Unit ist eine Konfigurationsdatei, die eine Ressource oder einen Dienst beschreibt. Die Stärke der system d-Architektur liegt in ihrer Fähigkeit, verschiedene Arten von Ressourcen zu verwalten, nicht nur Dienste. Jeder Unit-Typ wird durch seine Dateiendung identifiziert. Die häufigsten Typen sind:
- Service Units (
.service): Diese verwalten System-Daemons oder Dienste, wie einen Webserver oder eine Datenbank. - Mount Units (
.mount): Diese steuern Dateisystem-Mountpoints. - Target Units (
.target): Diese werden verwendet, um andere Units zu gruppieren und Synchronisationspunkte während des Bootvorgangs zu erstellen.
Wenn das System beispielsweise in graphical.target bootet, stellt diese Target-Unit sicher, dass alle ihre Abhängigkeiten, wie multi-user.target und verschiedene Service-Units wie network.service, zuerst gestartet werden.