Sergey Nivens - Fotolia
Microsoft va mettre un noyau Linux dans Windows 10
Windows Subsystem for Linux 2 intégrera un noyau décliné des vrais Linux pour fournir aux développeurs un environnement de test plus compatible et plus rapide.
Il y aura d’ici à cet été un noyau Linux dans Windows 10. Livré avec la nouvelle version 2 de la couche de compatibilité Windows Subsystem for Linux (WSL), celui-ci est censé améliorer la qualité des tests sur les machines Windows des développeurs qui écrivent des applications Linux.
« L’intérêt de WSL est d’exécuter les applications Linux sur les PC Windows sans la contrainte d’installer un double boot, ce qui permet par exemple aux développeurs d’utiliser leurs outils habituels tout en retouchant leurs interfaces avec Photoshop. Néanmoins, les utilisateurs nous reprochaient jusque-là des problèmes de performances dans l’accès aux fichiers et d’autres sur la compatibilité », a expliqué Craig Loewen, en charge du programme WSL au département Windows Developer Platform de Microsoft, lors d’une présentation dont la vidéo est disponible sur Youtube.
« En intégrant un noyau Linux, nous accélérons Cmake par 3, Npm-install par 5, ou encore Git-Clone par 2,5, sur un même PC portable. Par ailleurs, nous résolvons définitivement les dizaines de dysfonctionnements que les utilisateurs avaient observés, principalement sur Docker et les appels PTrace. »
Une machine virtuelle pour remplacer la simulation
Jusqu’ici, WSL version 1 simulait les fonctions du noyau Linux en transcodant à la volée les appels systèmes vers des fonctions du noyau Windows NT. Il créait au-dessus de cette couche de compatibilité un espace utilisateur dédié aux applications Linux et dans lequel il est d’ailleurs possible d’installer une distribution Linux Ubuntu, Suse, ou autre, spécialement adaptée pour fonctionner avec WSL. Ces versions particulières des distributions Linux, dépourvues de noyau, ne sont téléchargeables que depuis le Windows Store.
L’inconvénient de cette solution est double. D’une part, les équipes de Microsoft ne sont manifestement pas parvenues à suivre le rythme des mises à jour du noyau Linux pour les implémenter dans leur simulateur. D’autre part, il existe des opérations sous Linux – en particulier renommer dans un script le nom d’un répertoire – qui ne fonctionnent tout simplement pas sous Windows.
Dans la version 2, WSL prend plutôt le parti d’utiliser Hyper-V pour lancer une machine virtuelle. Il suffit dès lors d’y installer un Linux complet, avec son noyau et son système de fichiers ext4, pour résoudre tous les problèmes.
« Maintenir des patches en différé était compliqué et ce n’est pas la philosophie Open Source. En intégrant le vrai Linux, nous prouvons que nous sommes de bons élèves à la communauté, d’autant que nous allons pouvoir lui partager les améliorations que nous pourrions effectuer de notre côté », déclare Jack Hammons, l’un des cadres du Linux Systems Group de Microsoft, dans un billet de blog.
Toujours pas le véritable noyau Linux
Il y a néanmoins deux subtilités. La première est que WSL crée automatiquement un container pour exécuter les applications Linux, ce qui permettra aux développeurs de les gérer plus simplement (par exemple avec des scripts de mise en production automatisée) depuis les services d’administration Lxss de WSL.
La seconde est que Microsoft continue d’utiliser ici un noyau particulier qui, pour maximiser les performances, transcode tous les accès matériels vers les pilotes de Windows plutôt que vers l’émulation fournie par l’hyperviseur. De fait, que le Linux installé dans la machine virtuelle soit une distribution normale ou l’une des distributions spéciales issues du Windows Store, le service Lxss installera toujours au démarrage le noyau Linux de Microsoft dans la machine virtuelle.
Jack Hammons promet cependant que ce noyau spécial n’aura pas les défauts du précédent système : « Au lancement de SWL 2, notre noyau sera une déclinaison du dernier noyau stable 4.19 de Linux et nous nous engageons à en recompiler une version à chaque fois que le code d’un nouveau noyau stable sera publié sur Kernel.org, afin de garantir que WSL bénéficie toujours des dernières améliorations de Linux. »
La compatibilité de Windows avec les développements Unix/Linux remonte à 1993, avec la fourniture à l’époque d’une couche de compatibilité Posix au sein de Windows NT, capable de lancer les exécutables Unix. Ce dispositif avait ensuite été remplacé en 1999 par les Windows Services for Unix qui ont subsisté jusqu’à Windows Server 2008 et Windows 7. Ces derniers ne permettaient plus de lancer de binaires mais servaient à recompiler leur code source pour Windows en transcodant les appels systèmes de Linux via une DLL. Disparu avec l’arrivée de Windows 8 en 2012, ce dispositif est ensuite réapparu au sein du projet sans lendemain Astoria qui visait à exécuter des applications Android sur les tablettes Windows 10 à base d’ARM, puis s’est transformé en WSL en 2016.