Sous-système Windows pour Linux : 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 ou Windows 11 au moyen du sous-système WSL.

Le Windows Subsystem for Linux (WSL), en français "Sous-système Windows pour Linux" est parfois grossièrement appelé "Bash sur Windows". Il existe deux versions de ce sous-système :

  • WSL 1 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".
  • WSL 2 repose sur le système de virtualisation Hyper-V. Cette méthode est également très performante, et la couche de virtualisation est transparente pour l'utilisateur. Elle offre une bien meilleure compatibilité avec l'ensemble des logiciels, c'est donc la version recommandée, et celle sur laquelle se concentrent désormais les efforts de développement.
Le but de cette distribution était à la base 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 est désormais accessible au grand public et permet de déployer presque "nativement" les logiciels de l'univers GNU/Linux sous Windows. En outre il est compatible avec APT, Snap, Flatpak et Docker

WSL ne permet pas de faire fonctionner n'importe quelle distribution : seules les versions LTS d'Ubuntu sont supportées. La première distribution Linux concernée fut Trusty (14.04).
D'autres distributions GNU/Linux sont également proposées : Debian, openSUSE, SUSE Linux Enterprise et Kali Linux.

  • Une copie à jour de Windows 10 ou 11 de type 64 bits.
  • Une session Windows avec les droits d'administrateur.
  • Pour WSL 2, activez la fonctionnalité de virtualisation du processeur dans le BIOS de votre ordinateur (qui prend malheureusement des noms différents en fonction des constructeurs : VT-x, AMD-V, SVM, etc.).
  • Si besoin modifier la limitation de mémoire virtuelle à utiliser. Par défaut 50% GO de la ram. Au plus 8 Go.

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

  • Lancer l’application PowerShell en mode administrateur.
  • Obtenir la liste des distributions disponibles :
    wsl -l -o

    Exemple de réponse :

    wsl -l -o
    Voici la liste des distributions valides qui peuvent être installées.
    Installer à l’aide de « wsl --install -d <Distribution> ».
     
    NAME                                   FRIENDLY NAME
    Ubuntu                                 Ubuntu
    Debian                                 Debian GNU/Linux
    kali-linux                             Kali Linux Rolling
    Ubuntu-18.04                           Ubuntu 18.04 LTS
    Ubuntu-20.04                           Ubuntu 20.04 LTS
    Ubuntu-22.04                           Ubuntu 22.04 LTS
    OracleLinux_8_5                        Oracle Linux 8.5
    OracleLinux_7_9                        Oracle Linux 7.9
    SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
    openSUSE-Leap-15.4                     openSUSE Leap 15.4
    openSUSE-Tumbleweed                    openSUSE Tumbleweed 
  • Installer une distribution :
    wsl --install --distribution Ubuntu-22.04
  • Redémarrer pour que l’installation se termine.
  • Mettre à jour WSL après l'installation d’un nouveau composant :
    wsl --update
  • Tuer WSL pour le forcer à utiliser la mise à jour à son prochain démarrage :
     wsl --shutdown

La première fois que vous lancez une distribution Linux nouvellement installée, une fenêtre de console s’ouvre et vous êtes invité à attendre que les fichiers soient décompressés et stockés sur votre ordinateur. Tous les lancements ultérieurs doivent prendre moins d’une seconde.

Si le message d'erreur 0xc400000d apparaît: Le transfert des fichiers est interrompu prématurément. Il suffit de relancer la commande. Le transfert des fichiers reprend sans repartir du début.
Si l'installation échoue, activez le mode développeur et recommencez.

Il est possible d'utiliser plusieurs distributions simultanément. Vous trouverez de l'aide pour les faire cohabiter (ou sélectionner la distribution par défaut) sur la documentation officielle.

Une fois l'application installée, lancez-la. Son nom est Ubuntu , et vous devriez voir apparaître un message Installing, this may take a few minutes… ( Compter 5 minutes sur un SSD et 15 minutes sur un disque dur.) Après quoi vous devriez être invité·e à entrer un identifiant et un mot de passe.

Installer les logiciels voulus

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
sudo apt upgrade

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

sudo apt install vim

ou si on veut utiliser le jeu graphique mahjong

sudo apt install gnome-mahjongg && gnome-mahjongg: 

Les logiciels graphiques apparaissent dans le menu démarrer, avec les autres logiciels Windows. Leur nom est simplement suivi de (Ubuntu) afin de les différencier.

Applications graphiques

Contrairement à ce que vous trouverez dans certaines documentations anciennes, il n'est plus nécessaire d'installer de serveur X tiers. WSL 2 intègre désormais wslg. Si vous avez une ancienne version de WSL, il suffit de le mettre à jour pour en profiter :

wsl --update

Il peut tout de même être utile d'installer un pilote spécifique à sa carte graphique, afin de bénéficier de l'accélération graphique avec certains logiciels. Voir cette documentation.

Applications snaps

Les applications snaps nécessitent d'installer le noyau systemd.

  • Sous ubuntu, indiquer dans le fichier de configuration qu'il faut lancer systemd
    echo [boot] | sudo tee -a /etc/wsl.conf  && echo systemd=true | sudo tee -a /etc/wsl.conf
  • Sous windows, relancer l'application.
    wsl.exe --shutdown

Attention, tout n'est pas parfait. Le temps de démarrage est plus long et certaines erreurs restent à comprendre.

a@DESKTOP-71NRFPV:~$ journalctl --no-pager -b -p err
Feb 27 13:57:22 DESKTOP-71NRFPV kernel:  #2 #3
Feb 27 13:57:22 DESKTOP-71NRFPV kernel: PCI: Fatal: No config space access function found
Feb 27 13:57:22 DESKTOP-71NRFPV kernel: kvm: no hardware support
Feb 27 13:57:22 DESKTOP-71NRFPV kernel: FS-Cache: Duplicate cookie detected
Feb 27 13:57:22 DESKTOP-71NRFPV kernel: 9pnet_virtio: no channels available for device drvfs
Feb 27 13:57:22 DESKTOP-71NRFPV kernel: misc dxg: dxgk: dxgglobal_acquire_channel_lock: Failed to acquire global channel lock
Feb 27 13:57:22 DESKTOP-71NRFPV unknown: Failed to connect to bus: No such file or directory
Feb 27 13:57:22 DESKTOP-71NRFPV unknown: WSL (2) ERROR: InitCreateSessionLeader:1088: /sbin/init failed to start within
Feb 27 13:57:22 DESKTOP-71NRFPV unknown: 10000ms
Feb 27 14:00:11 DESKTOP-71NRFPV kernel: misc dxg: dxgk: dxgglobal_acquire_channel_lock: Failed to acquire global channel lock
Feb 27 14:02:11 DESKTOP-71NRFPV kernel: overlayfs: failed to resolve '/media/filesystem': -2

Le premier téléchargement va d'abord commencer à installer le gestionnaire (core18) et son serveur n'est pas performant.

time sudo snap install spotify 
spotify 1.1.84.716.gc5f8b819 from Spotify✓ installed
 
real    9m25.273s
user    0m0.143s
sys     0m0.567s

Les applications peuvent utiliser un espace graphique pouvant ne pas s'étendre à la totalité de l'écran (Par exemple mahjong).

Elles peuvent aussi fonctionner imparfaitement. Par exemple ubuntu-desktop-installer permet de choisir la "langue d'installation", de choisir une "installation normale", de choisir "Autre chose" mais ne permet pas d'aller au-delà.

Installation d'un bureau graphique

GNOME

Ne fonctionne pas.

On peut installer le paquet gnome, ce qui installe les logiciels du bureau gnome.

Cependant GNOME Shell ne démarre pas… La commande gnome-session conduit à une erreur.

Notons qu'il est facile d'installer et de lancer son gestionnaire de bureau.

sudo apt install nautilus -y && nautilus

unity

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

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

Si la commande gnome-session se termine prématurément, c'est probablement lié a ce bug
  sudo service dbus restart
        *Stopping system message bus dbus                                                                              [ OK ]
        *Starting system message bus dbus                                                                              [ OK ]
 gnome-session
        gnome-session-is-accelerated: No hardware 3D support.
        gnome-session-check-accelerated: GL Helper exited with code 256
        (gnome-session-check-accelerated-gles-helper:2164): WARNING **: 15:30:56.092: eglGetDisplay() failed
        gnome-session-check-accelerated: GLES Helper exited with code 256
        gnome-session-is-accelerated: No hardware 3D support.
        gnome-session-check-accelerated: GL Helper exited with code 256
        (gnome-session-check-accelerated-gles-helper:2167): WARNING **: 15:31:01.530: eglGetDisplay() failed
        gnome-session-check-accelerated: GLES Helper exited with code 256
        gnome-session-binary[2142]: WARNING: software acceleration check failed: Child process exited with code 1
        gnome-session-binary[2142]: CRITICAL: We failed, but the fail whale is dead. Sorry....

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) et on ne peut pas modifier ces permissions. Il est possible de changer ce comportement, mais avec quelques limitations, en suivant cette documentation (en anglais).

Il est possible d'accéder en mode graphique à tous les fichiers windows en lançant l'explorateur avec cette commande

explorer.exe

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

Si vous avez choisi de nommer votre instance ubuntu, le chemin sera aussi légèrement différent : C:\Users\TEMP.%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

Ne modifiez jamais ces fichiers directement depuis Windows.

Les systèmes 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.

En date du 02/11/2020 en release preview:

L'explorateur windows permet d'accéder à ces fichiers et même d'en ajouter y compris en glisser/déposer .

exemple Fremake Video Converter

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 Linux

Il est aussi possible d'exécuter des programmes Windows depuis la console Ubuntu. Il suffit d'appeler les commandes avec leurs extensions Windows (couramment .exe, .bat ou .cmd) :

notepad.exe

Désinstallation

La désinstallation de WSL s’effectue dans les paramètres Windows.

Pour supprimer le logiciel installé, utiliser le menu "application et fonctionnalité", se positionner sur l’application et choisir "supprimer" ou faire un clic droit sur l’icône de l’application à supprimer; ou

 wslconfig /u   Ubuntu 
  • wsl.txt
  • Dernière modification: Le 02/03/2023, 16:10
  • par 37.169.163.132