Lorsqu’on travaille sous Windows, il nous faut parfois la possibilité d’accéder à un environnement Linux.
Pour cela nous pouvons utiliser les distributions Debian, Ubuntu ou encore Kali avec une technologie dénommée WSL (maintenant WSL2) pour Windows Subsystem for Linux (MSDN, aperçu global de l’archi et interop Win/Linux) dispo dans Microsoft dans Windows 10 64 bit.
Pourquoi Linux dans Windows ?
Historiquement on utilisait (et on utilises toujours pour des raisons de perf) des ordinateur en dual boot (Bootcamp pour OSX) ou des machines virtuelles et depuis peu des conteneur Docker.
Linux est parfois encore « nécessaire » pour les développeurs, en raisons de compatibilité/perf avec l’outillage Javascript (Node, React, Webpack etc.) même s’il est possible d’utiliser Nodejs et ses packages npm sous Windows nativement.
Il est également possible d’utiliser des outils dispos uniquement sous Linux (comme des CLI) et aussi d’automatiser des taches avec des scripts shell par exemple.
Pour les développeurs qui utilisent VSCode, ce Linux est également disponible dans le terminal intégré (CTRL + ALT + O).
Installer WSL Debian

installer Linux (WSL) pour Windows 10 depuis le Microsoft Store (build > 1709) et choisir sa distribution parmi celles-ci (Debian forever 😜):
pour les anciennes build de Windows 10 précédent la Fall Creators Update, suivre le tuto de Korben ou la doc Ubuntu-fr et plus d’infos ici)
Configurer la distribution à utiliser
Il est possible d’installer plusieurs distros Linux en mode WSL, et il faut pouvoir les gérer (fixer celle qu’on veut utiliser par défaut par ex).
Pour cela il existe: wslconfig.exe (anciennement lxrun.exe) à utiliser dans un shell DOS:
wslconfig /l wslconfig /s <DistributionName>
Home directory
Avec WSL2 il est possible de configurer le home directory qui par défaut pointe sur le dossier Windows %HOMEPATH%
et pour avoir le dossier de démarrage correspondant au ~
Linux, il suffit d’ajouter ce paramètre dans le settings.json
(fichier de conf du Terminal):
"startingDirectory": "//wsl$/Debian/home/behrouze"
Voir d’autres config et astuces là: devblogs.microsoft.com/commandline/windows-terminal-tips-and-tricks
WSL et Visual Studio Code
Configuration
Il est possible d’exploiter ce nouveau shell Linux depuis le du terminal intégré de VSCode, pour cela la configuration s’effectue en ajoutant dans les User Settings (CTRL + , ) le chemin vers le binaire bash de WSL:
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\wsl.exe"
anciennement:
"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\bash.exe"
doc MS à propos du Terminal Intégré de VSCode
Debugger Nodejs WSL dans VSCode
Pour debugger une application Nodejs lancée à travers WSL avec VSCode, il suffit de rajouter l’attribut "useWSL": true
dans le launch.json
{ "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/bin/www", "useWSL": true }
Pièges à éviter
WSL dans le terminal VSCode
Si aucun terminal ne s’ouvre dans VSCode, le petit piège à éviter (et dans lequel je suis tombé) c’est que VsCode doit être installé en version 64 bits sur votre Windows10.
J’aurai pu éviter de perdre du temps si je l’avais installé avec Chocolatey…
Error: 0x800703fa
WSL peut planter au démarrage de la machine avec une erreur Error: 0x800703fa il suffit de rebooter ou de relancer le service qui gère le l’instance du sous-système Windows pour Linux:
sc queryex LxssManager sc start LxssManager
Runas et dossier de démarrage
blog post expliquant pourquoi la fonctionnalité d’un raccourci « Start in » (dossier de démarrage) peut ne pas être respecté lors d’un runas:admin.
Et voilà !!