{{tag>Bionic Focal Jammy windows installation émulation programmation }} {{ :logo:logo-wsl.png?200|}} ====== 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 [[:lts|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 : [[wpfr>Debian]], [[wpfr>openSUSE]], [[wpfr>SUSE Linux Enterprise]] et [[wpfr>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 [[:wiki:glossaire#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. [[https://learn.microsoft.com/fr-fr/windows/wsl/wsl-config#wslconfig|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  ». 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 [[https://docs.microsoft.com/fr-fr/windows/wsl/wsl-config#managing-multiple-linux-distributions|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-cli|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 [[:gnome-mahjongg|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 [[https://github.com/microsoft/wslg|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 [[https://learn.microsoft.com/fr-fr/windows/wsl/tutorials/gui-apps#prerequisites|cette documentation]]. ==== Applications snaps ==== Les applications snaps nécessitent d'installer le noyau [[https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/|systemd]]. * Sous ubuntu, indiquer dans le fichier de configuration qu'il faut lancer [[:systemd|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 === Ne fonctionne pas. On peut installer le paquet [[apt>gnome]], ce qui installe les logiciels du bureau gnome. Cependant [[:gnome-shell|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). {{https://cloud.githubusercontent.com/assets/9023392/16705685/69455030-454e-11e6-8ae3-cb210354c660.png?400|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 [[https://bugs.dogfood.paddev.net/ubuntu/+source/gnome-session/+bug/1251281|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 [[https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/|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 . {{:wsl:wsl2-c.png?600|}} 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 ===== Voir aussi ===== *[[:Cygwin]] *[[:Powershell]] *[[:Xorg]] *[[:bash]] * [[https://learn.microsoft.com/fr-fr/windows/wsl|Documentation Microsoft]] ***(en)** [[https://wiki.ubuntu.com/WSL|Documentation Canonical]] ***(en)** [[wp>Windows Subsystem for Linux]] ***(en)** [[https://github.com/Microsoft/BashOnWindows/issues/|Page GitHub de Microsoft]] *[[https://www.numerama.com/tech/158150-le-shell-bash-sous-windows-10-ce-quil-faut-savoir.html|Tutoriel de Numerama]] *[[https://docs.microsoft.com/fr-fr/windows/wsl/install-win10|Migrer WSL1 en WSL2]] *[[https://blog.eleven-labs.com/fr/le-developpement-sous-linux-depuis-windows-10-avec-wsl-2/|Une présentation et un lien pour installer sysemd ainsi que les snap]] *[[https://www.it-connect.fr/wslg-comment-utiliser-wsl-pour-ouvrir-des-applications-gui-linux/|Utiliser WSL en 2023]] ----- //Contributeurs : [[utilisateurs/roschan]], [[utilisateurs/Revoxandco]], [[:utilisateurs:krodelabestiole]]//