Freigeben über


Verwenden von systemd zum Verwalten von Linux-Diensten mit WSL

Das Windows-Subsystem für Linux (WSL) unterstützt jetzt systemd, ein Init-System- und Service-Manager, der von vielen beliebten Linux-Distributionen wie Ubuntu, Debian und mehr verwendet wird. (Was ist systemd?)

Der Init-Systemstandard hat sich kürzlich von SystemV geändert, wobei systemd jetzt die Standardeinstellung für die aktuelle Version von Ubuntu ist, die mit dem wsl --install Befehlsstandard installiert wird. Linux-Distributionen außer der aktuellen Version von Ubuntu können weiterhin den WSL-Init verwenden, ähnlich wie SystemV init. Informationen zum Ändern in systemd finden Sie unter "Wie man systemd aktiviert".

Was ist systemd in Linux?

Laut systemd.io: "systemd ist eine Reihe grundlegender Bausteine für ein Linux-System. Es stellt einen System- und Dienst-Manager bereit, der als PID 1 ausgeführt wird und den Rest des Systems startet."

In erster Linie ein Init-System- und Service-Manager umfasst systemd Funktionen wie den On-Demand-Start von Daemons, die Wartung von Ein- und Automount-Punkten, Snapshot-Unterstützung und Prozessverfolgung mithilfe von Linux-Kontrollgruppen.

Die meisten großen Linux-Distributionen verwenden inzwischen systemd, sodass die Aktivierung auf WSL die Nutzungserfahrung noch näher an die von Bare-Metal-Linux heranführt. Sehen Sie sich die Videoankündigung mit systemd Demos oder Beispielen für die Verwendung von systemd unten an, um mehr darüber zu erfahren, was systemd zu bieten hat.

Wie kann systemd aktiviert werden?

Systemd ist jetzt die Standardeinstellung für die aktuelle Version von Ubuntu , die mit dem wsl --install Befehlsstandard installiert wird.

So aktivieren Sie systemd für alle anderen Linux-Distributionen, die auf WSL 2 ausgeführt werden (Ändern des Standardwerts von der Verwendung des systemv init):

  1. Stellen Sie sicher, dass Ihre WSL-Version 0.67.6 oder höher ist:

    • Führen Sie wsl --version aus, um zu überprüfen; wenn der Befehl einen Fehler Invalid command line option: --version auslöst, müssen Sie WSL aktualisieren.
    • um wsl --update zu aktualisieren, auszuführen oder herunterzuladen.
  2. Öffnen Sie eine Befehlszeile für Ihre Linux-Distribution und geben Sie cd / ein, um auf das Stammverzeichnis zuzugreifen, und listen Sie dann die Dateien mit ls auf. Sie sehen ein Verzeichnis mit dem Namen "usw", das die WSL-Konfigurationsdatei für die Verteilung enthält. Öffnen Sie diese Datei, damit Sie eine Aktualisierung mit dem Nano-Text-Editor vornehmen können, indem Sie Folgendes eingeben: nano /etc/wsl.conf.

  3. Fügen Sie diese Zeilen in der wsl.conf Datei hinzu, die Sie jetzt geöffnet haben, um init auf systemd umzustellen.

    [boot]
    systemd=true
    

    Systemd auf WSL 2 aktivieren

  4. Beenden Sie den Nano-Text-Editor (STRG+X, geben Sie Y ein, um Ihre Änderung zu speichern und mit der enter Taste zu bestätigen).

  5. Anschließend müssen Sie die Linux-Verteilung schließen. Sie können den Befehl wsl.exe --shutdown in PowerShell verwenden, um alle WSL-Instanzen neu zu starten.

  6. Sobald Sie die Linux-Verteilung neu starten, wird systemd ausgeführt. Sie können sie überprüfen, indem Sie den Befehl systemctl status verwenden, um den Ausführungszustand und den Befehl systemctl list-unit-files --type=serviceanzuzeigen, der den Status aller Dienste anzeigt, die Mit Ihrer Linux-Verteilung verbunden sind.

Wenn Ihre Linux-Distribution Debian/Ubuntu/Kali Rolling ist, sollten Sie nicht nur das systemd-Paket installiert haben, sondern auch sicherstellen, dass das systemd-sysv-Paket installiert ist.

sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y

Erfahren Sie mehr über die Konfiguration erweiterter Einstellungen in WSL, einschließlich des Unterschieds zwischen den wsl.conf (verteilungsspezifischen) und .wslconfig (globalen) Konfigurationsdateien, zum Aktualisieren von AutoMount-Einstellungen usw.

Video zur Systemd-Demo

Microsoft hat sich mit Canonical zusammengetan, um systemd support to WSL zu bringen. Sehen Sie sich Craig Loewen (PM für WSL bei Microsoft) und Oliver Smith (PM für Ubuntu auf WSL bei Canonical) an, wie sie die systemd-Unterstützung ankündigen und einige Demos der Möglichkeiten zeigen.

Systemierte Beispiele

Einige Beispiele für Linux-Anwendungen, die von systemd abhängig sind, sind:

  • snap: ein Softwarepaketierungs- und Bereitstellungssystem, das von Canonical für Betriebssysteme entwickelt wurde, die den Linux-Kernel und das systemd init-System verwenden. Die Pakete werden als "Snaps" bezeichnet, das Befehlszeilentool zum Erstellen von Snaps heißt "Snapcraft", das zentrale Repository, in dem Snaps heruntergeladen und installiert werden können, wird "Snap Store" genannt. Der Daemon, der zum Ausführen von Snaps erforderlich ist – einschließlich des Downloads aus dem Store, des Mountens an den richtigen Ort, der Einschränkung und des Ausführens von Anwendungen – heißt "snapd". Das gesamte System wird manchmal als "snappy" bezeichnet. Führen Sie den Befehl aus: snap install spotify.

  • microk8s: eine Open-Source-Kubernetes-Distribution mit niedrigem Betriebsaufwand für die minimale Produktion, die die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen automatisiert. Folgen Sie den Anweisungen zum Installieren von MicroK8s auf WSL2, sehen Sie sich das Lernprogramm "Erste Schritte" an, oder schauen Sie sich das Video auf Kubernetes unter Windows mit MicroK8s und WSL 2 an.

  • systemctl: ein Befehlszeilenprogramm, das zum Steuern und Überprüfen systemd verwendet wird und Ihnen dabei hilft, mit Diensten in Ihrer Linux-Verteilung zu interagieren. Probieren Sie den Befehl aus: systemctl list-units --type=service Um zu sehen, welche Dienste verfügbar sind, und deren Status.

Einige verwandte Tutorials, die Möglichkeiten zeigen, systemd zu verwenden:

Wie wirkt sich die Aktivierung von Systemd auf die WSL-Architektur aus?

Die Aktivierung der Unterstützung für systemd erforderte Änderungen an der WSL-Architektur. Da systemd PID 1 erfordert, wird der in der Linux-Verteilung gestartete WSL-Prozess zu einem untergeordneten Prozess des Systems. Da der WSL-Init-Prozess für die Bereitstellung der Infrastruktur für die Kommunikation zwischen den Linux- und Windows-Komponenten verantwortlich ist, musste diese Hierarchie geändert werden, um einige der Annahmen zu überdenken, die mit dem WSL-Init-Prozess vorgenommen wurden. Zusätzliche Änderungen mussten vorgenommen werden, um ein sauberes Herunterfahren zu gewährleisten, da dieses nun von Systemd gesteuert wird, und um die Kompatibilität mit WSLg sicherzustellen, der Komponente von WSL, die Linux-Grafische Benutzeroberflächen (GUIs) oder Linux-Anwendungen ausführt, die in Fenstern statt in der Befehlszeile angezeigt werden.

Außerdem ist es wichtig zu beachten, dass systemd-Dienste bei diesen Änderungen ihre WSL-Instanz nicht aktiv halten. Ihre WSL-Instanz bleibt weiterhin aktiv, so wie es vor diesem Update war, was Sie in diesem Blogbeitrag zur Unterstützung von Hintergrundaufgaben ab 2017 lesen können.