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.
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.
Pré-requis
- 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").
Installation
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.
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à.
Utilisation
Installation d'un bureau graphique
GNOME
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).
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
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 .
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