Dans le monde de l’informatique, il y a une tendance majeure ces dernières années qui est la convergence entre les écosystèmes Windows et Linux.

Dans cette optique, Microsoft a introduit le Sous-système Windows pour Linux (WSL), une fonctionnalité révolutionnaire permettant aux utilisateurs de Windows d’exécuter des applications Linux directement sur leur machine Windows, sans recourir à des machines virtuelles ou des configurations compliquées.

Dans cet article, nous explorerons les points forts du WSL, comment il parvient à alléger la charge sur la machine physique tout en offrant une expérience utilisateur transparente et nous finirons par un atelier où nous illustrons les étapes à suivre afin d’installer et exploiter WSL sur votre machine Windows.

 

Les avantages du WSL :

  • Compatibilité Linux native sur Windows : Le WSL (Windows Subsystem for Linux) permet une compatibilité fluide avec les applications Linux, offrant aux développeurs et aux utilisateurs la possibilité de profiter de l’écosystème varié et riche de Linux sans quitter leur environnement Windows familier.
  • Intégration transparente : Une fois activé, le WSL s’intègre harmonieusement à l’environnement Windows, offrant un accès bidirectionnel aux fichiers entre les systèmes de fichiers Windows et Linux. Les utilisateurs peuvent exécuter des commandes Linux dans une fenêtre de terminal Windows, et inversement, simplifiant ainsi considérablement leur flux de travail.
  • Performances améliorées : Contrairement aux machines virtuelles traditionnelles, le WSL n’ajoute pas une charge significative à la machine hôte. Les applications Linux s’exécutent directement sur le noyau Windows, bénéficiant ainsi de performances comparables à celles d’une installation native Linux.
  • Écosystème Linux étendu : Grâce au WSL, les utilisateurs ont accès à un large éventail d’outils et de logiciels disponibles dans les dépôts des distributions populaires telles que Ubuntu, Debian et bien d’autres. Cela ouvre de nouvelles possibilités en termes de développement et de collaboration pour les utilisateurs sous Windows.

 

Comment le WSL Allège-t-il la Machine Windows Physique ?

  • Utilisation Ressources Minimaliste : Contrairement aux machines virtuelles qui nécessitent la virtualisation complète du matériel, le WSL utilise une approche plus légère en partageant le noyau du système hôte. Cela réduit considérablement l’empreinte mémoire et les besoins en CPU, permettant une utilisation efficace des ressources système.
  • Évite la Duplication des Services : Plutôt que d’exécuter un système d’exploitation Linux complet en parallèle avec Windows, le WSL évite la duplication des services en utilisant le noyau Windows sous-jacent. Cela réduit la complexité et les conflits potentiels entre les deux systèmes d’exploitation, tout en économisant des ressources système précieuses.
  • Optimisation des I/O : Le WSL utilise des mécanismes d’entrée/sortie (I/O) efficaces pour accéder aux fichiers du système de fichiers Windows, ce qui minimise les temps de latence et améliore les performances globales. Cela garantit une expérience utilisateur fluide, même lors de l’exécution d’applications Linux intensives en termes de lecture/écriture de fichiers.
  • Gestion Intelligente de la Mémoire : Le WSL utilise une gestion intelligente de la mémoire pour optimiser l’utilisation des ressources système, en libérant automatiquement la mémoire inutilisée lorsque cela est nécessaire. Cela permet d’éviter le gaspillage de ressources et garantit une expérience utilisateur stable même lors de l’exécution de multiples applications Linux simultanément.

 

Mise en place et exploitation du WSL sur son poste

Prérequis

Hyper-V

  1. Ouvrir une console PowerShell en tant qu’administrateur.
  2. Taper la commande suivante afin d’activer Hyper-V > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

 

Windows Containers

  1. Ouvrir une console PowerShell en tant qu’administrateur.
  2. Taper la commande suivante afin d’activer les conteneurs Windows : > Enable-WindowsOptionalFeature -Online -FeatureName containers –All

NB : Vous pouvez lancer les deux commandes successivement. Vous devrez redémarrer votre machine par la suite.

 

Distribution Linux

a. WSL 2

  1. Vous devez tout d’abord activer les fonctionnalités « Windows Subsystem for Linux » et « Virtual Machine Platform » avant d’installer toute distribution Linux sous Windows.

2. Ouvrir une console PowerShell en tant qu’administrateur.

3. Taper les commandes suivantes :

> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4. Télécharger et installer le package Linux kernel update (Lien de téléchargement)

5. Redémarrer votre machine afin de finaliser l’installation du WSL puis le mettre à jour à la version WSL 2.

b. Configurer la version WSL 2

Ouvrir une console PowerShell (droit administrateur non requis) et exécuter cette commande afin de surcharger la version WSL 2 comme version par défaut lors de l’installation d’une nouvelle distribution Linux.

wsl –set-default-version 2

c. Ubuntu installation 

Une fois les prérequis installés, vous pouvez maintenant choisir une distribution linux de votre choix disponible dans le Windows Store.

Si vous n’avez pas le store Windows, vous pouvez suivre cette procédure La vraie solution pour l’application Windows 11 Store manquante – Microsoft Community Hub

Vous pouvez également le télécharger à partir de PowerShell (sans être administrateur) à l’aide de la commande suivante :  > wsl –install -d Ubuntu

 

Connecter votre distribution au réseau
  1. Ouvrir un terminal PowerShell en tant qu’administrateur.

2. Lancer la commande suivante pour créer une table NAT :   > New-NetNat -Name « WSLNat »InternalIPInterfaceAddressPrefix 192.168.56.1/24

3. Fermer le terminal PowerShell et ouvrir un terminal Ubuntu depuis le menu démarrer

4. Désactiver la génération par défaut du DNS avec la commandes suivante (pour copier Ctrl+C, pour coller clic droit) > printf ‘%s\n’ ‘[network]’ ‘generateResolvConf = false’ | sudo tee /etc/wsl.conf

5. Redémarrer Ubuntu depuis un terminal PowerShell (non-admin) avec la commande suivante : > wsl –shutdown

6. Réouvrir votre terminal Ubuntu (s’il a été fermé) et lancer cette commande afin de supprimer le fichier resolv.conf : > sudo rm /etc/resolv.conf

Puis lancer la commande afin de recréer le fichier : > sudo vi /etc/resolv.conf

Ensuite, coller le contenu suivant dans le fichier afin de définir votre nouveau DNS et celui de Google (pour résoudre les noms de machines sans mettre le domaine)

nameserver 192.168.56.1

nameserver 8.8.8.8                                                                                                                                                                                                                                                            

7. Finalement lancer la commande suivante afin de créer un script de démarrage qui re-routera l’ensemble du trafic vers votre NAT :

8. Redémarrer encore une fois WSL, vous devriez avoir un prompt admin Windows que vous pouvez valider

9. Si votre machine utilise un ZScaler, veuillez télécharger le certificate Zscaler → nom du fichier : ZscalerRootCA.crt

10. Si vous utiliser des certificats pour accéder aux Gitlab, Nexus ou autre, veuillez les télécharger aussi.

11. Mettre tous les certificats dans un dossier (Windows) commun par exemple: /mnt/c/Users/$login/Downloads/certificats

12. Installer les certificats depuis Ubuntu avec les commandes suivantes :

  > sudo cp /mnt/c/Users/$login/Downloads/certificats/* /usr/local/share/ca-certificates

  > sudo update-ca-certificates                                                                                                                                           

13. Tester la connectivité avec un curl: > curl -v https://google.com       

Source : Add symantec to the list of firewalls which blocks WSL by felipecrs · Pull Request #1046 · MicrosoftDocs/WSL (github.com)

 

Ajouter un environnement graphique et s’y connecter en xrdp

  1. Depuis un terminal Ubuntu lancer les commandes suivantes :

> sudo apt update && sudo apt -y upgrade

> sudo apt -y install xfce4

> sudo apt-get install xrdp

> sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

> sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini

> sudo sed -i ‘s/max_bpp=32/#max_bpp=32\nmax_bpp=128/g’ /etc/xrdp/xrdp.ini

> sudo sed -i ‘s/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g’ /etc/xrdp/xrdp.ini

> sudo /etc/init.d/xrdp start

NB : La dernière commande est à lancer manuellement à chaque redémarrage d’Ubuntu.

2. Depuis le menu démarrer Windows ouvrir l’application « Connexion à un Bureau Virtuel » et saisissez l’adresse suivante localhost:3390

3. Vous pouvez entrer vos crédenciales Ubuntu dans la fenêtre de login et c’est parti 

Source : Linux on Windows: WSL with Desktop Environment via RDP – DEV Community

 

Installer les outils de développement

Un navigateur

Pour vous connecter à JetBrains vous allez avoir besoin d’un navigateur web, malheureusement la plupart des navigateurs nécessite snap sur Ubuntu pour s’installer et ce dernier n’est pas dispo sur WSL.

Le plus facile est d’utiliser un fichier.deb, par exemple pour chrome vous pouvez le trouver ici → https://www.google.com/chrome/?platform=linux et l’installer depuis Ubuntu avec la commande suivante : 

> sudo dpkg -i /mnt/c/Users/$login/Downloads/google-chrome-stable_current_amd64.deb                   

 

Intellij

Trois possibilités :

  • L’approche Windows interconnecté WSL
  • L’approche pure Linux
  • L’approche Intellij Windows en Gateway WSL sur Ubuntu

Intellij évoluant très vite sur ces sujets dernièrement, il est recommandé aux équipes de faire des POC régulièrement et de maintenir cette documentation à jour.

En termes de performance de compilation, les trois solutions semblent équivalentes.

L’approche Windows interconnecté WSL semble plus fluide en termes d’IHM.

 

a. L’approche Windows interconnecté WSL

Pour la première approche, cloner votre projet dans Ubuntu, par exemple depuis \\wsl$\Ubuntu\home\{user}\gitRepository

Faire pointer sur un JDK se trouvant dans votre Ubuntu. (En général dans \\wsl$\Ubuntu\home\{user}\.jdk\*)

Bien configurer votre .m2, .gitconfig dans vos répertoires \\wsl$\Ubuntu\home\{user}\

 

b. L’approche pure linux

Maintenant vous pouvez télécharger et lancer le script d’installation Jetbrains Toolbox depuis le site officiel d’Intellij ici → https://www.jetbrains.com/toolbox-app/download/download-thanks.html?platform=linux

Si vous aviez bridé vos distributions WSL (CPU et RAM), n’oubliez pas de rehausser ces valeurs dans le fichier windows %USERPROFILE%/.wslconfig et redémarrer WSL.

 

c. L’approche Gateway WSL

En l’état c’est fonctionnel, le client Windows installe automatiquement Intellij côté Linux et connecte la Gateway.

Des problèmes de « lag » de l’IHM sont présent, notamment sur l’auto-complétions.

d. Si vous ne voulez pas passer par xrdp

Une fois Intellij installé, vous pouvez lancer vos applications graphiques directement depuis Windows grâce à wslg.exe

Créer un nouveau raccourci Windows et ajouter la commande suivante dans la cible :

%LOCALAPPDATA%\Microsoft\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_8wekyb3d8bbwe\wslg.exe -d Ubuntu –cd « ~ » — ~/.local/share/JetBrains/Toolbox/scripts/idea

Il est possible que wlsg.exe se trouve plutôt ici : C:\Program Files\WSL

Dans ce cas changez le raccourci en fonction : 

« C:\Program Files\WSL\wslg.exe » -d Ubuntu –cd « ~ » — ~/.local/share/JetBrains/Toolbox/scripts/idea

Si malgré tout Intellij ne se lance pas, dans la console Ubuntu, lancer la commande :                                                                   > idea -> pour lancer Intellij                                                                                                                                                                               > idea ${chemin vers projet} -> pour lancer Intellij directement sur un projet particulier

 

e. Installer la clé privée pour cloner avec git en ssh

 > sudo cp /mnt/c/Users/$login/.ssh/id_rsa ~/.ssh/                                                                                                                                         > sudo chmod 500 ~/.ssh/id_rsa

Vous pouvez maintenant cloner avec git en SSH.

 

Troubleshooting

Intellij freeze

Si l’on clique sur le bouton « Download Sources » dans un fichier .class Intellij peut freeze si on pas de réseau.

On peut simplement redémarrer la machine ou on peut kill le premier sous-process Intellij depuis xfce-taskmanager (à installer avec apt-get préalablement)

 

La fenêtre WSLG disparaît mais le processus Intellij tourne encore

Quand on sort de veille, il se peut qu’on perde la fenêtre WSLG mais que si l’on fait un htop dans le terminal on voit bien que Intellij tourne encore.

Dans ces cas, il suffit de lancer n’importe quelle autre application WSLG (thunar par exemple) et ça réouvre toutes les fenêtres WSLG fermées.

Source : https://github.com/microsoft/wslg/issues/1098 

 

Echec lors du lancement de la commande sudo apt update && sudo apt -y upgrade

Pour la bypasser/corriger, aller dans le fichier des sources et commenter la source provoquant l’erreur « http://security.ubuntu.com/ubuntu focal-security InRelease » 

> sudo vi /etc/apt/sources.list

 

Impossible de se connecter en bureau à distance

Afin de résoudre ce souci, il faut choisir l’option -> xfce4-session

 

Erreur lors de l’installation de google chrome

Faire > sudo apt –fix-broken install puis relancer la commande

 

Intellij ne démarre pas en mode graphique ou avec le raccourci Windows

Afin de résoudre ce problème, dans un PowerShell faire :

> wsl –update         

> wsl –shutdown

 

En conclusion, le Sous-système Windows pour Linux (WSL) représente un pas en avant significatif dans la convergence des écosystèmes Windows et Linux.

Avec tous ces avantages considérables par rapport à la virtualisation, le WSL ouvre de nouvelles possibilités pour les développeurs et les utilisateurs, tout en offrant une expérience utilisateur fluide et sans heurts.

Que vous soyez un développeur cherchant à exploiter le meilleur des deux mondes ou un utilisateur curieux d’explorer l’écosystème Linux, le WSL est certainement une technologie à considérer.

Partager
Faire suivre