Microsoft hat die Veröffentlichung des Tools WSL 3.0 (Windows Subsystem for Linux) vorgestellt, das es ermöglicht, Linux-Anwendungen unter Windows auszuführen. Der neue Branch zeichnet sich durch die Möglichkeit aus, Linux-Container unter Windows auszuführen und wechselt zur Verwendung des Linux-Kernels 6.18. Der Code der in WSL verwendeten Befehlszeilen-Utilities, Hintergrundprozesse für Linux-Umgebungen, Dienste zur Ausführung von Containern und der virtuellen Maschine sowie des grafischen Stacks wslg ist unter der MIT-Lizenz offen. Die Änderungen für den Linux-Kernel werden unter der GPLv2-Lizenz geliefert.
WSL bietet eine virtuelle Maschine mit einem vollständigen Linux-Kernel (basierend auf Branch 6.18), in der Linux-Distributionen ausgeführt werden können. Der Kernel umfasst spezifische Änderungen für WSL, wie Optimierungen zur Reduzierung der Startzeit und des Speicherverbrauchs, die Möglichkeit, von Linux-Prozessen freigegebenen Speicher an Windows zurückzugeben und Einstellungen zur Ausschaltung überflüssiger Treiber und Subsysteme. Das System wird in einem separaten Disk-Image (VHD) mit einem ext4-Dateisystem und einem virtuellen Netzwerkadapter installiert.
Der neue Branch enthält Tools zur Erstellung, Bereitstellung und Ausführung von Linux-Containern unter Windows, einschließlich der Befehlszeilenschnittstelle wslc (WSL Containers) und einer zugehörigen API, die es ermöglicht, Linux-Container aus Windows-Anwendungen heraus auszuführen. Die Hauptfunktionen von wslc umfassen:
- Operationen zur Verwaltung des Lebenszyklus von Containern, wie das Erstellen, Starten, Stoppen, Exportieren, Bereinigen, Inspizieren, Überprüfen des Betriebs, Übertragen von Aktivitäten zu Containern, Kopieren von Dateien in Container und aus ihnen.
- Einschränkung des CPU- und Speicherverbrauchs einzelner Container.
- Erstellen, Hochladen, Versenden, Importieren, Speichern und Validieren von Systemabbildern. Befehle zum Anzeigen von Listen verfügbaren Abbildungen. Stapeloperationen mit mehreren Abbildungen. Möglichkeit, mehrere Abbildungen in einem einzigen tar-Archiv zu verpacken.
- Erstellung und Verwaltung virtueller Netzwerke. Anschluss von Containern an mehrere Netzwerke. Erstellung eigener Netzwerktypen. Port-Forwarding.
- Erstellen, Anzeigen und Löschen von Partitionen. Arbeiten mit virtuellen Festplatten (VHD).
- Zugriff auf die GPU aus Containern und Bereitstellung von Bibliotheken für nicht privilegierte Benutzer zur Arbeit mit der GPU.
- Erstellen von Sitzungen nach Bedarf, Zuweisen von Namen zu Sitzungen, anpassbarer Speicherort.
- SDK mit API zur Automatisierung der Arbeiten mit Containern aus Programmen in C++ und C#\/WinRT.
- Der Befehl „wslc logs“ zum Anzeigen und Filtern von Daten aus Protokollen. Ausgabe von Statistiken zur Containerarbeit. Hervorhebung der Ausgabe in der „wslc“-Utility.
- Integration mit MSBuild und CMake.
- Unterstützung für die Verwaltung über ADMX-Gruppenrichtlinien.
- Unterstützung der VS Code dev container-Erweiterung zur Ausführung und zum Erstellen des entwickelten Codes in einem Container.
- Die Möglichkeit, wslc als Laufzeit für die Ausführung von Containern im Aspire-Toolkit zu verwenden.
- Erweiterung des vscode-container-client zur Verwaltung von Containern aus dem VS Code-Editor.
- Verwaltung von wslc-Containern über die textbasierte Schnittstelle Lazywslc oder die Desktop-Anwendung WinUI 3.
- Wrapper zur Ausführung von Linux-Containern aus Linux-Distributionen, die in WSL ausgeführt werden.

Standardmäßig werden in Containern das Dateisystem „virtiofs“ verwendet, das eine doppelte Beschleunigung des Zugriffs auf Windows-Dateien ermöglicht, und der Netzwerkmodus „consomme“, der eine verbesserte Kompatibilität mit verschiedenen Netzwerk-Konfigurationen bietet (VPN, Proxies usw.). Im „consomme“-Modus wird der Linux-Traffic über Windows geleitet, was die Nutzung aller Möglichkeiten der Windows-Netzwerkumgebung für Linux-Anwendungen ermöglicht, einschließlich Sicherheitsrichtlinien und Integrationswerkzeugen für Unternehmenssysteme.
Die Ausführung der Container erfolgt durch den privilegierten Windows-Dienst wslservice.exe, der virtuelle Maschinen und sie zur Ausführung von Linux verwendet. Im Gegensatz zu WSL erstellt der Dienst wslservice.exe für die Container einen untergeordneten Prozess wslcsession.exe, der mit den Rechten des aktuellen Benutzers ausgeführt wird und solche Operationen wie die Erstellung von Containern, das Einbinden von Verzeichnissen und das Durchreichen von Netzwerkports übernimmt. Verschiedene Sitzungen sind strikt voneinander isoliert und laufen in unterschiedlichen Prozessen. Jeder Sitzung ist ein eigenes VHD-Speicher zugewiesen, das im Verzeichnis %AppData%\Local\wslc\sessions gespeichert ist. Das Einbinden von Windows-Pfaden im Linux-Container ist möglich, um einen gemeinsamen Dateizugriff zu gewährleisten.

Quelle: opennet.ru
