ARCHITECTURE WSL2 Windows 10/11 Host (NT Kernel + Hyper-V) VM Legere (Noyau Linux Reel 5.15+) Ubuntu 24.04 apt, bash, git Debian 12 Node.js, Python Docker Engine Conteneurs VS Code Remote-WSL Plusieurs distributions Linux partagent une seule VM legere avec prise en charge complete du noyau

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 localhost entre 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 :

CaracteristiqueWSL1WSL2
ArchitectureCouche de traductionVM legere avec noyau reel
Noyau LinuxAucun (traduction des syscalls)Noyau Linux complet
Performances systeme de fichiers (fichiers Linux)ModereesVitesse ext4 native
Performances systeme de fichiers (fichiers Windows)Rapides (acces NTFS direct)Plus lentes (protocole 9P)
Compatibilite des appels systemePartielle (~70 %)Totale (100 %)
Prise en charge DockerNonOui
Prise en charge systemdNonOui (Windows 11)
Utilisation memoireFaibleDynamique (augmente/diminue)
Temps de demarrageInstantane~1 seconde
ReseauPartage la pile reseau WindowsAdaptateur 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.autocrlf sur input garantit 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

RaccourciAction
Ctrl+Shift+TNouvel onglet
Ctrl+Shift+DDupliquer le volet
Alt+Shift+DFractionner le volet
Ctrl+TabChanger d’onglet
Ctrl+Shift+WFermer 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

  1. Telechargez et installez Docker Desktop pour Windows.
  2. Pendant l’installation, assurez-vous que “Use WSL 2 instead of Hyper-V” est selectionne.
  3. Apres l’installation, ouvrez les parametres de Docker Desktop et naviguez vers Resources > WSL Integration.
  4. 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

  1. Installez Visual Studio Code sous Windows (pas a l’interieur de WSL2).
  2. Installez l’extension WSL (identifiant : ms-vscode-remote.remote-wsl).
  3. Ouvrez un terminal WSL2 et naviguez vers votre repertoire de projet.
  4. 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 :

CommandeDescription
wsl --installInstaller WSL avec la distribution Ubuntu par defaut
wsl --install -d <distro>Installer une distribution specifique
wsl --list --onlineLister toutes les distributions disponibles
wsl --list --verboseLister les distributions installees avec version et etat
wsl --set-default-version 2Definir WSL2 par defaut pour les nouvelles installations
wsl --set-default <distro>Definir la distribution par defaut
wsl --set-version <distro> 2Convertir une distribution WSL1 en WSL2
wsl --shutdownArreter 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 --updateMettre a jour le noyau Linux de WSL2
wsl --versionAfficher la version de WSL, du noyau et de WSLg
wsl --statusAfficher la configuration WSL et la distribution par defaut
wsl -d <distro> -u rootLancer une distribution en tant qu’utilisateur root
wsl hostname -IAfficher 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 :

  1. Stockez toujours les fichiers de projet dans le systeme de fichiers Linux pour des performances optimales.
  2. Utilisez Windows Terminal avec des profils personnalises pour chaque distribution.
  3. Tirez parti de VS Code Remote - WSL pour conserver votre experience d’edition sous Windows tout en executant tout sous Linux.
  4. Configurez .wslconfig pour gerer l’allocation memoire et processeur de vos charges de travail.
  5. 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.
  6. 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.