WSL 2, partie 1 : introduction

Cet article est le premier d’une série consacrée à WSL de Microsoft. Il introduit et présente WSL.

 

Introduction à WSL

WSL pour Windows Subsystem for Linux, est une solution développée par Microsoft pour permettre d’exécuter différentes distributions Linux sur Windows 10 et faciliter les interactions entre les systèmes Linux et Windows exécutés sur la machine.

Ainsi le sous-système Windows pour Linux (WSL) permet d’installer une ou plusieurs distributions Linux sous Windows 10 et d’exécuter des applications Linux natives.

Un des avantages de WSL par rapport à d’autre solutions comme le dual boot ou l’utilisation d’une VM est de permettre facilement d’avoir accès au système de fichiers de Windows depuis Linux et vice et versa.

La première version de WSL permettait déjà d’exécuter certaines applications Linux en offrant un accès au système de fichiers de Windows sans avoir recours à des émulateurs comme Cygwin.

WSL 1 propose une émulation des API Linux vers celles du kernel de Windows. Cela implique des limitations comme l’impossibilité d’exécuter certaines applications pourtant largement utilisée comme Docker ou Kubernetes. WSL 1 requiert une version 1607 de Windows 10 64 bits.

 

Présentation de WSL 2

La version 2004 de Windows 10 inclut WSL 2.

La version 2 de WSL à deux objectifs :

  • Assurer une compatibilité complète des appels systèmes au noyau Linux
  • Améliorer les performances du système de fichiers

Pour atteindre ces objectifs, WSL 2 repose sur une approche complètement différente : il exécute un noyau Linux dans une machine virtuelle dédiée légère et utilise un système de fichiers dans un disque virtuel. Cela permet d’avoir de meilleures performances des applications Linux et d’améliorer la compatibilité avec les programmes Linux.

WSL 2 utilise un véritable noyau Linux, ce qui permet aux applications Linux qu’il exécute d’avoir désormais un accès complet aux appels système. Grâce à l’utilisation d’un véritable noyau Linux, WSL 2 n’a plus besoin de traduire les appels système de Linux en appels compatibles avec le noyau Windows.

Cela offre une meilleure compatibilité avec les applications Linux existantes, ce qui permet d’exécuter plus d’applications sous WSL 2 qu’auparavant, notamment les conteneurs Docker.

 

L’architecture de WSL 2

WSL 2 repose sur une nouvelle architecture utilisant une machine virtuelle légère dans laquelle un noyau Linux de Microsoft reposant sur une version 4.19 s’exécute. Ce noyau Linux est personnalisé par Microsoft sur la base d’un noyau 4.19.

Contrairement à WSL 1 qui convertissait les appels système des programmes Linux vers l’API Windows, WSL 2 exécute le noyau Linux dans une VM légère gérée par Windows.

Cela permet d’avoir un support intégral de toutes les API, de manière native et donc d’améliorer les performances des applications exécutées. WSL 2 améliore aussi les performances du système de fichiers.

L’utilisation par WSL 2 d’une machine virtuelle légère permet d’offrir une expérience différente par rapport à l’utilisation d’une machine virtuelle classique qui requiert un temps de démarrage plutôt long, la consommation de nombreuses ressources et l’exécution d’un système d’exploitation de manière isolée par défaut.

La solution utilisée par WSL 2 présente plusieurs avantages :

  • des temps de démarrage très courts
  • une exécution avec des ressources réduites
  • des interactions possibles entre les systèmes de fichiers de Linux et de Windows dans les deux sens
  • aucune configuration ou gestion de la machine virtuelle n’est requise

L’accès aux fichiers dans WSL 2 est nettement plus rapide grâce à la nouvelle architecture, pour les applications Linux qui accèdent aux fichiers du disque virtuel. Le système de fichiers de WSL 2 utilise un disque dur virtuel (VHD Virtual Hard Drive). Le système de fichiers utilisé est de type ext4.

L’utilisation d’un disque dur virtuel améliore les performances des opérations de type I/O de manière spectaculaire par rapport à WSL 1 pour les applications Linux.

Par contre, les performances sont moins bonnes pour les applications Linux qui accèdent aux fichiers du système Windows montés sous /mnt (par exemple, /mnt/c pour C:\).

Les applications Windows peuvent aussi accéder au système de fichiers d’une distribution Linux sous WSL 2. Il est donc possible d’utiliser l’explorateur de fichiers de Windows pour manipuler les fichiers du système de fichiers Linux.

 

Les inconvénients de la nouvelle architecture

L’utilisation de la technologie de virtualisation présente tout de même des inconvénients.

Avec Windows 10, on ne peut utiliser qu’un seul hyperviseur. L’utilisation de VM sous Windows bloque les autres hyperviseurs tels que VirtualBox ou VMware Workstation. Il faut utiliser des versions récentes de ces outils qui proposent un fonctionnement avec Hyper-V en utilisant ces API mais au détriment des performances.

WSL 2 fonctionne avec VMWare 15.5.5 + et VirtualBox 6 +.

Si vous avez un problème avec cet effet secondaire, vous pouvez continuer à utiliser le WSL 1  car il est possible de passer d’une version à l’autre.

Avec WSL 2, les performances des I/O des applications Linux sur les fichiers du système de Windows sont plutôt mauvaises, surtout comparativement à celles de WSL 1. Cela peut être une raison supplémentaire d’utiliser la version 1 de WSL.

 

Conclusion

WSL 2 propose une nouvelle approche pour l’exécution d’applications Linux avec une bien meilleure compatibilité et de meilleures performances notamment en ce qui concernent les I/O tout en offrant toujours les avantages de WSL 1 (temps de démarrage réduit, faible consommation de ressources et intégration transparente entre Windows et Linux)

Le prochain article détaillera l’installation de WSL 2 sous Windows 10.