WSL2: la nouvelle implémentation de Linux sous Windows 10

terminal

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.

Comment installer WSL 2

Requis

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.

Paramètres Windows Insider

Activation des composants

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

Définir WSL2 comme version par défaut

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

Installation d’une distribution

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.

wsl-microsoft-store

Vous pouvez installer la ou les distributions de votre choix, comme Ubuntu 18.04 LTS par exemple:

ubuntu-18.04

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>

Considérations

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.

Terminal

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).

VS Code & WSL2

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!

VS Code WSL Server


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.

Publié le 15 février 2020

Développeur, sportif et technologue.
Dominic Bégin on Twitter