Mise à jour : 17 septembre 2020
Introduction
Le sous-système Windows pour Linux permet aux utilisateurs/développeurs d’exécuter un environnement GNU/Linux directement sur Windows sans avoir à utiliser une machine virtuelle.
Son introduction date de 2016 avec la mise à jour de Windows 10 version 1607.
Les principales fonctionnalités de WSL :
Actuellement, il existe deux versions de WSL :
La version 1, qui est disponible jusqu’à la dernière mise à jour de Windows 10 version 1909, est un driver pour Windows implémentant l’API du noyau Linux, driver qui transforme les appels au noyau en instructions compatibles Windows. Ce qui pose certains problèmes de compatibilité et de vitesse d’exécution, notamment avec l’API permettant d’accéder au système de fichiers.
La version 2 permet de résoudre les différents problèmes de compatibilité et de performances rencontrés avec la version 1. Cette nouvelle version de WSL 2 utilise les fonctionnalités Hyper-V pour créer une machine virtuelle légère avec un noyau Linux minimal. Elle permet une meilleure compatibilité avec les logiciels Linux, la prise en charge de Docker et une augmentation notable des performances du système de fichiers. Elle est disponible depuis le mois de juin avec la mise à jour Windows 10 version 2004.
Dans ce billet, nous allons décrire l’installation et la configuration de WSL pour une distribution Ubuntu LTS. Le principe sera identique pour les distributions Arch Linux ou Alpine.
Nous verrons dans un prochain billet comment utiliser et mettre en œuvre cette distribution Linux pour automatiser la collecte et le traitement des données acquises lors d’une campagne de recherche sur un navire océanographique.
Installation
Suivre pas à pas les instructions du Guide d’installation du sous-système Windows pour Linux pour Windows 10.
Avant d’installer des distributions Linux pour WSL, vous devez vous assurer que la fonctionnalité facultative « Sous-système Windows pour Linux » est activée :
~/.bashrc
et ajouter la variable d’environnement DISPLAY pour rediriger l’affichage graphique sur le serveur X Windows (WSL1) :
Recharger le fichier ~/.bashrc
pour prendre en compte la nouvelle variable DISPLAY :
Mettre à jour vers WSL 2
Pour effectuer une mise à jour de WSL1 vers WSL 2, il faut avoir installé la mise à jour Windows 10 de mai 2020 (version 2004).
Vérifiez votre version de Windows en sélectionnant simultanément les touches Windows + R puis entrez la commande :
Si ce n’est pas le cas, lancer l’assistant Windows Update, ou installer l’utilitaire de mise à jour vers la version 2004 depuis le site de Microsoft.
Si aucune option de mise à jour n’est proposée, ne pas insister, Microsoft diffuse progressivement Windows 10 2004 uniquement sur les machines qu’il estime compatibles et tente d’identifier celles qui présentent des problèmes. Dans tous les cas le choix est laissé à l’utilisateur d’installer ou non cette nouvelle version majeure.
Avant d’installer WSL 2, vous devez activer la fonctionnalité facultative « Plateforme de machine virtuelle ».
Ouvrez un terminal PowerShell en tant qu’administrateur et exécutez :
Récupérer le programme de mise à jour du noyau Linux depuis la page https://aka.ms/wsl2kernel
Exécuter le programme wsl_update_x64.msi :
Redémarrer votre ordinateur pour terminer l’installation la mise à jour vers WSL 2.
Définir WSL 2 comme version par défaut
Exécuter la commande suivante dans PowerShell pour définir WSL 2 comme version par défaut lors de l’installation d’une nouvelle distribution Linux :
Migrer une distribution WSL 1 vers WSL 2
en remplaçant
Configuration du serveur X sous WSL2
WSL2 a sa propre adresse IP et ne partage pas encore l’adresses de lookup localhost (127.0.0.1) ; lorsque vous vous connectez à 127.0.0.1 dans WSL2, vous vous connectez en fait à une machine virtuelle WSL2 plutôt qu’à la machine Windows sous-jacente. Vous devez donc utiliser directement l’adresse IP attribuée à Windows.
Nous vous recommandons d’utiliser l’adresse IP interne qui est extraite dynamiquement et de l’attribuer à la variable d’environnement DISPLAY, code à rajouter dans votre fichier d’initialisation .bashrc :
Démarrer le serveur X sous Windows, le programme XLauch de VcXsrv, puis dans une fenêtre bash sous Linux, lancer le programme xeyes pour tester l’affichage, les pupilles doivent suivre votre souris comme décrit précédemment sous WSL1.
Installation et configuration de Python avec Miniconda
Miniconda est un installateur minimal pour Conda qui permet de gérer des bibliothèques pour développer en Python, notamment pour l’analyse de données. C’est une version réduite d’Anaconda qui inclut uniquement conda, une version de Python 3.7 plus récente que celle de la distribution Ubuntu 18.04 et les paquets dont ils dépendent.
Par rapport au gestionnaire de paquets pip, conda est très efficace. Il gère la version de Python et les paquets compatibles avec cette dernière de manière optimale.
Installation et configuration de miniconda
Pour l’installation de Miniconda,, nous partons du principe que vous l’installerez en tant qu’utilisateur, et non pas en tant qu’administrateur. Autrement dit, vous n’aurez pas besoin de droits spéciaux pour pouvoir installer Miniconda et les autres modules nécessaires. :
Dans un shell, lancez l’installation de Miniconda avec la commande et répondre aux questions suivantes :
Relancer votre shell afin qu’il prenne en compte la procédure d’initialisation de conda.
Tester la version de python et de conda :
Installation des modules scientifiques Python avec Miniconda :
Utilisation de VSC (Visual Studio Code) avec WSL
Le principe consiste à utiliser Visual Studio Code sous Windows tout en utilisant les chaînes d’outils de développement et les utilitaires spécifiques à Linux, d’exécuter et déboguer les applications basées sur Linux. Pour cela, il est nécessaire d’installer les 2 extensions "Remote WSL" et "Remote Development"
Ce paragraphe est en cours de rédaction
Developing in WSL Une fois lancé VSC sous Windows, installer l’extension "Remote WSL" qui permettra d’utiliser le sous-système Windows pour Linux (WSL) comme environnement de développement en utilisant les outils et utilitaires spécifiques à Linux.
Ensuite, rajouter la ligne suivante dans le fichier setting.json, voir documentation officielle :
pour utiliser le shell Bash Linux comme Terminal de Visual Studio Code.
Vous bénéficiez alors d’un environnement de développement simple, performant et aisé à maintenir.
Utilisation de WSL
Le répertoire utilisateur
Par défaut, une session WSL démarre depuis le répertoire utilisateur Windows, soit sous : /mnt/c/Users/nom d’utilisateur/ mais la variable HOME est définie comme /home/nom d’utilisateur, donc si vous taper cd, pour êtes redirigé vers votre répertoire utilisateur Linux :
Vous pouvez voir le contenu de ce disque sur le réseau en allant à \\wsl$\nom de la distribution\nom d’utilisateur\home dans l’explorateur Windows ou directement en tapant la commande explorer.exe .
de votre invite de commande bash.
Le montage/partage des disques
Les disques internes de Windows sont automatiquement montés sous /mnt/
Pour monter un partage réseau, un disque externe ou une clé USB, il suffit d’entrer la commande suivante pour monter le disque E : de 2To sous /mnt/e :
Commandes d’administration de WSL
Depuis une session PowerShell, lister les distributions installées :
Obtenir de l’aide :
Lancer wsl :
Monter la racine de la distribution Linux dans l’explorateur Windows comme un disque X :
Lister les distributions installées :
Lister la version WSL des distributions installées :
Changer l’utilisateur par défaut au lancement :
Depuis une fenêtre powershell, si vous avec installé ubuntu 1804 :-
si vous avec installé ubuntu 2004 :-
Le chemin de l’exécutable se trouve sous :
C:\Users\<username>\AppData\Local\Microsoft\WindowsApps
chemin qui peut etre obtenu avec l’équivalent de la commande Unix which
qui est get-command
Copie d’une distribution
Si vous avez besoin d’installer une deuxième machine avec WSL, vous pouvez dupliquer une distribution dans un fichier tar puis la restaurer sur un autre PC.
Ouvrez une fenêtre PowerShell dans le programme terminal :
Utiliser ensuite la commande wsl —import pour importer le fichier .tar dans une nouvelle distribution.
Problèmes
Sur un PC DELL Précision 5820, j’ai du attendre que Windows 10 propose la mise à jour en version 2004 avec Windows Update, l’outil de migration refusait la mise à jour avec un code d’erreur car semble t’il, certains drivers n’étaient pas compatibles.
J’ai eu ensuite des difficultés pour réaliser la migration de ma distribution Ubuntu 18.04 en WSL2. Il était impossible également d’installer une nouvelle distribution, avec le message d’erreur suivant :
The operation could not be started because a required feature is not installed.
En français :
L'opération n'a pas pu être démarrée car une fonctionnalité requise n'est pas
installée.
J’ai fini par trouver sur le net un article qui a résolu le problème :
Fix Hyper-V not working after Windows 10 v1809 upgraded
La difficulté consiste à retrouver les bons paramètres traduits en Français dans les méandres du panneau de configuration de Windows 10 à partir des informations en Anglais.
Depuis le panneau de contrôle, aller dans "Mise à jour et sécurité", puis "Sécurité Windows" et sélectionner "Control des applications et du navigateur"
puis en page de page, cliquer sur "Paramètres d’Exploit protection" et sélectionner l’onglet "Paramètres du programme" :
sélectionner C:\WINDOWS\System32\vmcompute.exe
, puis cliquer sur "Modifier", dérouler l’ascenseur jusqu’au champs "Protection du flux de contrôle"
et décocher la case "Remplacer les paramètres du système" pour désactiver la protection.
Lancer une fenêtre DOS ou PowerShell en mode administrateur , lancer la commande net start vmcompute
Normalement, la migration de la distribution devrait bien se passer cette fois :
Liens