- L’architecture des sous-systèmes de Windows NT a historiquement reposé sur une couche de conversion des appels API pour exécuter des programmes d’autres systèmes d’exploitation
- WSL1 s’inscrivait dans cette continuité : en tant que couche de traduction légère, il convertissait les appels Linux en appels du noyau Windows
- WSL2 a basculé vers une VM Linux complète basée sur Hyper-V pour résoudre les problèmes de performance, et exécute un noyau Linux réel
- WSL2 propose une intégration plus poussée que les VM classiques grâce à la gestion dynamique de la mémoire, le montage des lecteurs Windows et l’intégration GUI via WSLg
- Malgré des limites (gestion des fichiers peu pratique, dépendance aux images disque), la souplesse de tirer parti des forces et des faiblesses de WSL1 et WSL2 selon le cas d’usage reste essentielle
Le concept de sous-système dans Windows NT
- Le sous-système (subsystem) de Windows NT désigne un jeu d’API et une couche de conversion d’appels pour exécuter des programmes d’autres systèmes d’exploitation
- NT proposait autrefois des sous-systèmes comme OS/2 subsystem (OS2SS.EXE), POSIX subsystem (PSXSS.EXE), etc.
- CSRSS.EXE est une couche de conversion de l’API Win32, dont certaines fonctions ont été déplacées en mode noyau (
WIN32K.SYS)
- Le sous-système POSIX était une implémentation minimale pour certification gouvernementale, puis a été remplacé par Interix-based Windows Services for Unix
WSL1 : couche Linux basée sur la traduction
- WSL1 (Windows Subsystem for Linux) est une couche de traduction légère qui convertit les appels système Linux en appels Windows
- À l’exécution, le processus
bash utilise seulement quelques Mo de mémoire et apparaît comme un processus normal dans le Gestionnaire des tâches
- La racine du système de fichiers existe comme une structure de fichiers individuelle sur NTFS, avec très peu de surcharge de stockage
- Limites
- Dégradation des performances I/O : coût de conversion lié aux différences entre les API de fichier Linux et Win32
- Serveur X externe requis pour exécuter une GUI (par ex. X410)
- Raw sockets non pris en charge, ce qui empêche l’exécution de
traceroute, nmap, tcpdump, etc.
WSL2 : VM Linux basée sur Hyper-V
- Face aux besoins des utilisateurs, Microsoft a introduit une VM Linux complète fonctionnant sur Hyper-V
- La racine du système de fichiers est gérée via un fichier VHDX unique
- La conversion WSL1↔WSL2 est possible avec la commande
wsl --set-version "Ubuntu" 2
- Caractéristiques de performance
- Le démarrage initial est plus lent, mais il exécute un noyau Linux natif
- L’utilisation mémoire est dynamique et peut monter jusqu’à la moitié de la mémoire physique maximale
- Dans le test
stress, l’usage mémoire augmente avec la charge puis se réduit automatiquement
- Lorsque nécessaire, la VM peut être arrêtée avec la commande
wsl --shutdown
Intégration et limites de WSL2
- WSL2 renforce l’intégration avec Windows par rapport à une VM traditionnelle
- Montage automatique des lecteurs Windows, accès aux lecteurs Linux via le chemin
\\wsl$\\, exécution d’apps GUI via WSLg
- Les applications GUI sont diffusées via le Remote Desktop Protocol, avec un réglage spécifique requis pour le DPI et la mise à l’échelle du texte
- Problèmes de gestion des fichiers
- Les données de travail Linux sont stockées dans l’image
ext4.vhdx, avec des risques de portabilité et de récupération
- L’exécution de
wsl --unregister Distro supprime immédiatement toutes les données
- Utiliser les lecteurs Windows (
/mnt/c) entraîne des baisses de performance dues à la surcharge NTFS + VM
- Protocoles de système de fichiers
- WSL1 utilise
drvfs, WSL2 utilise le protocole 9p de Plan9
- Des cas de bugs résiduels liés à
drvfs sont mentionnés pendant les conversions
- Alternative
- Il est recommandé de créer une image VHDX séparée et de la monter avec
wsl --mount --vhd pour isoler les données de travail
- La configuration automatique n’est pas possible dans
.wslconfig, il faut la piloter via des scripts
Conclusion
- La conception modulaire de Windows NT et son ABI noyau stable préservent la compatibilité avec d’anciens pilotes
- WSL1 a l’avantage d’une faible consommation mémoire, tandis que WSL2 apporte une compatibilité et des performances supérieures avec un noyau Linux réel
- WSL2 est une architecture qui minimise les inconvénients d’une VM tout en renforçant l’intégration avec l’OS hôte
- Selon la définition classique, il s’apparente à une VM, mais il mérite d’être considéré comme un « sous-système » grâce à son intégration légère
Aucun commentaire pour le moment.