Ubuntu sur Windows

Ubuntu sur Windows est une variante d'Ubuntu proposée officiellement par Microsoft et Canonical, et qui se déploie nativement sur Windows 10 (uniquement) au moyen de la couche de compatibilité WSL.

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 ELF (binaires exécutables) pour Linux à partir d'un système Windows.
Le principe est le même que Wine, mais "dans l'autre sens".

Le but de cette distribution 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 WSL ne fonctionne pas avec n'importe quelle distribution : seules les versions LTS d'Ubuntu sont supportées. La première distribution Linux concernée fut Trusty (14.04), puis Xenial (16.04) et maintenant Bionic (18.04).
D'autres distributions GNU/Linux sont également proposées : Debian, openSUSE, SUSE Linux Enterprise et Kali Linux.

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 utilisant certaines fonctionnalités très spécifiques du noyau Linux risquent aussi de rencontrer des problèmes.

  • Une copie à jour de Windows 10 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

Ubuntu sur Windows s'installe depuis le Microsoft Store.

Sur le Microsoft Store vous avez le choix entre plusieurs version d'Ubuntu (et également d'autres variantes de Linux).

  • L'application Ubuntu (tout court) installe la dernière version LTS et pourra être mise à niveau d'une version LTS à la suivante via la commande do-release-upgrade.
  • Ubuntu 16.04 installe Xenial.
  • Ubuntu 18.04 installe Bionic.

Il n'est pas indispensable de créer un compte Microsoft ni de s'identifier pour télécharger ces applications.

Il est possible d'utiliser plusieurs de ces applications simultanément.

Une fois l'application installée, lancez-la, et vous devriez voir apparaître un message Installing, this may take a few minutes…
Après quoi vous devriez être invité·e à entrer un identifiant et un mot de passe.

Installer les logiciels voulus

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.

La gestion des paquets en ligne de commande se fait comme sur un système Ubuntu normal, au moyen de la commande apt, par exemple.

Dans le terminal Ubuntu, 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 Ubuntu) :

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 être possible de lancer des applications graphiques, 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 /usr/share/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 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 "Ubuntu".

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

Pour information, la racine du système de fichiers Linux est
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

Si vous avez choisi une version spécifique dans le Windows Store, le chemin sera légèrement différent :
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

Par exemple un utilisateur Windows "Robert" dont le nom d'utilisateur Linux est "bob" trouvera ses fichiers Linux personnels à
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\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).

Par défaut, tous les fichiers du système Windows appartiennent à l'utilisateur courant avec toutes les permissions (777). Il est possible de changer ce comportement, mais avec quelques limitations, en suivant cette documentation (en anglais).

Utiliser des commandes Linux dans l'invite de commande Windows

Pour utiliser une commande Linux depuis l'invite de commande Windows, faites-la précéder de ubuntu run.

Si vous avez installé une version spécifique d'Ubuntu sur Windows, la commande est légèrement différente : ubuntu1604 run ou ubuntu1804 run par exemple.

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

ubuntu run ls -al

Utiliser des programmes Windows depuis Ubuntu

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

Contributeurs : roschan, Revoxandco, krodelabestiole

  • utilisateurs/krodelabestiole/brouillon/wsl.txt
  • Dernière modification: Le 02/06/2018, 18:43
  • par krodelabestiole