Windows Subsystem for Linux 2 (WSL2) a fondamentalement change la maniere dont les developpeurs travaillent sous Windows. Au lieu de recourir au dual boot, d’executer des machines virtuelles lourdes ou de lutter avec des couches de compatibilite, vous pouvez desormais faire tourner un environnement Linux complet nativement aux cotes de Windows avec des performances quasi natives. Que vous developpiez en Node.js, Python, Go, Rust ou tout autre langage, WSL2 vous offre un outillage Linux authentique sans quitter votre bureau Windows.
Ce guide vous accompagne a travers tout ce dont vous avez besoin pour mettre en place un environnement de developpement Linux de niveau professionnel sous Windows avec WSL2. Nous couvrirons l’installation, la configuration d’Ubuntu, la mise en place de Windows Terminal, l’integration Docker, le developpement a distance avec VS Code, les bonnes pratiques du systeme de fichiers, le reseau, la prise en charge GPU et la gestion de plusieurs distributions.
Prerequis
Avant de commencer, assurez-vous de disposer de :
- Windows 10 version 2004 (build 19041) ou ulterieure, ou Windows 11
- Au moins 8 Go de RAM (16 Go recommandes pour les charges Docker)
- La virtualisation activee dans votre BIOS/UEFI (Intel VT-x ou AMD-V)
- Une connexion internet pour telecharger les distributions
- PowerShell ou Windows Terminal avec des privileges Administrateur
Remarque : Si vous utilisez Windows 10, assurez-vous que toutes les mises a jour Windows sont installees. Les anciennes versions peuvent presenter une prise en charge partielle de WSL2 avec des bogues connus. Windows 11 offre la meilleure experience WSL2, incluant la prise en charge de systemd et le rendu natif des applications graphiques Linux.
Qu’est-ce que WSL2 ?
WSL2 (Windows Subsystem for Linux version 2) est une couche de compatibilite integree a Windows qui permet d’executer des binaires Linux de maniere native. Contrairement a WSL1, qui traduisait les appels systeme Linux en appels au noyau Windows NT, WSL2 execute un veritable noyau Linux au sein d’une machine virtuelle Hyper-V legere.
Caracteristiques cles de WSL2 :
- Noyau Linux reel : WSL2 embarque un noyau Linux maintenu par Microsoft (base sur le noyau 5.15+ depuis 2025) qui recoit des mises a jour regulieres via Windows Update.
- Compatibilite totale des appels systeme : Grace a l’execution d’un noyau authentique, WSL2 prend en charge des outils tels que Docker, systemd, les systemes de fichiers FUSE et eBPF, que WSL1 ne pouvait pas gerer.
- Leger : La machine virtuelle demarre en environ une seconde et consomme un minimum de ressources au repos.
- Integration etroite avec Windows : Vous pouvez appeler des executables Windows depuis Linux, acceder aux fichiers Windows depuis Linux (et inversement), et utiliser le reseau
localhostentre les deux systemes.
# Check your current WSL version
wsl --version
WSL1 vs WSL2
Comprendre les differences vous aide a choisir la bonne version pour votre flux de travail :
| Caracteristique | WSL1 | WSL2 |
|---|---|---|
| Architecture | Couche de traduction | VM legere avec noyau reel |
| Noyau Linux | Aucun (traduction des syscalls) | Noyau Linux complet |
| Performances systeme de fichiers (fichiers Linux) | Moderees | Vitesse ext4 native |
| Performances systeme de fichiers (fichiers Windows) | Rapides (acces NTFS direct) | Plus lentes (protocole 9P) |
| Compatibilite des appels systeme | Partielle (~70 %) | Totale (100 %) |
| Prise en charge Docker | Non | Oui |
| Prise en charge systemd | Non | Oui (Windows 11) |
| Utilisation memoire | Faible | Dynamique (augmente/diminue) |
| Temps de demarrage | Instantane | ~1 seconde |
| Reseau | Partage la pile reseau Windows | Adaptateur Ethernet virtuel |
Pour la plupart des developpeurs, WSL2 est le bon choix. Le seul scenario ou WSL1 pourrait etre preferable est lorsque vous devez acceder intensivement a des fichiers stockes sur la partition NTFS de Windows, car WSL1 offre un acces inter-OS plus rapide.
Installation de WSL2 et Ubuntu
Microsoft a considerablement simplifie le processus d’installation. Sur les versions modernes de Windows, une seule commande gere tout :
Installation simplifiee (recommandee)
Ouvrez PowerShell en tant qu’Administrateur et executez :
wsl --install
Cette commande active les fonctionnalites Windows requises (Plateforme de machine virtuelle et Sous-systeme Windows pour Linux), telecharge le dernier noyau Linux WSL2, definit WSL2 par defaut et installe Ubuntu.
Redemarrez votre ordinateur lorsque vous y etes invite :
# After restart, Ubuntu will launch automatically for first-time setup
# You will be prompted to create a UNIX username and password
Installation manuelle (anciennes versions de Windows)
Si wsl --install n’est pas disponible, activez les fonctionnalites manuellement :
# Enable WSL feature
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# Enable Virtual Machine Platform
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# Restart your computer, then set WSL2 as default
wsl --set-default-version 2
Installer une distribution specifique
Vous pouvez choisir parmi plusieurs distributions :
# List all available distributions
wsl --list --online
# Install a specific distribution
wsl --install -d Ubuntu-24.04
# Other popular options:
# wsl --install -d Debian
# wsl --install -d openSUSE-Tumbleweed
# wsl --install -d kali-linux
Configuration Initiale d’Ubuntu
Apres le premier lancement de votre distribution Ubuntu et la creation de votre compte utilisateur, effectuez ces etapes de configuration essentielles :
Mettre a jour le systeme
sudo apt update && sudo apt upgrade -y
Installer les outils de developpement essentiels
sudo apt install -y build-essential git curl wget unzip zip \
software-properties-common apt-transport-https \
ca-certificates gnupg lsb-release
Configurer Git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global init.defaultBranch main
git config --global core.autocrlf input
Important : Definir
core.autocrlfsurinputgarantit que Git convertit les fins de ligne Windows (CRLF) en fins de ligne Unix (LF) lors du commit, tout en laissant les fins de ligne LF intactes lors du checkout. Cela previent les problemes de fins de ligne lorsque vous partagez du code entre outils Windows et Linux.
Generer des cles SSH
ssh-keygen -t ed25519 -C "your.email@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Display the public key to add to GitHub/GitLab
cat ~/.ssh/id_ed25519.pub
Configurer un meilleur invite de commandes (optionnel)
De nombreux developpeurs preferent Zsh avec Oh My Zsh pour une experience terminal plus productive :
sudo apt install -y zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Configuration de Windows Terminal
Windows Terminal est l’application de terminal recommandee pour WSL2. Elle prend en charge les onglets multiples, les volets fractionnes, le rendu de texte accelere par GPU et une personnalisation poussee.
Installation
Installez Windows Terminal depuis le Microsoft Store ou via winget :
winget install --id Microsoft.WindowsTerminal -e
Configurer Ubuntu comme profil par defaut
Ouvrez les parametres de Windows Terminal (Ctrl+,) et definissez votre profil Ubuntu comme profil par defaut. Dans le fichier settings.json, vous pouvez egalement personnaliser l’apparence :
{
"defaultProfile": "{YOUR-UBUNTU-GUID}",
"profiles": {
"list": [
{
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/home/yourusername",
"fontFace": "CascadiaCode NF",
"fontSize": 11,
"colorScheme": "One Half Dark",
"cursorShape": "filledBox"
}
]
}
}
Raccourcis clavier utiles
| Raccourci | Action |
|---|---|
Ctrl+Shift+T | Nouvel onglet |
Ctrl+Shift+D | Dupliquer le volet |
Alt+Shift+D | Fractionner le volet |
Ctrl+Tab | Changer d’onglet |
Ctrl+Shift+W | Fermer le volet |
Bonnes Pratiques du Systeme de Fichiers
Comprendre les performances du systeme de fichiers dans WSL2 est essentiel pour un flux de travail productif. C’est l’une des sources de confusion et de frustration les plus courantes chez les nouveaux utilisateurs de WSL2.
La regle d’or
Stockez vos fichiers de projet dans le systeme de fichiers Linux, pas sur le disque Windows.
# FAST: Files in your Linux home directory
# Path: ~/projects/my-app
# Actual location: ext4 file system inside WSL2 VM
cd ~/projects/my-app
time git status # ~0.1 seconds
# SLOW: Files on the Windows drive accessed from WSL2
# Path: /mnt/c/Users/yourname/projects/my-app
# Crosses the 9P protocol bridge on every file operation
cd /mnt/c/Users/yourname/projects/my-app
time git status # ~2-5 seconds (10-50x slower)
Pourquoi cette difference de performances existe
WSL2 s’execute dans une VM legere avec son propre systeme de fichiers ext4. L’acces aux fichiers sur la partition NTFS de Windows necessite de traverser la frontiere de la VM via le protocole 9P, ce qui ajoute de la latence a chaque operation sur les fichiers. Pour un dossier node_modules contenant des milliers de petits fichiers, cette surcharge devient considerable.
Acceder aux fichiers entre les deux systemes
Meme si vous devriez stocker vos projets cote Linux, vous pouvez toujours acceder aux fichiers depuis les deux systemes :
# From WSL2, access Windows files
ls /mnt/c/Users/yourname/Documents
# From Windows Explorer, access Linux files
# Type this in the Explorer address bar:
# \\wsl$\Ubuntu\home\yourusername\projects
# From PowerShell, access Linux files
explorer.exe \\wsl$\Ubuntu\home\yourusername
Structure de repertoires recommandee
mkdir -p ~/projects ~/tools ~/scripts
# Keep all development work under ~/projects
# Keep downloaded tools under ~/tools
# Keep automation scripts under ~/scripts
Integration de Docker Desktop avec WSL2
Docker Desktop pour Windows utilise WSL2 comme backend, offrant des performances natives pour les conteneurs Linux sans la surcharge d’une VM Hyper-V traditionnelle.
Installation
- Telechargez et installez Docker Desktop pour Windows.
- Pendant l’installation, assurez-vous que “Use WSL 2 instead of Hyper-V” est selectionne.
- Apres l’installation, ouvrez les parametres de Docker Desktop et naviguez vers Resources > WSL Integration.
- Activez l’integration avec votre distribution Ubuntu.
Verifier l’installation
Depuis votre terminal Ubuntu sous WSL2 :
docker --version
docker compose version
docker run hello-world
Gestion des ressources
Docker Desktop avec WSL2 peut consommer une quantite significative de memoire. Configurez des limites dans ~/.wslconfig cote Windows :
# Create/edit C:\Users\yourname\.wslconfig
[wsl2]
memory=8GB
processors=4
swap=2GB
Apres avoir modifie .wslconfig, redemarrez WSL2 :
wsl --shutdown
Executer des conteneurs
Puisque Docker s’execute dans la VM WSL2, vous beneficiez de performances natives pour les conteneurs Linux :
# Run an Nginx container
docker run -d -p 8080:80 --name webserver nginx
# Access it from both WSL2 and Windows browser at http://localhost:8080
# Run a development database
docker run -d -p 5432:5432 \
-e POSTGRES_PASSWORD=devpassword \
--name devdb postgres:16
# Use Docker Compose for multi-container setups
docker compose up -d
Pour un guide complet d’installation de Docker sur Ubuntu, consultez notre article sur Comment Installer Docker sur Ubuntu.
Extension VS Code Remote - WSL
L’extension Remote - WSL de Visual Studio Code vous permet d’utiliser VS Code sous Windows tout en executant tous les outils, terminaux et extensions a l’interieur de WSL2. C’est la methode recommandee pour editer du code stocke dans le systeme de fichiers Linux.
Configuration
- Installez Visual Studio Code sous Windows (pas a l’interieur de WSL2).
- Installez l’extension WSL (identifiant :
ms-vscode-remote.remote-wsl). - Ouvrez un terminal WSL2 et naviguez vers votre repertoire de projet.
- Lancez VS Code depuis le terminal :
cd ~/projects/my-app
code .
VS Code installera automatiquement son composant serveur dans WSL2 et s’y connectera. Vous verrez “WSL: Ubuntu” dans le coin inferieur gauche de VS Code, confirmant que vous etes en mode distant.
Avantages cles
- Les extensions s’executent dans WSL2 : Les serveurs de langage, linters, debogueurs et formateurs s’executent dans l’environnement Linux, eliminant les problemes de compatibilite inter-OS.
- Le terminal est un vrai shell Linux : Le terminal integre est votre bash/zsh WSL2, pas PowerShell.
- La surveillance des fichiers fonctionne nativement : Le rechargement a chaud pour les frameworks comme React, Vue et Next.js fonctionne sans configuration supplementaire car l’observateur de fichiers opere sur le systeme de fichiers Linux.
- L’integration Git utilise le Git Linux : VS Code utilise le binaire Git dans WSL2, evitant les problemes de fins de ligne et de chemins.
Extensions recommandees pour le developpement sous WSL2
Installez ces extensions dans l’environnement WSL2 (elles apparaitront sous “WSL: Ubuntu - Installed”) :
# From inside WSL2 terminal
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension golang.go
code --install-extension bradlc.vscode-tailwindcss
Reseau entre Windows et WSL2
Le reseau de WSL2 a considerablement evolue. Sur les versions modernes de Windows 11 avec WSL2 2.0+, le reseau utilise le mode miroir par defaut, ce qui simplifie la plupart des scenarios de connectivite.
Acceder aux services WSL2 depuis Windows
Par defaut, les services executant dans WSL2 sont accessibles depuis Windows via localhost :
# Start a development server in WSL2
python3 -m http.server 3000
# Access it from Windows browser: http://localhost:3000
Acceder aux services Windows depuis WSL2
Vous pouvez atteindre les services Windows depuis WSL2 en utilisant egalement localhost (mode miroir sous Windows 11), ou utiliser l’adresse IP de l’hote Windows :
# Find the Windows host IP (useful for older builds)
cat /etc/resolv.conf | grep nameserver
# Output example: nameserver 172.28.80.1
# Or use the hostname
ping "$(hostname).local"
Configurer le reseau en mode miroir (Windows 11)
Ajoutez a votre fichier .wslconfig sous Windows :
# C:\Users\yourname\.wslconfig
[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
Redirection de ports pour l’acces externe
Si vous avez besoin que des appareils externes accedent aux services executant dans WSL2 :
# Forward port 3000 from Windows to WSL2 (run as Administrator)
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=localhost
# Remove the forwarding rule when no longer needed
netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0
# List all forwarding rules
netsh interface portproxy show v4tov4
Prise en Charge GPU et CUDA
WSL2 prend en charge le passthrough GPU, vous permettant d’executer des charges de travail CUDA, des frameworks d’apprentissage automatique et meme des applications graphiques Linux directement.
Prerequis
- Un GPU NVIDIA avec un pilote Windows recent (Game Ready ou Studio driver 470.76+)
- Windows 11 ou Windows 10 build 21H2+
Verifier l’acces au GPU
# Check if the GPU is visible
nvidia-smi
# You should see your GPU model, driver version, and CUDA version
Installer le CUDA Toolkit dans WSL2
# Do NOT install a Linux NVIDIA driver inside WSL2 -- use the Windows driver
# Only install the CUDA toolkit
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install -y cuda-toolkit
Tester avec PyTorch
pip install torch torchvision
python3 -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}'); print(f'Device: {torch.cuda.get_device_name(0)}')"
Important : N’installez jamais un pilote d’affichage NVIDIA Linux a l’interieur de WSL2. Le pilote GPU Windows gere le passthrough GPU. L’installation d’un pilote Linux provoquera des conflits.
Gestion de Plusieurs Distributions
WSL2 vous permet d’executer simultanement plusieurs distributions Linux, ce qui est utile pour tester dans differents environnements ou isoler des charges de travail.
Installer des distributions supplementaires
# List available distributions
wsl --list --online
# Install additional distributions
wsl --install -d Debian
wsl --install -d Ubuntu-22.04
Basculer entre les distributions
# List installed distributions and their status
wsl --list --verbose
# Launch a specific distribution
wsl -d Debian
# Set a default distribution
wsl --set-default Ubuntu-24.04
Exporter et importer des distributions
Cela s’avere utile pour creer des sauvegardes ou partager des environnements preconfigures avec votre equipe :
# Export a distribution to a tar file
wsl --export Ubuntu-24.04 D:\backups\ubuntu-24.04-backup.tar
# Import a distribution from a tar file
wsl --import MyCustomUbuntu D:\wsl\MyCustomUbuntu D:\backups\ubuntu-24.04-backup.tar
# Launch the imported distribution
wsl -d MyCustomUbuntu
Supprimer une distribution
# Unregister and delete a distribution (WARNING: destroys all data)
wsl --unregister Debian
Reference des Commandes WSL
Voici un tableau de reference complet des commandes WSL les plus importantes :
| Commande | Description |
|---|---|
wsl --install | Installer WSL avec la distribution Ubuntu par defaut |
wsl --install -d <distro> | Installer une distribution specifique |
wsl --list --online | Lister toutes les distributions disponibles |
wsl --list --verbose | Lister les distributions installees avec version et etat |
wsl --set-default-version 2 | Definir WSL2 par defaut pour les nouvelles installations |
wsl --set-default <distro> | Definir la distribution par defaut |
wsl --set-version <distro> 2 | Convertir une distribution WSL1 en WSL2 |
wsl --shutdown | Arreter toutes les distributions en cours et la VM |
wsl --terminate <distro> | Terminer une distribution specifique |
wsl --export <distro> <file> | Exporter une distribution vers un fichier tar |
wsl --import <name> <path> <file> | Importer une distribution depuis un fichier tar |
wsl --unregister <distro> | Supprimer une distribution et effacer toutes ses donnees |
wsl --update | Mettre a jour le noyau Linux de WSL2 |
wsl --version | Afficher la version de WSL, du noyau et de WSLg |
wsl --status | Afficher la configuration WSL et la distribution par defaut |
wsl -d <distro> -u root | Lancer une distribution en tant qu’utilisateur root |
wsl hostname -I | Afficher l’adresse IP de la VM WSL2 |
Depannage
WSL2 ne demarre pas avec une erreur de virtualisation
Si vous voyez une erreur telle que “Please enable the Virtual Machine Platform Windows feature”, verifiez que la virtualisation est activee dans votre BIOS/UEFI :
# Check if virtualization is enabled
systeminfo | findstr /i "Hyper-V"
# Re-enable the required features
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
WSL2 consomme trop de memoire
Par defaut, WSL2 peut utiliser jusqu’a 50 % de la memoire totale de votre systeme. Creez ou modifiez C:\Users\yourname\.wslconfig :
[wsl2]
memory=4GB
swap=2GB
Puis redemarrez WSL2 :
wsl --shutdown
La resolution DNS echoue dans WSL2
Si ping google.com echoue mais que ping 8.8.8.8 fonctionne, le DNS est en cause :
# Temporary fix: manually set DNS
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "nameserver 8.8.4.4" >> /etc/resolv.conf'
# Prevent WSL from overwriting resolv.conf
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
Puis redemarrez WSL2 avec wsl --shutdown depuis PowerShell.
Derive de l’horloge entre Windows et WSL2
Apres un cycle de mise en veille ou d’hibernation de Windows, l’horloge de WSL2 peut deriver :
# Check the clock
date
# Sync the clock manually
sudo hwclock -s
# Or on newer builds
sudo ntpdate time.windows.com
Les permissions de fichiers sont incorrectes sur les lecteurs Windows montes
# Add to /etc/wsl.conf inside your distribution
[automount]
enabled = true
options = "metadata,umask=22,fmask=11"
mountFsTab = false
Erreur “Cannot connect to Docker daemon”
# Verify Docker Desktop is running on Windows
# Then check the WSL2 integration setting in Docker Desktop:
# Settings > Resources > WSL Integration > Enable for your distro
# Restart WSL2
wsl --shutdown
# Verify Docker works
docker ps
Resume
WSL2 transforme Windows en une plateforme de developpement de premier plan pour les flux de travail bases sur Linux. Avec un veritable noyau Linux, des performances natives du systeme de fichiers, l’integration Docker et une connectivite transparente avec VS Code, vous pouvez profiter du meilleur des deux systemes d’exploitation sans compromis.
Pour tirer le meilleur parti de votre environnement WSL2 :
- Stockez toujours les fichiers de projet dans le systeme de fichiers Linux pour des performances optimales.
- Utilisez Windows Terminal avec des profils personnalises pour chaque distribution.
- Tirez parti de VS Code Remote - WSL pour conserver votre experience d’edition sous Windows tout en executant tout sous Linux.
- Configurez
.wslconfigpour gerer l’allocation memoire et processeur de vos charges de travail. - Utilisez Docker Desktop avec le backend WSL2 pour les charges de travail conteneurisees — consultez notre guide complet d’installation de Docker pour plus de details.
- Automatisez vos flux de travail avec des pipelines CI/CD une fois votre environnement de developpement pret. Consultez notre guide Premiers Pas avec GitHub Actions pour le CI/CD pour passer a l’etape superieure.
Avec WSL2 correctement configure, vous disposez d’un environnement de developpement Linux puissant, flexible et performant qui s’execute directement sur votre machine Windows.