Résolution des problèmes liés au sous-système Windows pour Linux

Nous avons abordé certains scénarios de résolution des problèmes courants associés à WSL ci-dessous, mais nous vous invitons à effectuer aussi des recherches dans les problèmes signalés dans le dépôt du produit WSL sur GitHub.

Signaler un problème, un rapport de bogue, une demande de fonctionnalité

Les problèmes signalés dans le dépôt du produit WSL vous permettent d’effectuer les opérations suivantes :

  • Effectuer des recherches dans les problèmes existants pour voir si certains sont associés à un problème que vous rencontrez. Notez que, dans la barre de recherche, vous pouvez supprimer « is:open » pour inclure les problèmes qui ont déjà été résolus dans votre recherche. Pensez à commenter ou approuver les problèmes ouverts que vous aimeriez voir traités en priorité.
  • Signaler un nouveau problème. Si vous avez rencontré un problème avec WSL qui ne semble pas déjà exister, vous pouvez sélectionner le bouton vert Nouveau problème, puis choisir WSL - Rapport de bogue. Vous devrez inclure un titre pour le problème, votre numéro de build Windows (exécutez cmd.exe /c ver pour afficher votre numéro de build actuelle), indiquer si vous exécutez WSL 1 ou 2, votre numéro de version de noyau Linux actuelle (exécutez wsl.exe --status ou cat /proc/version), le numéro de version de votre distribution (exécutez lsb_release -r), les autres versions logicielles impliquées, les étapes de reproduction, le comportement attendu, le comportement réel et les journaux de diagnostic s’ils sont disponibles et appropriés. Pour plus d’informations, consultez Contribution à WSL.
  • Envoyer une demande de fonctionnalité en sélectionnant le bouton vert Nouveau problème, puis Demande de fonctionnalité. Vous devrez répondre à quelques questions pour décrire votre demande.

Vous pouvez également :

Problèmes d’installation

  • Échec de l’installation avec l’erreur 0x80070003

    • Le sous-système Windows pour Linux s’exécute uniquement sur votre lecteur système (en général, il s’agit de votre lecteur C:). Vérifiez que les distributions sont stockées sur votre lecteur système :
    • Ouvrez Paramètres -> Système --> Stockage -> Autres paramètres de stockage : Modifier l’emplacement d’enregistrement du nouveau contenu Image des paramètres système pour installer les applications sur le lecteur C:
  • Échec de WslRegisterDistribution avec l’erreur 0x8007019e

    • Le composant facultatif Sous-système Windows pour Linux n’est pas activé :
    • Ouvrez Panneau de configuration -> Programmes et fonctionnalités -> Activer ou désactiver des fonctionnalités Windows -> Cochez Sous-système Windows pour Linux ou utilisez l’applet de commande PowerShell mentionnée au début de cet article.
  • Échec de l’installation avec l’erreur 0x80070003 ou l’erreur 0x80370102

    • Assurez-vous que la virtualisation est activée dans le BIOS de votre ordinateur. Les instructions sur la façon de procéder varient d’un ordinateur à l’autre et se trouvent très probablement sous les options liées au processeur.
    • WSL2 demande que votre processeur prenne en charge la fonctionnalité de traduction d’adresses de second niveau (SLAT), qui a été introduite dans les processeurs Intel Nehalem (1ère génération d’Intel Core) et AMD Opteron. Les processeurs plus anciens (comme le processeur Intel Core 2 Duo) ne pourront pas exécuter WSL2, même si la plateforme de machine virtuelle est correctement installée.
  • Erreur lors d’une tentative de mise à niveau : Invalid command line option: wsl --set-version Ubuntu 2

    • Vérifiez que le Sous-système Windows pour Linux est activé et que vous utilisez la version de build 18362 ou ultérieure de Windows. Pour activer WSL, exécutez cette commande dans une invite PowerShell avec des privilèges d’administrateur : Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux.
  • Impossible de terminer l’opération demandée du fait d’une limitation du système de disque virtuel. Les fichiers de disque dur virtuel doivent être décompressés et déchiffrés, mais ne doivent pas être partiellement alloués.

    • Désélectionnez « Compresser le contenu » (ainsi que « Chiffrer le contenu » si coché) en ouvrant le dossier de profil pour votre distribution Linux. Il doit se trouver dans un dossier de votre système de fichiers Windows, par exemple : USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
    • Dans ce profil de distribution Linux, il doit y avoir un dossier LocalState. Cliquez avec le bouton droit sur ce dossier pour afficher un menu d’options. Sélectionnez Propriétés > Avancé, puis assurez-vous que les cases à cocher « Compresser le contenu pour économiser l’espace disque » et « Chiffrer le contenu pour sécuriser les données » sont désélectionnées (non cochées). Si vous êtes invité à indiquer si vous souhaitez appliquer ceci juste au dossier actif ou à tous les sous-dossiers et fichiers, sélectionnez « juste ce dossier » parce que vous n’effacez que l’indicateur de compression. Après cela, la commande wsl --set-version devrait fonctionner.

Capture d’écran des paramètres de propriété de distribution WSL

Notes

Dans mon cas, le dossier LocalState pour ma distribution Ubuntu 18.04 se trouvait sur C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

Consultez le thread GitHub n° 4103 de la documentation WSL où ce problème est suivi pour obtenir des informations mises à jour.

  • Le terme « wsl » n’est pas reconnu comme nom d’applet de commande, fonction, fichier de script ou programme exécutable.

  • Erreur : Lee Sous-système Windows pour Linux n’a aucune distribution installée.

    • Si vous recevez cette erreur une fois que vous avez déjà installé les distributions WSL :
    1. Exécutez la distribution au moins une fois avant de l’appeler à partir de la ligne de commande.
    2. Vérifiez si vous exécutez des comptes d’utilisateur distincts. L’exécution de votre compte d’utilisateur principal avec des autorisations élevées (en mode administrateur) ne devrait pas entraîner cette erreur, mais vous devez vous assurer que vous n’exécutez pas accidentellement le compte administrateur intégré fourni avec Windows. Il s’agit d’un compte d’utilisateur distinct qui n’affiche pas les distributions de WSL installées par défaut. Pour plus d’informations, consultez Activer et désactiver le compte administrateur intégré.
    3. L’exécutable WSL est uniquement installé dans le répertoire système natif. Quand vous exécutez un processus 32 bits sur Windows 64 bits (ou sur ARM64, toute combinaison non native), le processus non natif hébergé voit en fait un dossier System32 différent. (Celui qu’un processus 32 bits voit sur x64 Windows est stocké sur le disque dans \Windows\SysWOW64.) Vous pouvez accéder au system32 « natif » à partir d’un processus hébergé en regardant dans le dossier virtuel : \Windows\sysnative. Notez qu’il ne sera pas sur le disque, mais le programme de résolution de chemin de système de fichiers le trouvera.
  • Error: Cette mise à jour s’applique seulement aux machines avec le sous-système Windows pour Linux.

    • Pour installer le package MSI de mise à jour du noyau Linux, WSL est requis et doit être activé en premier. En cas d’échec, le message suivant s’affiche : This update only applies to machines with the Windows Subsystem for Linux.
    • Ce message apparaît pour trois raisons possibles :
    1. Vous êtes toujours dans une ancienne version de Windows qui ne prend pas en charge WSL 2. Consultez l’étape 2 pour connaître la configuration requise de la version et obtenir des liens de mise à jour.

    2. WSL n’est pas activé. Vous devez revenir à l’étape 1 et vous assurer que la fonctionnalité facultative WSL est activée sur votre machine.

    3. Une fois que vous avez activé WSL, un redémarrage est nécessaire pour sa prise en compte : redémarrez votre machine, puis réessayez.

  • Error: WSL 2 requiert une mise à jour de son composant noyau. Pour obtenir des informations, consultez https://aka.ms/wsl2kernel .

    • Si le package du noyau Linux est manquant dans le dossier %SystemRoot%\system32\lxss\tools, cette erreur se produit. Résolvez-la en installant le package MSI de mise à jour du noyau Linux à l’étape 4 de ces instructions d’installation. Vous devrez peut-être désinstaller le MSI dans « Ajouter ou supprimer des programmes », puis le réinstaller.

Problèmes courants

Je suis sur Windows 10 version 1903 et je ne vois toujours pas les options pour WSL 2

C’est probablement dû au fait que votre ordinateur n’a pas encore utilisé le rétroportage pour WSL 2. La façon la plus simple de résoudre ce problème consiste à accéder aux paramètres Windows et à cliquer sur « Rechercher les mises à jour » pour installer les dernières mises à jour sur votre système. Consultez les instructions complètes sur l’utilisation du rétroportage.

Si vous avez cliqué sur « Rechercher les mises à jour » et que vous ne recevez toujours pas la mise à jour, vous pouvez installer manuellement KB4566116.

Erreur : 0x1bc quand wsl --set-default-version 2

Cela peut se produire lorsque le paramètre « Langue d’affichage » ou « Paramètres régionaux du système » n’est pas défini sur Anglais.

wsl --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2

L’erreur en question pour 0x1bc est :

WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel

Pour plus d’informations, reportez-vous au problème 5749 :

Impossible d’accéder aux fichiers WSL à partir de Windows

Un serveur de fichiers utilisant le protocole 9P fournit le service côté Linux pour permettre à Windows d’accéder au système de fichiers Linux. Si vous ne pouvez pas accéder à WSL en utilisant \\wsl$ sur Windows, la raison peut en être que 9P n’a pas démarré correctement.

Pour cela, vous pouvez vérifier les journaux de démarrage en utilisant dmesg |grep 9p : ceci vous montre les éventuelles erreurs. Une sortie indiquant la réussite se présente comme suit :

[    0.363323] 9p: Installing v9fs 9p2000 file system support
[    0.363336] FS-Cache: Netfs '9p' registered for caching
[    0.398989] 9pnet: Installing 9P2000 support

Pour plus d’informations sur ce problème, consultez ce thread GitHub.

Impossible de démarrer la distribution WSL 2, je vois seulement « WSL 2 » dans la sortie

Si votre langue d’affichage n’est pas l’anglais, il est possible que seule une version tronquée d’un texte d’erreur soit affichée.

C:\Users\me>wsl
WSL 2

Pour résoudre ce problème, consultez https://aka.ms/wsl2kernel et installez le noyau manuellement en suivant les instructions de cette page de la documentation.

command not found lors de l’exécution de windows.exe dans Linux

Les utilisateurs peuvent exécuter des exécutables Windows tels que notepad.exe directement dans Linux. Parfois, vous pouvez obtenir le message « command not found », comme ci-dessous :

$ notepad.exe
-bash: notepad.exe: command not found

S’il n’existe pas de chemin Win32 dans votre $PATH, Interop ne trouvera pas le fichier .exe. Vous pouvez le vérifier en exécutant echo $PATH dans Linux. Normalement, vous devez voir un chemin Win32 (par exemple, /mnt/c/Windows) dans la sortie. Si vous ne voyez pas de chemin Windows, c’est que votre PATH a probablement été remplacé par votre shell Linux.

Voici un exemple dans lequel /etc/profile sur Debian a contribué au problème :

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

La méthode à utiliser pour Debian consiste à supprimer les lignes ci-dessus. Vous pouvez également ajouter des $PATH pendant l’attribution comme ci-dessous. Toutefois, cela entraînera d’autres problèmes avec WSL et VSCode.

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi

Pour plus d’informations, consultez les problèmes 5296 et 5779.

« Error : 0x80370102 Impossible de démarrer la machine virtuelle parce qu’une fonctionnalité requise n’est pas installée. »

Activez la fonctionnalité Windows Plateforme de machine virtuelle et vérifiez que la virtualisation est activée dans le BIOS.

  1. Vérifiez la configuration système pour Hyper-V

  2. Si votre machine est une machine virtuelle, activez manuellement la virtualisation imbriquée. Lancez PowerShell avec un compte d’administrateur et exécutez :

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Suivez les instructions du fabricant de votre PC pour savoir comment activer la virtualisation. En général, ceci peut impliquer l’utilisation du BIOS du système pour activer ces fonctionnalités sur votre processeur. Les instructions concernant ce processus peuvent varier d’un ordinateur à l’autre. Pour voir un exemple, consultez cet article de Bleeping Computer.

  4. Redémarrez votre machine après avoir activé le composant facultatif Virtual Machine Platform.

  5. De plus, si vous avez installé des hyperviseurs tiers (comme VMware ou VirtualBox), vérifiez que vous avez les dernières versions qui peuvent prendre en charge HyperV (VMware 15.5.5+ et VirtualBox 6+) ou qu’ils sont désactivés.

Découvrez plus en détail comment Configurer la virtualisation imbriquée lors de l’exécution d’Hyper-V dans une machine virtuelle.

Bash perd la connectivité réseau une fois connecté à un VPN

Si, après une connexion à un VPN sur Windows, Bash perd la connectivité réseau, essayez cette solution de contournement à partir de Bash. Elle vous permet de remplacer la résolution DNS manuellement avec /etc/resolv.conf.

  1. Exécutez la commande ipconfig.exe /all et notez le serveur DNS du VPN.
  2. Copiez le fichier resolv.conf existant avec sudo cp /etc/resolv.conf /etc/resolv.conf.new.
  3. Dissociez le fichier resolv.conf actuel avec sudo unlink /etc/resolv.conf.
  4. sudo mv /etc/resolv.conf.new /etc/resolv.conf
  5. Ouvrez /etc/resolv.conf et
    a. Supprimez la première ligne du fichier, comportant le message « # This file was automatically generated by WSL. To stop automatic generation of this file, remove this line. » (Ce fichier a été généré automatiquement par WSL. Pour arrêter la génération automatique de ce fichier, supprimez cette ligne. »).
    b. Ajoutez l’entrée DNS notée à l’étape 1 précédente comme première entrée de la liste des serveurs DNS.
    c. Fermez le fichier.

Une fois que vous avez déconnecté le VPN, vous devez revenir au fichier /etc/resolv.conf non modifié. Pour ce faire, exécutez les commandes suivantes :

  1. cd /etc
  2. sudo mv resolv.conf resolv.conf.new
  3. sudo ln -s ../run/resolvconf/resolv.conf resolv.conf

Le démarrage de WSL ou l’installation d’une distribution retourne un code d’erreur.

Suivez ces instructions pour récupérer des journaux détaillés et signaler un problème sur notre plateforme GitHub.

Mise à jour de WSL

Deux composants du sous-système Windows pour Linux peuvent nécessiter une mise à jour.

  1. Pour mettre à jour le sous-système Windows pour Linux lui-même, utilisez la commande wsl --update dans PowerShell ou CMD.

  2. Pour mettre à jour les fichiers binaires utilisateur de distributions Linux spécifiques, utilisez la commande apt-get update | apt-get upgrade dans la distribution Linux que vous cherchez à mettre à jour.

Erreurs avec apt-get upgrade

Certains packages utilisent des fonctionnalités que nous n’avons pas encore implémentées. udev, par exemple, n’est pas encore pris en charge et provoque plusieurs erreurs avec apt-get upgrade.

Pour résoudre les problèmes liés à udev, procédez comme suit :

  1. Écrivez le code suivant dans /usr/sbin/policy-rc.d et enregistrez vos modifications.

    #!/bin/sh
    exit 101
    
  2. Ajoutez des autorisations d’exécution à /usr/sbin/policy-rc.d :

    chmod +x /usr/sbin/policy-rc.d
    
  3. Exécutez les commandes suivantes :

    dpkg-divert --local --rename --add /sbin/initctl
    ln -s /bin/true /sbin/initctl
    

« Error : 0x80040306 » lors de l’installation

Cette erreur est due au fait que nous ne prenons pas en charge la console héritée. Pour désactiver la console héritée :

  1. Ouvrez cmd.exe.
  2. Cliquez avec le bouton droit sur la barre de titre, sélectionnez Propriétés, puis désactivez la case Utiliser la console héritée.
  3. Cliquez sur OK

« Error : 0x80040154 » après une mise à jour de Windows

La fonctionnalité de sous-système Windows pour Linux peut être désactivée au cours d’une mise à jour de Windows. Dans ce cas, la fonctionnalité Windows doit être réactivée. Pour obtenir des instructions sur l’activation du sous-système Windows pour Linux, consultez le guide d’installation manuelle.

Changement de la langue d’affichage

Le processus d’installation de WSL tente de changer automatiquement les paramètres régionaux d’Ubuntu de sorte qu’ils correspondent à ceux de votre installation Windows. Si vous souhaitez éviter ce comportement, vous pouvez exécuter cette commande pour changer les paramètres régionaux d’Ubuntu une fois l’installation terminée. Vous devrez relancer bash.exe pour que ce changement prenne effet.

L’exemple ci-dessous applique les paramètres régionaux en-US :

sudo update-locale LANG=en_US.UTF8

Problèmes d’installation après une restauration du système Windows

  1. Supprimez le dossier %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.
    Remarque : N’effectuez pas cette opération si votre fonctionnalité facultative est entièrement installée et opérationnelle.
  2. Si ce n’est déjà fait, activez la fonctionnalité facultative WSL.
  3. Redémarrer
  4. lxrun /uninstall /full
  5. Installez Bash.

Aucun accès Internet dans WSL

Certains utilisateurs ont signalé des problèmes posés par certaines applications de pare-feu, qui bloquent l’accès Internet dans WSL. Les pare-feux signalés sont :

  1. Kaspersky
  2. AVG
  3. Avast
  4. Symantec Endpoint Protection

Dans certains cas, la désactivation du pare-feu permet d’obtenir l’accès. Parfois, il semble que la simple installation du pare-feu bloque l’accès.

Si vous utilisez le pare-feu Microsoft Defender et que vous décochez la case « Bloquer toutes les connexions entrantes, y compris celles figurant dans la liste des applications autorisées », l’accès est autorisé.

Autorisation refusée lors de l’utilisation d’une commande ping

Pour la Mise à jour anniversaire Windows, version 1607, les privilèges administrateur dans Windows doivent exécuter la commande ping dans WSL. Pour exécuter une commande ping, exécutez Bash sur Ubuntu sur Windows en tant qu’administrateur, ou exécutez bash.exe à partir d’une invite de commandes/PowerShell avec des privilèges d’administrateur.

Pour les versions ultérieures de Windows, Build 14926+, les privilèges administrateur ne sont plus nécessaires.

Bash est bloqué.

Si, alors que vous utilisez Bash, celui-ci se bloque et ne répond pas aux entrées, aidez-nous à diagnostiquer le problème en collectant une image mémoire et en nous la communiquant. Notez que la procédure ci-après entraînera le plantage de votre système. Suivez-la uniquement si vous êtes à l’aise avec ce type d’opération, ou enregistrez votre travail au préalable.

Pour collecter une image mémoire

  1. Changez le type d’image mémoire en choisissant « Image mémoire complète ». Lors de ce changement, prenez note du type d’image actuel.

  2. Suivez cette procédure pour configurer une commande de clavier produisant un plantage.

  3. Reproduisez le blocage.

  4. Faites planter le système à l’aide de la séquence de touches définie à l’étape 2.

  5. Le système plante et collecte l’image mémoire.

  6. Une fois le système redémarré, envoyez l’image memory.dmp sur secure@microsoft.com. L’emplacement par défaut du fichier d’image mémoire est %SystemRoot%\memory.dmp ou C:\Windows\memory.dmp si C: est le lecteur système. Dans l’e-mail, indiquez que le fichier d’image mémoire est destiné à l’équipe WSL ou Bash sur Windows.

  7. Rétablissez le type d’image mémoire d’origine.

Vérifier votre numéro de build

Pour trouver le numéro de build de Windows et de l’architecture de votre PC, sélectionnez :
Paramètres > Système > À propos

Recherchez les champs Build du système d’exploitation et Type de système.
Capture d’écran montrant les champs Build du système d’exploitation et Type de système

Pour trouver le numéro de build de Windows Server, exécutez la commande suivante dans PowerShell :

systeminfo | Select-String "^OS Name","^OS Version"

Vérifier que WSL est activé

Vous pouvez vérifier que le sous-système Windows pour Linux est activé en exécutant la commande suivante dans PowerShell :

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Problèmes de connexion du serveur OpenSSH

L’erreur suivante se produit lors d’une tentative de connexion du serveur SSH : « Connection closed by 127.0.0.1 port 22 » (Connexion fermée par 127.0.0.1 port 22).

  1. Vérifiez que votre serveur OpenSSH est en cours d’exécution :

    sudo service ssh status
    

    et veillez à suivre ce tutoriel : https://ubuntu.com/server/docs/service-openssh

  2. Arrêtez le service SSHD et démarrez SSHD en mode débogage :

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Consultez les journaux de démarrage et vérifiez que les clés d’hôte sont disponibles et que les journaux ne contiennent pas de message de ce type :

    debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g  1 Mar 2016
    debug1: key_load_private: incorrect passphrase supplied to decrypt private key
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_dsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    

Si vous voyez des messages de ce type et que les clés ne sont pas disponibles sous /etc/ssh/, vous devrez régénérer les clés ou simplement purger et installer le serveur OpenSSH :

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

« L’assembly référencé est introuvable. » lors de l’activation de la fonctionnalité facultative WSL

Cette erreur est liée à un mauvais état d’installation. Effectuez les étapes suivantes pour essayer de résoudre ce problème :

  • Si vous exécutez la commande d’activation de la fonctionnalité WSL à partir de PowerShell, essayez d’utiliser l’interface GUI au lieu d’ouvrir le menu Démarrer, recherchez « Activer ou désactiver les fonctionnalités Windows », puis dans la liste, sélectionnez « Sous-système Windows pour Linux » qui installera le composant facultatif.

  • Mettez à jour votre version de Windows en accédant à Paramètres, Mises à jour, puis en cliquant sur « Rechercher les mises à jour ».

  • Si les deux échouent et que vous devez accéder à WSL, procédez à une mise à niveau sur place en réinstallant Windows 10 avec un support d’installation et en sélectionnant « Tout conserver » pour vous assurer que vos applications et vos fichiers sont conservés. Vous trouverez des instructions pour ce faire dans la page Réinstaller Windows 10.

Si vous voyez cette erreur :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.

Pour la corriger, ajoutez ce qui suit au fichier /etc/wsl.conf :

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

Veuillez noter que l’ajout de cette commande inclura les métadonnées et modifiera les autorisations sur les fichiers Windows vus depuis WSL. Pour plus d’informations, consultez Autorisations de système de fichier.

L’exécution de commandes Windows échoue dans une distribution

Certaines distributions disponibles dans le Microsoft Store ne sont pas encore entièrement compatibles pour exécuter des commandes Windows prêtes à l’emploi. Si vous recevez une erreur -bash: powershell.exe: command not found en exécutant powershell.exe /c start . ou une autre commande Windows, vous pouvez la résoudre en suivant ces étapes :

  1. Dans votre distribution WSL, exécutez echo $PATH.
    Si elle ne contient pas /mnt/c/Windows/system32, quelque chose redéfinit la variable PATH standard.
  2. Vérifiez les paramètres de profil avec cat /etc/profile.
    Si elle contient une affectation de la variable PATH, modifiez le fichier pour commenter le bloc d’affectation PATH avec le caractère # .
  3. Vérifiez si wsl.conf est présent dans cat /etc/wsl.conf et assurez-vous qu’il ne contient pas appendWindowsPath=false ; sinon, mettez-le en commentaire.
  4. Redémarrez la distribution en tapant wsl -t suivi du nom de la distribution ou exécutez wsl --shutdown dans cmd ou PowerShell.

Impossible de démarrer après l’installation de WSL 2

Nous avons connaissance d’un problème qui empêche les utilisateurs de démarrer après avoir installé WSL 2. Alors que nous procédons au diagnostic complet de ce problème, les utilisateurs ont signalé que le changement de la taille de la mémoire tampon ou l’installation des pilotes appropriés peut aider à le résoudre. Veuillez consulter ce problème GitHub pour voir les dernières informations le concernant.

Erreurs WSL 2 quand le partage de connexion Internet est désactivé

Le partage de connexion Internet (ICS) est un composant obligatoire de WSL 2. Le service ICS est utilisé par le service de réseau hôte (HNS) pour créer le réseau virtuel sous-jacent sur lequel WSL 2 s’appuie pour NAT, DNS, DHCP et le partage de connexion hôte.

La désactivation du service ICS (SharedAccess) ou la désactivation du partage de connexion Internet via la stratégie de groupe empêche la création du réseau HNS WSL. Cela entraîne des échecs lors de la création d’une image WSL version 2 ainsi que l’erreur suivante lors de la tentative de conversion d’une image de version 1 vers la version 2.

There are no more endpoints available from the endpoint mapper.

Les systèmes qui requièrent WSL 2 doivent conserver le service ICS (SharedAccess) dans son état de démarrage par défaut, Manuel (Déclencher le démarrage), et toute stratégie qui désactive le partage de connexion Internet doit être remplacée ou supprimée. Alors que la désactivation du service ICS arrête WSL 2 et que nous ne la recommandons pas, certaines parties d’ICS peuvent être désactivées en suivant ces instructionsng-application-guard-)

Utilisation de versions antérieures de Windows et WSL

Il existe plusieurs différences à noter si vous exécutez une version antérieure de Windows et WSL, comme Windows 10 Creators Update (oct 2017, build 16299) ou Mise à jour anniversaire Windows 10 (août 2016, build 14393). Nous vous recommandons d’effectuer la mise à jour vers la dernière version de Windows mais, si cela n’est pas possible, nous avons décrit certaines des différences ci-dessous.

Différences entre les commandes d’interopérabilité :

  • bash.exe a été remplacé par wsl.exe. Les commandes Linux peuvent être exécutées à partir de l’invite de commandes Windows ou de PowerShell, mais pour les versions antérieures de Windows, vous pouvez être amené à utiliser la commande bash. Par exemple : C:\temp> bash -c "ls -la". Les commandes WSL passées à bash -c sont transmises au processus WSL sans modification. Les chemins de fichiers doivent être spécifiés au format WSL et des précautions doivent être prises pour placer les caractères appropriés dans une séquence d’échappement. Par exemple, C:\temp> bash -c "ls -la /proc/cpuinfo" ou C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Pour connaître les commandes disponibles pour une distribution en particulier, exécutez [distro.exe] /?. Par exemple, avec Ubuntu : C:\> ubuntu.exe /?.
  • Le chemin Windows est inclus dans la variable WSL $PATH.
  • Lorsque vous appelez un outil Windows à partir d’une distribution WSL dans une version antérieure de Windows 10, vous devez spécifier le chemin du répertoire. Par exemple, pour appeler l’application Bloc-notes Windows à partir de votre ligne de commande WSL, entrez : /mnt/c/Windows/System32/notepad.exe
  • Pour remplacer l’utilisateur par défaut par root, utilisez la commande C:\> lxrun /setdefaultuser root dans PowerShell, puis exécutez Bash.exe pour vous connecter : C:\> bash.exe. Réinitialisez votre mot de passe à l’aide de la commande de mot de passe de la distribution $ passwd username, puis fermez la ligne de commande Linux avec $ exit. À partir de l’invite de commandes Windows ou de Powershell, réinitialisez l’utilisateur par défaut sur votre compte d’utilisateur Linux normal : C:\> lxrun.exe /setdefaultuser username.

Désinstaller la version héritée de WSL

Si vous avez à l’origine installé WSL sur une version de Windows 10 antérieure à Creators Update (oct 2017, build 16299), nous vous recommandons de migrer les fichiers, les données, etc. nécessaires de l’ancienne distribution Linux installée vers une distribution plus récente installée via le Microsoft Store. Pour supprimer la distribution héritée de votre ordinateur, exécutez la commande suivante à partir d’une ligne de commande ou d’une instance PowerShell : wsl --unregister Legacy. Vous avez également la possibilité de retirer manuellement l’ancienne distribution héritée en supprimant le dossier %localappdata%\lxss\ (et son sous-contenu) à l’aide de l’Explorateur de fichiers Windows ou de PowerShell : rm -Recurse $env:localappdata/lxss/.