sous-système Microsoft Windows pour Linux
Le sous-système Microsoft Windows pour Linux est un ensemble de composants Microsoft qui permet à des fichiers binaires au format Linux ELF64 (64-bit Executable and Linkable Format) de fonctionner au sein du noyau Windows, dans le système d'exploitation (OS, Operating System) Windows 10.
Une fois la fonction Sous-système Windows pour Linux mise en oeuvre, le Bash (Bourne Again SHell) Linux peut installer l'image du mode utilisateur Ubuntu. Celle-ci s'exécutera alors en surcouche du noyau Windows, permettant ainsi aux fichiers binaires ELF64 de fonctionner au sein de Windows. Après l'installation, l'utilisateur peut exécuter d'autres fichiers issus du référentiel de la distribution Ubuntu. Il s'agit notamment de grep, sed et awk ; de la navigation au sein du système de fichiers Linux ; et de scripts via des utilitaires à interface en ligne de commande (CLI, Command-Line Utility).
Le sous-système Windows pour Linux comprend un service d'administration des sessions en mode utilisateur pour gérer l'instance de Linux, des processus minimisés (Pico) pour gérer les appels système Linux, et des pilotes Pico pour émuler le noyau Linux. Globalement, cette architecture permet la transmission d'appels système Linux au noyau Windows et leur gestion par ce dernier.
Le sous-système Windows pour Linux est essentiellement destiné aux développeurs Linux opérant dans un environnement Windows. Par exemple, les développeurs Web utilisent souvent Linux ainsi que d'autres outils open source, mais disposent d'un accès restreint aux systèmes Linux complets à des fins de développement et d'expérimentation. Le sous-système Windows pour Linux permet aux développeurs de travailler sous Windows en utilisant des outils Linux communs, ainsi que des langages de développement sophistiqués, tels que Ruby et Python.
Si des instances de Linux peuvent s'exécuter sous Windows au sein de machines virtuelles (VM, Virtual Machine), le sous-système Windows pour Linux offre, pour sa part, deux avantages. Tout d'abord, sa gestion induite est moindre en termes de ressources informatiques (processeur, mémoire et stockage) que celle d'une VM intégrale. Ensuite, il permet aux environnements Windows et Linux de fonctionner simultanément. Ainsi, si nécessaire, les développeurs pourront appliquer à un même fichier à la fois des applications Windows et des utilitaires Linux.
Notons également que le sous-système Windows pour Linux présente actuellement certaines limites. En premier lieu, il ne prend pas toutes les applications Linux en charge ; il est conçu pour fournir un outil qui gère le Bash et les principaux utilitaires en ligne de commande de Linux. Il ne prend pas non plus en charge les environnements IUG Linux, tels que Gnome ou K Desktop Environment. De plus, pour l'instant, il prend uniquement en charge la distribution Linux Ubuntu. En outre, le sous-système Windows pour Linux est uniquement disponible pour Windows 10 et ne le sera pas pour les versions Windows Server. S'il peut exécuter certaines applications serveur Linux, comme Redis pour la base de données, il n'a pas pour objet d'en héberger.
Pour prendre en charge les conventions de fichier Linux, le sous-système Windows pour Linux fait appel à deux systèmes de fichiers, tout en offrant une interopérabilité avec les fichiers Windows. Un système de fichiers appelé VolFs prend en charge les conventions de fichier Linux, notamment les autorisations Linux, les liens vers d'autres fichiers, les noms présentant des caractères normalement refusés sous Windows, et la structure de répertoires Linux. Toutefois, VolFs ne prend pas en charge l'interopérabilité entre ses propres fichiers et les applications Windows. En revanche, un autre système de fichiers appelé DriveFs fournit cette intéropérabilité, garantissant ainsi des noms de fichier Windows légaux, le respect de la sécurité Windows et la prise en charge de noms de fichier qui différencient majuscules et minuscules. La structure de répertoires de DriveFs permet à l'utilisateur d'appliquer simultanément aux fichiers des outils à la fois Windows et Linux.