Verwenden von systemd zum Verwalten von Linux-Diensten mit WSL
Artikel
Windows-Subsystem für Linux (WSL) unterstützt jetzt systemd, ein Init-System- und Dienst-Manager, der von vielen beliebten Linux-Distributionen wie Ubuntu und Debian verwendet wird. (Was ist systemd?).
Der Systemstandard für init hat sich kürzlich geändert. Statt SystemV ist nun systemd der Standard für die aktuelle Ubuntu-Version, die mit dem wsl --install-Befehl standardmäßig installiert wird. Linux-Distributionen außer der aktuellen Version von Ubuntu können weiterhin WSL-Init verwenden, ähnlich wie SystemV-Init. Informationen zum Wechseln zu systemd finden Sie unter Aktivieren von systemd.
Was ist systemd in Linux?
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.“
Systemd, in erster Linie ein Init-System- und Dienst-Manager, umfasst Features wie bedarfsgesteuerter Start von Daemons, Wartung des Punkts für Einbindung und automatische Einbindung, Momentaufnahmenunterstützung und Nachverfolgung von Prozessen mithilfe von Linux-Steuerungsgruppen.
Die meisten großen Linux-Distributionen führen jetzt systemd aus, sodass bei Aktivierung auf WSL die Benutzererfahrung noch näher an Bare-Metal-Linux liegt. 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.
So aktivieren Sie systemd für alle anderen Linux-Distributionen, die auf WSL 2 ausgeführt werden (Ändern des Standardwerts von der Verwendung von systemv-Init):
Öffnen Sie eine Befehlszeile für Ihre Linux-Distribution, und geben Sie cd / ein, um auf das Stammverzeichnis zuzugreifen, und dann ls zum Auflisten der Dateien. Sie sehen ein Verzeichnis mit dem Namen „etc“, das die WSL-Konfigurationsdatei für die Distribution 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.
Fügen Sie diese Zeilen der jetzt geöffneten wsl.conf-Datei hinzu, um zu systemd-Init zu wechseln:
Bash
[boot]
systemd=true
Beenden Sie den Nano-Text-Editor (STRG+X, wählen Sie Y aus, um Ihre Änderung zu speichern). Anschließend müssen Sie die Linux-Distribution schließen. Sie können mit dem Befehl wsl.exe --shutdown in PowerShell alle WSL-Instanzen neu starten.
Sobald die Linux-Distribution neu gestartet ist, wird „systemd“ ausgeführt. Sie können die Verwendung des Befehls bestätigen: systemctl list-unit-files --type=service, wodurch der Status aller Dienste angezeigt wird, die Ihrer Linux-Distribution zugeordnet sind.
Erfahren Sie mehr über die Konfiguration erweiterter Einstellungen in WSL, einschließlich des Unterschieds zwischen den Konfigurationsdateien wsl.conf (verteilungsspezifisch) und .wslconfig (global), das Aktualisieren von Einstellungen für die automatische Einbindung usw.
Systemd-Demovideo
In Partnerschaft mit Canonical stellt Microsoft die systemd-Unterstützung von WSL bereit. Näheres erfahren Sie in der Ankündigung von Craig Loewen (PM für WSL bei Microsoft) und Oliver Smith (PM für Ubuntu auf WSL bei Canonical) zur systemd-Unterstützung. Außerdem können Sie sich anhand einiger Demos über die Möglichkeiten informieren, die daraus resultieren.
Einige Beispiele für Linux-Anwendungen, die von systemd abhängig 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/installiert werden können, wird als „Snap Store“ bezeichnet, und der Daemon, der zum Ausführen von Snaps erforderlich ist (aus dem Store herunterladen, vor Ort einbinden, einschränken und Apps aus ihnen heraus ausführen), wird als „snapd“ bezeichnet. Das gesamte System wird manchmal als „snappy“ bezeichnet. Führen Sie den folgenden Befehl aus: snap install spotify.
systemctl: Ein Befehlszeilenprogramm, das zum Steuern und Überprüfen von systemd verwendet wird und Ihnen hilft, mit Diensten in Ihrer Linux-Distribution zu interagieren. Probieren Sie den Befehl systemctl list-units --type=service aus, um zu sehen, welche Dienste verfügbar sind, und deren Status zu erfahren.
Einige zugehörige Lernprogramme, in denen die Verwendung von systemd veranschaulicht wird:
Wie wirkt sich die Aktivierung von systemd auf die WSL-Architektur aus?
Das Aktivieren der Unterstützung für systemd erforderte Änderungen an der WSL-Architektur. Da systemd PID 1 erfordert, wird der in der Linux-Distribution gestartete WSL-Init-Prozess zu einem untergeordneten Prozess des Systems. Da der WSL-Init-Prozess für die Bereitstellung der Infrastruktur zur Kommunikation zwischen den Linux- und Windows-Komponenten verantwortlich ist, mussten einige der Annahmen, die mit dem WSL-Init-Prozess gemacht wurden, neu überdacht werden, um diese Hierarchie zu ändern. Zusätzliche Änderungen mussten vorgenommen werden, um ein sauberes Herunterfahren (da das Herunterfahren jetzt von systemd gesteuert wird) und Kompatibilität mit WSLg sicherzustellen, der Komponente von WSL, die grafische Linux-Benutzeroberflächen (GUIs) ausführt, oder den Linux-Apps, die in Fenstern statt in der Befehlszeile angezeigt werden.
Es ist auch wichtig zu beachten, dass mit diesen Änderungen systemd-Dienste Ihre WSL-Instanz NICHT am Leben erhalten. Ihre WSL-Instanz bleibt auf die gleiche Weise aktiv wie vor diesem Update, was Sie in diesem Blogbeitrag zur Unterstützung von Hintergrundaufgaben von 2017 lesen können.
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
Feedback zu Windows Subsystem for Linux
Windows Subsystem for Linux ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
In diesem Modul erfahren Sie, wie Sie das Windows-Subsystem für Linux (WSL) mit Visual Studio Code (VS Code) verwenden. Wir untersuchen den Installationsprozess und die Grundlagen der Verwendung von WSL. Darüber hinaus installieren und verwenden wir die WSL-Erweiterung von Visual Studio Code. Schließlich zeigen wir, wie Sie Python-Code in VS Code in unserer WSL-Umgebung debuggen und ausgeführen.