Ceci est une ancienne révision du document !



Windows Subsystem for Linux

Le Windows Subsystem for Linux (WSL), en français "Sous-système Windows pour Linux", parfois grossièrement appelé "Bash sur Windows" est une couche de compatibilité permettant d'exécuter des fichiers EFL (binaires exécutables) pour Linux à partir d'un système Windows 10.

Le but de WSL est de simplifier le travail des développeurs (en particulier dans le domaine du web) en rendant possible la mise en place d'une structure et d'outils Linux sous Windows, et ainsi d'harmoniser les environnements de développement Windows avec les environnements GNU/Linux qu'on trouve couramment sur les serveurs de production.

Cet outil n'est donc pas destiné au grand public et son intérêt n'est pas de déployer "nativement" un environnement de bureau GNU/Linux sous Windows, même si c'est techniquement envisageable.

Le principe est le même que Wine, mais "dans l'autre sens".
Ce principe avait déjà été développé par Cygwin par le passé (pour XP/Vista/7) de manière indépendante,​ mais désormais, le WSL fournit ces fonctionnalités pour Windows 10 (uniquement) avec le support conjoint de Microsoft et de Canonical.

Le WSL ne fonctionne pas avec n'importe quel exécutable : seules des versions précises d'Ubuntu sont supportées correctement. La première distribution Linux concernée est Ubuntu 14.04, mais c'est Ubuntu 16.04 qui est maintenant proposée au téléchargement.

Les applications graphiques ne fonctionnent pas aussi facilement que les applications en ligne de commande, car elles nécessitent un serveur d'affichage X externe, et les applications requérant certains services très spécifiques du noyau Linux risquent aussi de rencontrer des problèmes.

  • Une copie (légale) à jour de Windows 10 (build n°14393 ou supérieure), de type 64 bits.
  • Une session Windows avec les droits d'administrateur.

Pour savoir si votre système est compatible, allez dans les Paramètres → Système → Informations Système. Regardez la build du système ("Version du système d'exploitation") et son type ("Type du système").

Installer le système principal

  • Dans Paramètres → Mise à jour et sécurité → Pour les développeurs, choisir "Mode développeur". La modification peut prendre beaucoup de temps à s'appliquer.
  • Dans Programmes et fonctionnalitésActiver ou désactiver des fonctionnalités Windows, activez la fonctionnalité "Sous-système Windows pour Linux".
  • Redémarrez Windows 10.
  • Ouvrez une invite de commande Windows, et tapez-y bash. Après que vous ayez accepté la licence, une image partielle d'Ubuntu (une LTS, au moment de la rédaction de cet article c'est la 16.04) sera téléchargée depuis le Windows Store, et installée. Il vous faudra préciser un nom d'utilisateur et un mot de passe. Un raccourci "Bash sur Ubuntu sur Windows" sera ajouté au menu démarrer.

Le système installé permet d'utiliser des applications en ligne de commande (nano, vim, ssh, git, npm, gem, …), des applications sans interface graphique (apache, nginx, mysql, nodejs, ruby, …) et d'exécuter des scripts bash.

Installer les logiciels voulus

La gestion des paquets en ligne de commande se fait comme sur un système Ubuntu normal.

Dans le terminal "Bash sur Windows", tapez tout d'abord :

sudo apt update

Puis, par exemple si on veut utiliser l'éditeur de texte vim :

sudo apt install vim

Installer un serveur X

Pour pouvoir lancer des applications graphiques, il faut installer un serveur X externe pour Windows, comme Xming ou VcXsrv.

Installez par exemple la dernière version de VcXsrv depuis sa page SourceForge, c'est le serveur d'affichage qui sera utilisé dans la suite de cet article.

Les paramétrages applicables au shell bash devraient être valables ici (prompt, couleurs, etc.).

Paramétrage du serveur X

Cliquez sur XLaunch, qui a du apparaître dans votre menu démarrer suite à l'installation de VcXsrv.

Le mode "multiple windows" permet d'utiliser chaque application graphique Linux dans une fenêtre différente du bureau Windows 10, alors que les autres modes permettent de réunir toutes les applications graphiques Linux dans une seule fenêtre (avec ou sans barre de titre, voire en plein écran).
Faites attention à bien régler "0" dans le champ en bas.

Les autres paramètres (après avoir cliqué sur Suivant) ont des valeurs par défaut normalement correctes.

Un message d'erreur suggérant qu'il manque des fichiers .log peut apparaître après avoir cliqué sur Terminer, il ne m'a personnellement pas gêné pour la suite.

Ensuite, éditez le fichier ~/.bashrc (dans le terminal "Bash sur Windows") :

nano .bashrc

À la fin du fichier, ajoutez la ligne

export DISPLAY=:0.0

Fermez nano en enregistrant. Fermez la fenêtre Ubuntu, et relancez-la depuis le menu démarrer. Il devrait normalement etre possible de lancer des applications grahiques, mais des erreurs peuvent subsister :

Paramétrage de DBus

Le WSL n'a pas vraiment été conçu pour les applications desktop : un message d'erreur devrait vite vous indiquer des problèmes avec DBus.

Avec la commande

sudo nano /etc/dbus-1/session.conf

éditez le fichier de configuration de DBus et changez-y

<listen>unix:tmpdir=/tmp</listen>

par

<listen>tcp:host=localhost,port=0</listen>

Enregistrez le fichier.
Fermez puis ré-ouvrez "Bash sur Ubuntu sur Windows" afin que les modifications prennent effet.

Malgré beaucoup de bugs, le bureau Unity peut techniquement être lancé via le WSL (avec énormément d'efforts)

Généralités

Ouvrez Bash sur Ubuntu sur Windows, et lancez-y vos commandes ou vos applications. Remarquez que rien n’empêche le lancement de plusieurs terminaux.

Le serveur X, si il s'avère nécessaire, doit être lancé depuis le menu démarrer (VcXsrv) avant le lancement de la commande dans le terminal "Bash sur Windows".

Des environnements de bureau complets peuvent en pratique être installés et lancés, mais remarquez tout de même que le WSL n'a pas été premièrement conçu pour faire ce genre de choses, et des bugs peuvent survenir.

Pour expérimenter ce genre de manipulation, des environnements légers, avec un gestionnaire de fenêtres sans composition graphique avancée, sont à privilégier (Xfce, LXDE, OpenBox, …).

Pour avoir un système plus convivial, l'installation de polices de caractères plus modernes sera sans doute nécessaire.

Pour quitter le WSL, fermez le serveur d'affichage et le terminal.

Accès aux fichiers Linux depuis Windows

La racine du système de fichiers Linux est C:\Users\<NomDeLUtilisateur>\AppData\Local\lxss.

Par exemple un utilisateur Windows "Robert" dont le nom d'utilisateur Linux est "bob" trouvera ses fichiers Linux personnels à C:\Users\Robert\AppData\Local\lxss\home\bob.

Ne modifiez jamais ces fichiers directement depuis Windows.

Les système de fichiers n'étant pas les mêmes entre Windows et Linux, les programmes Windows ne savent pas les gérer et les fichiers seraient corrompus à coup sûr.

Accès aux fichiers Windows depuis Linux

Le disque C: est automatiquement monté par Ubuntu au chemin /mnt/c, et il en est de même pour les autres lecteurs (/mnt/d/, …) du système Windows.

Tous ces chemins sont accessibles avec les séparateurs Unix (/ au lieu de \ pour Windows).

Utiliser des commandes bash dans l'invite de commande Windows

Pour utiliser une commande bash depuis l'invite de commande Windows, faites-la précéder de bash -c et entourez-la de guillemets simples ou doubles.

Par exemple pour faire ls -l depuis l'invite de commande Windows, tapez :

bash -c "ls -l"
Dans certaines circonstances (utilisation d'IDE par exemple), il peut être nécessaire d'indiquer l'extension de la commande bash :
bash.exe -c "ls -l"

Utiliser des programmes Windows depuis bash

Depuis la Creators Update du printemps 2017, il est aussi possible d'exécuter des programmes Windows depuis la console bash. Il suffit d'appeler les commandes avec leurs extensions Windows (couramment .exe, .bat ou .cmd) :

notepad.exe
  • wsl.1501297478.txt.gz
  • Dernière modification: Le 29/07/2017, 05:04
  • par krodelabestiole