Windows Subsystem for Linux - alias WSL - est une couche de compatibilité pour l'exécution native d'outils Linux (binaires Linux ELF64) sur Windows 10. À l'occasion de sa conférence Build 2019, Microsoft annonce une nouvelle version de l'architecture WSL.

Une première préversion de la nouvelle architecture WSL 2 sera proposée aux Windows Insiders en juin. Elle modifiera la manière dont les binaires Linux interagissent avec Windows et le matériel de l'ordinateur, tout en proposant une expérience similaire à celle actuelle avec WSL 1.

Contrairement à WSL 1 qui s'appuie sur l'émulation d'API du noyau Linux (4.4) sur le noyau NT, la deuxième itération utilisera un noyau Linux complet et Windows 10 intégrera donc… un vrai kernel Linux. En l'occurrence, il sera initialement basé sur un noyau Linux 4.19 (LTS ; Long Term Support) et exécuté dans une machine virtuelle dite légère.

Ce n'est pas la première fois que Microsoft va fournir un noyau Linux. Il y a en effet déjà un précédent avec la solution Azure Sphere. C'est par contre bel et bien une première avec Windows. Quand Microsoft a clamé son amour à Linux pour solder un passé révolu, ce n'était décidément pas des paroles en l'air.

Microsoft-aime-Linux

Le noyau Linux made in Microsoft sera adapté et optimisé pour WSL 2, mais demeurera quoi qu'il en soit entièrement open source et sous licence GPL.

En plus du code source LTS de Kernel.org, des patchs locaux seront appliqués afin d'améliorer les performances dans WSL 2 (temps de lancement, réduction de l'empreinte mémoire, conservation d'un ensemble minimal de périphériques pris en charge…). La maintenance se fera par le biais de mises à jour Windows.

La technologie de virtualisation employée pour WSL 2 (et pour le noyau Linux dans une machine virtuelle) est promise plus rapide par rapport à WSL 1. L'intérêt pour WSL 2 d'intégrer son propre noyau Linux sera une entière compatibilité avec les appels système et tout un nouvel ensemble d'applications à exécuter à l'intérieur de WSL. Microsoft cite en particulier la version Linux de Docker et FUSE.