Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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):
Stellen Sie sicher, dass Ihre WSL-Version 0.67.6 oder höher ist:
Ö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 mitlsauf. 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.Fügen Sie diese Zeilen in der
wsl.confDatei hinzu, die Sie jetzt geöffnet haben, um init auf systemd umzustellen.[boot] systemd=true
Beenden Sie den Nano-Text-Editor (STRG+X, geben Sie Y ein, um Ihre Änderung zu speichern und mit der
enterTaste zu bestätigen).Anschließend müssen Sie die Linux-Verteilung schließen. Sie können den Befehl
wsl.exe --shutdownin PowerShell verwenden, um alle WSL-Instanzen neu zu starten.Sobald Sie die Linux-Verteilung neu starten, wird systemd ausgeführt. Sie können sie überprüfen, indem Sie den Befehl
systemctl statusverwenden, um den Ausführungszustand und den Befehlsystemctl 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.
Olivers Tutorials, die auf diesen Demos im Ubuntu-Blog basieren - umfasst "Erstellen einer Nextcloud-Instanz in Minuten mit Snap auf WSL", "Verwalten Sie Ihre Webprojekte mit LXD" und "Führen Sie einen .Net Echo Bot als systemd-Dienst auf Ubuntu WSL aus"
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=serviceUm 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.
Windows Subsystem for Linux