Introduction au Sous-système Windows pour Linux (WSL)
Le Sous-système Windows pour Linux (WSL) est une fonctionnalité de Windows qui permet aux développeurs d'exécuter un environnement GNU/Linux directement sur Windows, sans la surcharge d'une machine virtuelle traditionnelle ni d'une configuration de démarrage double. Il offre une intégration transparente, permettant l'exécution d'outils et d'applications Linux directement depuis le système d'exploitation Windows.
WSL existe en deux versions principales :
- WSL 1 : Traduit les appels système Linux en appels système Windows. Bien que fonctionnel, il présentait des limitations en termes de compatibilité et de performance pour certaines applications.
- WSL 2 : Utilise une véritable machine virtuelle légère basée sur le noyau Linux pour une compatibilité complète des appels système et des performances I/O accrues. C'est la version recommandée pour la plupart des utilisateurs aujourd'hui.
Activation et Installation de WSL
1. Activation des fonctionnalités Windows requises
Avant d'installer une distribution Linux, vous devez activer les fonctionnalités WSL et la plateforme de machine virtuelle sur votre système Windows. Pour ce faire, ouvrez PowerShell en tant qu'administrateur et exécutez les commandes suivantes :
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
Après avoir exécuté ces commandes, un redémarrage de votre ordinateur peut être nécessaire pour que les changements prennent effet.
2. Installation d'une distribution Linux
La manière la plus simple di'nstaller une distribution Linux est d'utiliser la commande wsl --install. Cette commande installe automatiquement la dernière version d'Ubuntu par défaut et configure WSL 2.
wsl --install
Si vous souhaitez installer une distribution spécifique (par exemple, Debian ou openSUSE), vous pouvez lister les distributions disponibles en ligne et en installer une en particulier :
# Lister les distributions Linux disponibles
wsl --list --online
# Installer une distribution spécifique, par exemple "Debian"
wsl --install -d Debian
Alternativement, vous pouvez rechercher et installer des distributions Linux (comme Ubuntu, Debian, Kali Linux, etc.) directement depuis le Microsoft Store. Après l'installation, lancez la distribution depuis le menu Démarrer. La première exécution vous invitera à créer un nom d'utilisateur et un mot de passe Linux.
Interaction entre Windows et Linux via WSL
1. Accès au système de fichiers
WSL permet un accès bidirectionnel et simple entre les systèmes de fichiers Windows et Linux.
Accéder aux fichiers Windows depuis Linux
Les disques Windows sont automatiquement montés sous le répertoire /mnt dans votre distribution Linux. Par exemple, le lecteur C: de Windows est accessible via /mnt/c.
# Naviguer vers le répertoire Program Files sur le lecteur C: de Windows
cd /mnt/c/Program\ Files
# Lister le contenu d'un répertoire Windows
ls -l /mnt/d/MesDocuments
Accéder aux fichiers Linux depuis Windows
Vous pouvez accéder aux fichiers de votre distribution Linux directement via l'Explorateur de fichiers de Windows. Il suffit de taper \\wsl$ dans la barre d'adresse de l'Explorateur. Vous verrez une liste de vos distributions installées, que vous pourrez parcourir comme des dossiers réseau.
# Accès via l'Explorateur de fichiers : \\wsl$
# Exemple de chemin : \\wsl$\Ubuntu\home\votre_utilisateur
2. Exécution de commandes et d'applications
Exécuter des commandes Linux depuis Windows
Vous pouvez lancer des commandes Linux directement depuis l'invite de commandes Windows (CMD) ou PowerShell en préfixant la commande par wsl.
# Afficher les informations du système Linux
wsl uname -a
# Lister les processus en cours dans la distribution par défaut
wsl ps aux
# Exécuter une commande spécifique dans une distribution non par défaut
wsl -d Debian apt update
Gérer vos distributions WSL
Plusieurs commandes wsl sont disponibles pour la gestion de vos environnements Linux :
# Lister toutes les distributions installées avec leur état et leur version WSL
wsl --list --verbose
# Définir une distribution par défaut
wsl --set-default Ubuntu
# Arrêter une distribution spécifique
wsl --terminate Debian
# Arrêter toutes les distributions WSL et la machine virtuelle légère sous-jacente
wsl --shutdown
# Définir la version de WSL (1 ou 2) pour une distribution spécifique
wsl --set-version Ubuntu 2
# Définir la version de WSL par défaut pour les nouvelles installations
wsl --set-default-version 2
Combiner des commandes Windows et Linux
L'interopérabilité de WSL permet de chaîner des commandes Windows et Linux via des pipes (|).
# Lister les fichiers Windows et filtrer avec 'grep' de Linux
dir | wsl grep ".log"
# Lister les processus Linux et filtrer avec 'findstr' de PowerShell
wsl ps aux | findstr "nginx"
Exécuter des applications Windows depuis Linux
Vous pouvez exécuter des exécutables Windows (.exe) directement depuis le terminal Linux de WSL. Ils se comporteront comme s'ils étaient lancés depuis Windows.
# Lancer le Bloc-notes de Windows depuis Linux pour éditer un fichier
notepad.exe mon_fichier_linux.txt &
# Ouvrir l'Explorateur de fichiers Windows dans le répertoire courant de WSL
explorer.exe .
# Lancer VS Code (si installé sur Windows) pour ouvrir le répertoire courant
code .
3. Accès réseau
Accéder à des services Linux depuis Windows
Si vous exécutez une application réseau (comme un serveur web Nginx ou un API REST) dans votre distribution WSL, vous pouvez y accéder directement depuis votre navigateur ou d'autres applications Windows en utilisant localhost.
# Exemple : Démarrer un serveur web Nginx dans WSL
sudo service nginx start
Vous pourrez ensuite y accéder depuis Windows via http://localhost (ou le port configuré).
Accéder à des services Windows depuis Linux
Pour qu'une application dans WSL puisse se connecter à un service s'exécutant sur Windows, vous devez utiliser l'adresse IP de l'hôte Windows. Vous pouvez récupérer cette adresse IP depuis votre distribution Linux :
# Récupérer l'adresse IP de l'hôte Windows
grep nameserver /etc/resolv.conf | awk '{print $2}'
Cette adresse IP peut ensuite être utilisée dans vos applications Linux pour se connecter aux services Windows (par exemple, une base de données MySQL ou un serveur web IIS).