La nouvelle version de WSL (Windows Subsystem for Linux), soit WSL2, est disponible depuis juin dernier.
J’utilise WSL1 depuis son intégration à Windows 10 et je dois avouer que cela fonctionne relativement bien.
Sans rentrer dans les détails de l’architecture, il s’agit d’une implémentation qui fonctionne sans virtualisation et dans laquelle tous les appels Linux sont convertis et traités par Windows de façon transparente.
Avec WSL2 toutefois, Microsoft a revu l’architecture du tout au tout. WSL2 utilise désormais la virtualisation Hyper-V pour fournir un vrai noyau Linux. Cet extrait tiré de la documentation de WSL2 résume bien cette architecture.
WSL 2 utilise la technologie de virtualisation la plus récente et la plus grande pour exécuter son noyau Linux à l’intérieur d’une machine virtuelle utilitaire légère.
Toutefois, WSL 2 n’est pas une expérience de machine virtuelle traditionnelle. Une expérience de machine virtuelle traditionnelle peut être lente à démarrer, est isolée, consomme beaucoup de ressources et nécessite votre temps pour la gérer. WSL 2 n’a pas ces attributs.
J’étais curieux de constater les différences entre les 2 architectures et je dois admettre que les opérations exigeantes en lecture/écriture, comme npm, git, etc, sont effectivement beaucoup plus rapides avec WSL2.
Il s’agit donc d’une bonne nouvelle pour les développeurs oeuvrant sous Windows 10.
Vous êtes un de ceux ou celles là et ça vous intéresse? Voici comment vous pouvez installer WSL2.
Pour installer WSL2, vous aurez besoin de Windows 10 Build 18917 ou d’une version ultérieure.
Pour avoir accès à cette version de Windows, vous devez (pour le moment) être inscrit au programme Windows Insider. Cela ne prend que quelques minutes. WSL2 est maintenant disponible sous les 2 canaux de distribution (Lent et Rapide). Je vous suggère le canal Lent si vous souhaitez obtenir des nouvelles versions de Windows moins souvent et plus stables.
Ensuite, il suffit d’activer la plateforme de machine virtuelle. Le plus simple est de passer par une fenêtre Powershell en administrateur. Si vous n’avez pas déjà installé WSL (le composant Windows), vous pouvez le faire du même coup.
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Il est possible d’installer plusieurs distributions de Linux sur votre poste. Vous pouvez également spécifier si une distribution doit être exécutée en WSL1 ou en WSL2 et de la convertir le cas échéant.
Le plus simple toutefois est de définir la version par défaut avant l’installation d’une nouvelle distribution.
Toujours dans Powershell, rouler
wsl --set-default-version 2
Il existe déjà plusieurs distribution de Linux pour WSL et la bonne nouvelle est qu’elles sont disponibles à même le Microsoft Store sur votre poste.
Vous pouvez installer la ou les distributions de votre choix, comme Ubuntu 18.04 LTS par exemple:
Une fois fait, vous pouvez afficher la liste de vos distributions et la version de WSL qu’elles utilisent
wsl -l -v
Si jamais vous souhaitez changer une distribution de version de WSL:
wsl --set-version <nom de la distribution> <1 ou 2>
Les fichiers Windows peuvent être accédés à partir de votre distribution sous /mnt/[drive]
.
Les fichiers Linux peuvent être accédés à partir de Windows sous \\wsl$
.
Important
Sous WSL2, l’accès aux fichiers Windows est très lent pour le moment. Assurez-vous de déplacer vos fichiers sur le système de fichiers de votre distribution (eg: ~/projets) pour profiter des gains de performance.
En quête d’un bon terminal pour rouler vos multiples shell (WSL, Powershell, CMD, cygwin, clink, etc)? Jetez un oeil à Windows Terminal, qui devrait voir sa version 1.0 paraître sous peu.
J’ai utilisé plusieurs terminaux sous Windows (Hyper.js, Terminus & cie) mais depuis la sortie de Windows Terminal, c’est ce dernier qui a pris la pôle (pour le moment du moins).
Il est bon de savoir que VS Code s’intègre parfaitement avec WSL2. Sous WSL2, dirigez-vous dans un dossier de projet et roulez:
code .
Voyez la magie faire son oeuvre!
Voilà qui devrait conclure ce léger survol de WSL2. Même si le tout est encore en preview, la fonctionnalité est grandement efficace et facilite de beaucoup certains workflows de développement à partir d’un poste Windows.
La bonne nouvelle est que Docker Desktop pour Windows supporte désormais WSL2 de sorte qu’il est aussi très simple de laisser WSL2 en charge des conteneurs.
Parlant d’environnement et de workflows de développement sous Windows, Scott Hanselman a publié cette semaine une vidéo très complète sur la configuration d’un environnement de développement avec WSL / WSL2 / VS Code / Windows Terminal / Docker. Si vous n’êtes pas familier avec ce type d’environnement, je vous le recommande fortement.