La société Microsoft a présenté la version de l'outil WSL 3.0 (Windows Subsystem for Linux), permettant d'exécuter des applications Linux sur Windows. Cette nouvelle version se distingue par la possibilité d'exécuter des conteneurs Linux sous Windows et le passage à l'utilisation du noyau Linux 6.18. Le code des utilitaires en ligne de commande de WSL, des processus d'arrière-plan pour les environnements Linux, des services pour exécuter des conteneurs et des machines virtuelles, ainsi que de la pile graphique wslg est ouvert sous la licence MIT. Les modifications pour le noyau Linux sont fournies sous la licence GPLv2.
WSL fournit une machine virtuelle avec un noyau Linux complet (basé sur la version 6.18), dans laquelle des distributions Linux peuvent être exécutées. Le noyau inclut des modifications spécifiques à WSL, telles que des optimisations pour réduire le temps de démarrage et la consommation de mémoire, la possibilité pour Windows de récupérer la mémoire libérée par les processus Linux, et des réglages pour exclure les pilotes et sous-systèmes inutiles. Le système est installé dans une image disque distincte (VHD) avec un système de fichiers ext4 et un adaptateur réseau virtuel.
La nouvelle version inclut un outil pour créer, déployer et exécuter des conteneurs Linux sur Windows, comprenant une interface en ligne de commande wslc (WSL Containers) et une API associée, permettant d'exécuter des conteneurs Linux depuis des programmes Windows. Les principales fonctionnalités de wslc :
- Opérations pour gérer le cycle de vie des conteneurs, telles que la création, le démarrage, l'arrêt, l'exportation, le nettoyage, l'inspection, la vérification de l'état, la transmission d'événements d'activité des conteneurs, et la copie de fichiers vers et depuis le conteneur.
- Limitation de la consommation de CPU et de mémoire pour chaque conteneur.
- Création, chargement, envoi, importation, sauvegarde et vérification des images système. Commandes pour afficher les listes d'images disponibles. Opérations en lot sur plusieurs images. Possibilité d'empaqueter plusieurs images dans une seule archive tar.
- Création et gestion de réseaux virtuels. Rattachement des conteneurs à plusieurs réseaux. Création de types de réseaux personnalisés. Transfert de ports réseau.
- Création, affichage et suppression de partitions. Gestion des disques virtuels (VHD).
- Accès au GPU depuis les conteneurs et fourniture de bibliothèques permettant aux utilisateurs non privilégiés de travailler avec le GPU.
- Création de sessions à la demande, attribution de noms aux sessions, emplacement de stockage configurable.
- SDK avec API pour automatiser le travail avec des conteneurs à partir de programmes en C++ et C#/WinRT.
- Commande « wslc logs » pour visualiser et extraire des données des journaux. Affichage des statistiques de fonctionnement du conteneur. Surlignage des sorties dans l'utilitaire « wslc ».
- Intégration avec MSBuild et CMake.
- Prise en charge de la gestion par le biais de stratégies de groupe ADMX.
- Prise en charge de l'extension VS Code dev container pour exécuter et construire du code en développement dans un conteneur.
- Possibilité d'utiliser wslc comme runtime pour exécuter des conteneurs dans l'outil Aspire.
- Extension vscode-container-client pour gérer les conteneurs depuis l'éditeur de code VS Code.
- Gestion des conteneurs wslc via l'interface texte Lazywslc ou l'application de bureau WinUI 3.
- Wrapper pour exécuter des conteneurs Linux à partir des distributions Linux exécutées dans WSL.

Les conteneurs utilisent par défaut le système de fichiers « virtiofs », qui montre un doublement de la vitesse d'accès aux fichiers Windows, et le mode réseau « consomme », assurant une meilleure compatibilité avec différentes configurations réseau (VPN, proxy, etc.). En mode «consomme», le trafic Linux est redirigé via Windows, ce qui permet aux applications Linux de tirer parti de toutes les capacités du réseau Windows, y compris les politiques de sécurité et les outils d'intégration avec les systèmes d'entreprise.
L'exécution des conteneurs est assurée par le service Windows privilégié wslservice.exe, qui lance machines virtuelles et les utilise pour exécuter Linux. Contrairement à WSL, le service wslservice.exe crée pour les conteneurs un processus enfant wslcsession.exe, exécuté avec les droits de l'utilisateur actuel et prenant en charge des opérations telles que la création de conteneurs, le montage de répertoires et le passage de ports réseau. Différentes sessions sont strictement isolées les unes des autres et fonctionnent dans des processus séparés. À chaque session est lié un stockage VHD distinct, situé dans le répertoire %AppData%\Local\wslc\sessions. Il est possible de monter des chemins Windows dans le conteneur Linux pour partager des fichiers.

Source : opennet.ru
