Problembehandlung des Windows-Subsystems für Linux

Im Folgenden werden einige häufige Problembehandlungsszenarien im Zusammenhang mit WSL behandelt. Sie sollten jedoch auch die im WSL-Produkt-Repository auf GitHub aufgeführten Probleme durchsuchen.

Problem melden, Fehlerbericht, Featureanforderung

Die Probleme im WSL-Produkt-Repository ermöglichen Ihnen Folgendes:

  • Durchsuchen vorhandener Probleme, um zu schauen, ob ähnliche Probleme wie das bei Ihnen aufgetretene Problem beschrieben werden. Beachten Sie, dass Sie in der Suchleiste „is:open“ entfernen können, um bereits behobene Probleme in Ihre Suche einzubeziehen. Bitte kommentieren Sie offene Probleme, oder markieren Sie sie mit „Gefällt mir“, um auszudrücken, dass diese in Ihren Augen mit Priorität behandelt werden sollten.
  • Melden Sie ein neues Problem. Wenn bei Ihnen ein Problem mit WSL aufgetreten ist, das anscheinend noch nicht im Repository aufgeführt ist, wählen Sie die grüne Schaltfläche Neues Problem und dann WSL – Fehlerbericht aus. Sie müssen folgende Angaben machen: Titel für das Problem, Ihre Windows-Buildnummer (führen Sie cmd.exe /c ver aus, um die aktuelle Buildnummer anzuzeigen), ob Sie WSL 1 oder 2 ausführen, Ihre aktuelle Linux-Kernelversionsnummer (führen Sie wsl.exe --status oder cat /proc/version aus), die Versionsnummer Ihrer Verteilung (führen Sie lsb_release -r aus), alle anderen beteiligten Softwareversionen, die Reproduktionsschritte, das erwartete Verhalten, das tatsächliche Verhalten und die Diagnoseprotokolle, falls verfügbar und angemessen. Weitere Informationen finden Sie unter Mitwirken an WSL.
  • Erstellen Sie eine Featureanforderung, indem Sie die grüne Schaltfläche Neues Problem und dann Featureanforderung auswählen. Sie müssen einige Fragen beantworten, die Ihre Anforderung beschreiben.

Sie können außerdem:

Probleme bei der Installation

  • Installation failed with error 0x80070003 (Installationsfehler mit Fehlercode 0x80070003)

    • Das Windows-Subsystem für Linux wird nur auf dem Systemlaufwerk ausgeführt (in der Regel ist dies Ihr Laufwerk C:). Stellen Sie sicher, dass die Verteilungen auf dem Systemlaufwerk gespeichert sind:
    • Öffnen Sie Einstellungen -> System --> Speicher -> Weitere Speichereinstellungen: Speicherort für neue Inhalte ändern Abbildung der Systemeinstellungen für die Installation von Apps auf dem Laufwerk C:
  • WslRegisterDistribution failed with error 0x8007019e (WslRegisterDistribution-Fehler mit Fehlercode 0x8007019e)

    • Die optionale Komponente des Windows-Subsystems für Linux ist nicht aktiviert:
    • Öffnen Sie Systemsteuerung -> Programme und Funktionen -> Windows-Funktion aktivieren oder deaktivieren. Aktivieren Sie die Option Windows-Subsystem für Linux, oder verwenden Sie das PowerShell-Cmdlet, das am Anfang dieses Artikels erwähnt wurde.
  • Fehler 0x80070003 oder Fehler 0x80370102 während der Installation

    • Stellen Sie sicher, dass im BIOS Ihres Computers die Virtualisierung aktiviert ist. Die Anweisungen zur Aktivierung variieren je nach Computer. Die entsprechenden Optionen befinden sich wahrscheinlich in den CPU-bezogenen Einstellungen.
    • WSL2 setzt voraus, dass Ihre CPU das SLAT-Feature (Second Level Address Translation) unterstützt, das in Intel Nehalem-Prozessoren (Intel Core 1. Generation) und AMD Opteron eingeführt wurde. Ältere CPUs (z. B. Intel Core 2 Duo) können WSL2 nicht ausführen, auch wenn die VM-Plattform erfolgreich installiert wurde.
  • Fehler beim Upgradeversuch: Invalid command line option: wsl --set-version Ubuntu 2

    • Vergewissern Sie sich, dass das Windows-Subsystem für Linux aktiviert wurde und Sie die Windows-Buildversion 18362 oder höher verwenden. Führen Sie zum Aktivieren von WSL in einer PowerShell-Eingabeaufforderung mit Administratorberechtigungen diesen Befehl aus: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux.
  • Der angeforderte Vorgang konnte aufgrund einer Einschränkung des virtuellen Dateisystems nicht abgeschlossen werden. Dateien für virtuelle Festplatten müssen unkomprimiert und unverschlüsselt sein und dürfen keine geringe Dichte aufweisen.

    • Zum Deaktivieren von „Inhalte komprimieren“ (sowie „Inhalte verschlüsseln“, falls aktiviert), öffnen Sie den Profilordner Ihrer Linux-Verteilung. Er sollte sich in einem Ordner auf Ihrem Windows-Dateisystem befinden, der etwa folgendermaßen heißt: USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited....
    • In diesem Linux-Verteilungsprofil sollte ein Ordner "LocalState" vorhanden sein. Klicken Sie mit der rechten Maustaste auf diesen Ordner, um ein Menü mit Optionen anzuzeigen. Wählen Sie „Eigenschaften“ > „Erweitert“ aus, und stellen Sie dann sicher, dass die Kontrollkästchen „Inhalt komprimieren, um Speicherplatz zu sparen“ und „Inhalt verschlüsseln, um Daten zu schützen“ nicht aktiviert (nicht ausgewählt) sind. Wenn Sie gefragt werden, ob Sie diese Einstellung nur auf den aktuellen Ordner oder auf alle Unterordner und Dateien anwenden möchten, wählen Sie „Nur dieser Ordner“ aus, da Sie nur das Komprimierungsflag löschen. Danach sollte der Befehl wsl --set-version funktionieren.

Screenshot der Eigenschafteneinstellungen der WSL-Verteilung

Hinweis

In meinem Fall befand sich der Ordner „LocalState“ für meine Ubuntu 18.04-Verteilung unter „C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc“.

Prüfen Sie den GitHub-Thread #4103 in der WSL-Dokumentation, der diesem Thema gewidmet ist, auf aktualisierte Informationen.

  • Der Ausdruck 'wsl' wurde nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt.

  • Fehler: Für das Windows-Subsystem für Linux wurden keine Distributionen installiert.

    • Gehen Sie wie folgt vor, wenn dieser Fehler angezeigt wird, nachdem Sie bereits WSL-Distributionen installiert haben:
    1. Führen Sie die Distribution mindestens einmal aus, bevor Sie sie über die Befehlszeile aufrufen.
    2. Überprüfen Sie, ob Sie möglicherweise separate Benutzerkonten ausführen. Beim Ausführen Ihres primären Benutzerkontos mit erhöhten Berechtigungen (im Administratormodus) sollte dieser Fehler nicht auftreten, Sie sollten jedoch sicherstellen, dass Sie nicht versehentlich das integrierte Administratorkonto von Windows ausführen. Dies ist ein separates Benutzerkonto, unter dem installierte WSL-Distributionen standardmäßig nicht sichtbar sind. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren des integrierten Administratorkontos.
    3. Die ausführbare WSL-Datei wird nur im nativen Systemverzeichnis installiert. Wenn Sie einen 32-Bit-Prozess unter 64-Bit-Windows (oder unter ARM64 oder einer beliebigen nicht nativen Kombination) ausführen, ist für den gehosteten nicht nativen Prozess tatsächlich ein anderer System32-Ordner zugänglich. (Der Ordner, der für einen 32-Bit-Prozess unter x64-Windows zugänglich ist, ist auf dem Datenträger unter \Windows\SysWOW64 gespeichert.) Sie können von einem gehosteten Prozess aus auf den „nativen“ System32-Ordner zugreifen, indem Sie nach dem virtuellen Ordner \Windows\sysnative suchen. Beachten Sie, dass dieser auf dem Datenträger nicht tatsächlich vorhanden ist, die Pfadauflösung des Dateisystems findet ihn aber.
  • Error: Dieses Update gilt nur für Computer mit dem Windows-Subsystem für Linux.

    • Zum Installieren des MSI-Updatepakets für den Linux-Kernel ist WSL erforderlich und sollte zuerst aktiviert werden. Wenn ein Fehler auftritt, wird die folgende Meldung angezeigt: This update only applies to machines with the Windows Subsystem for Linux.
    • Es gibt drei mögliche Gründe, warum diese Meldung angezeigt wird:
    1. Sie befinden sich immer noch in der alten Version von Windows, die WSL 2 nicht unterstützt. In Schritt 2 finden Sie Versionsanforderungen und Links zum Update.

    2. WSL ist nicht aktiviert. Sie müssen zu Schritt 1 zurückkehren und sicherstellen, dass das optionale WSL-Feature auf Ihrem Computer aktiviert ist.

    3. Nachdem Sie WSL aktiviert haben, muss ein Neustart durchgeführt werden, damit es wirksam wird. Starten Sie den Computer neu, und wiederholen Sie den Vorgang.

  • Error: WSL 2 erfordert ein Update der zugehörigen Kernel-Komponente. Weitere Informationen finden Sie unter https://aka.ms/wsl2kernel.

    • Wenn das Linux-Kernelpaket im Ordner „%SystemRoot%\system32\lxss\tools“ fehlt, wird tritt dieser Fehler auf. Lösen Sie dieses Problem, indem Sie das MSI-Updatepaket für den Linux-Kernel (siehe Schritt 4 dieser Installationsanleitung) installieren. Sie müssen den MSI möglicherweise über Software deinstallieren und dann erneut installieren.

Allgemeine Probleme

Ich verwende Windows 10, Version 1903, und es werden trotzdem keine Optionen für WSL 2 angezeigt

Dies liegt wahrscheinlich daran, dass auf Ihrem Computer der Backport für WSL 2 noch nicht eingerichtet ist. Die einfachste Möglichkeit zur Lösung des Problems besteht darin, zu den Windows-Einstellungen zu wechseln und auf „Nach Updates suchen“ zu klicken, um die neuesten Updates auf Ihrem System zu installieren. Schauen Sie sich die vollständigen Anweisungen zur Einrichtung des Backports finden an.

Wenn Sie auf „Nach Updates suchen“ klicken und das Update immer noch nicht erhalten, können Sie KB4566116 manuell installieren.

„Fehler: 0x1bc wenn wsl --set-default-version 2

Dies kann vorkommen, wenn die Einstellung „Anzeigesprache“ oder „Systemgebietsschema“ nicht auf Englisch festgelegt ist.

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

Der tatsächliche Fehler für 0x1bc lautet:

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

Weitere Informationen finden Sie im Problem 5749.

Kein Zugriff auf WSL-Dateien von Windows aus möglich

Ein 9p-Protokolldateiserver stellt den Dienst auf der Linux-Seite bereit, um Windows den Zugriff auf das Linux-Dateisystem zu ermöglichen. Wenn Sie nicht über \\wsl$ unter Windows auf WSL zugreifen können, kann dies daran liegen, dass 9P nicht ordnungsgemäß gestartet wurde.

Um dies zu überprüfen, können Sie die Startprotokolle mit dmesg |grep 9p überprüfen. Dadurch werden Fehler angezeigt. Eine erfolgreiche Ausgabe sieht wie folgt aus:

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

Weitere Informationen zu diesem Problem finden Sie in diesem GitHub-Thread.

WSL 2-Verteilung kann nicht gestartet werden, und in der Ausgabe wird nur "WSL 2" angezeigt

Wenn Ihre Anzeigesprache nicht Englisch ist, sehen Sie möglicherweise eine abgeschnittene Version eines Fehlertexts.

C:\Users\me>wsl
WSL 2

Um dieses Problem zu beheben, navigieren Sie zu https://aka.ms/wsl2kernel, und installieren Sie den Kernel manuell, indem Sie die Anweisungen auf der doc-Seite befolgen.

command not found beim Ausführen von „windows.exe“ unter Linux

Benutzer können ausführbare Windows-Programmdateien wie „notepad.exe“ direkt aus Linux ausführen. Manchmal kann es vorkommen, dass "Befehl nicht gefunden" angezeigt wird, wie unten dargestellt:

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

Wenn es keine win32-Pfade in Ihrem $PATH gibt, findet interop die EXE-Datei nicht. Sie können dies überprüfen, indem Sie echo $PATH in Linux ausführen. In der Ausgabe sollte ein win32-Pfad (z. B. „/mnt/c/Windows“) angezeigt werden. Werden keine Windows-Pfade angezeigt, wird Ihr PATH höchstwahrscheinlich von Ihrer Linux-Shell außer Kraft gesetzt.

Im folgenden Beispiel hat „/etc/profile“ auf Debian zu diesem Problem beigetragen:

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

Die richtige Vorgehensweise unter Debian besteht darin, die obigen Zeilen zu entfernen. Sie können auch $PATH während der Zuweisung anhängen, wie unten beschrieben, aber das führt zu einigen anderen Problemen mit WSL und 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

Weitere Informationen finden Sie unter den Problemen 5296 und 5779.

„Error: 0x80370102 Der virtuelle Computer konnte nicht gestartet werden, weil ein erforderliches Feature nicht installiert ist.“

Aktivieren Sie das Windows-Feature "Virtual Machine Platform", und stellen Sie sicher, dass Virtualisierung im BIOS aktiviert ist.

  1. Klicken Sie auf Systemanforderungen von Hyper-V.

  2. Wenn es sich bei dem Computer um einen virtuellen Computer handelt, aktivieren Sie die geschachtelte Virtualisierung manuell. Starten Sie PowerShell als Administrator, und führen Sie folgende Schritte aus:

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Befolgen Sie die Richtlinien des Herstellers Ihres PCs, um zu erfahren, wie Sie die Virtualisierung aktivieren. Dadurch müssen Sie möglicherweise den System-BIOS verwenden, um sicherzustellen, dass diese Features auf Ihrer CPU aktiviert sind. Die Anweisungen für diesen Prozess können von Computer zu Computer variieren. In diesem Artikel von Bleeping Computer finden Sie ein Beispiel.

  4. Starten Sie den Computer neu, nachdem Sie die optionale Virtual Machine Platform-Komponente aktiviert haben.

  5. Wenn Sie Hypervisoren von Drittanbietern installiert haben (z. B. VMware oder VirtualBox), müssen Sie außerdem sicherstellen, dass Sie die neuesten Versionen verwenden, die HyperV unterstützen (VMware 15.5.5+ und VirtualBox 6+), oder dass diese deaktiviert sind.

Erfahren Sie mehr über das Konfigurieren der geschachtelten Virtualisierung beim Ausführen von Hyper-V auf einem virtuellen Computer.

Bash verliert nach dem Herstellen einer Verbindung mit einem VPN die Netzwerkkonnektivität

Wenn Bash nach dem Herstellen einer Verbindung mit einem VPN unter Windows die Netzwerkkonnektivität verliert, können Sie diese Problemumgehung innerhalb von Bash versuchen. Mit dieser Problemumgehung können Sie die DNS-Auflösung manuell durch /etc/resolv.conf außer Kraft setzen.

  1. Notieren Sie sich den DNS-Server des VPN (ipconfig.exe /all).
  2. Erstellen Sie eine Kopie der vorhandenen Datei „resolv.conf“ (sudo cp /etc/resolv.conf /etc/resolv.conf.new).
  3. Heben Sie die Verknüpfung der aktuellen Datei „resolv.conf“ auf (sudo unlink /etc/resolv.conf).
  4. sudo mv /etc/resolv.conf.new /etc/resolv.conf
  5. Öffnen Sie /etc/resolv.conf und
    ein. Löschen Sie die erste Zeile aus der Datei, die Folgendes besagt: „#This file was automatically generated by WSL. To stop automatic generation of this file, remove this line.“ (Diese Datei wurde automatisch von WSL generiert. Um die automatische Generierung dieser Datei zu beenden, entfernen Sie diese Zeile.)
    b. Fügen Sie den DNS-Eintrag aus (1) oben als ersten Eintrag in der Liste der DNS-Server hinzu.
    c. Schließen Sie die Datei.

Nachdem Sie die Verbindung mit dem VPN getrennt haben, müssen Sie die Änderungen auf /etc/resolv.conf zurücksetzen. Gehen Sie dazu folgendermaßen vor:

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

Beim Starten von WSL oder beim Installieren einer Distribution wird ein Fehlercode zurückgegeben

Befolgen Sie diese Anweisungen, um detaillierte Protokolle zu erfassen und ein Issue auf GitHub zu melden.

Aktualisieren von WSL

Es gibt zwei Komponenten des Windows-Subsystems für Linux, die eine Aktualisierung erfordern können.

  1. Um das Windows-Subsystem für Linux selbst zu aktualisieren, verwenden Sie den Befehl wsl --update in PowerShell oder CMD.

  2. Um die spezifischen Benutzerbinärdateien der Linux-Verteilung zu aktualisieren, verwenden Sie den Befehl apt-get update | apt-get upgrade in der Linux-Verteilung, die Sie aktualisieren möchten.

Apt-get-Upgradefehler

In einigen Paketen werden Features verwendet, die noch nicht implementiert wurden. udev wird z.B. noch nicht unterstützt und verursacht mehrere apt-get upgrade-Fehler.

Führen Sie die folgenden Schritte aus, um Probleme im Zusammenhang mit udev zu beheben:

  1. Schreiben Sie Folgendes in /usr/sbin/policy-rc.d, und speichern Sie die Änderungen.

    #!/bin/sh
    exit 101
    
  2. Fügen Sie /usr/sbin/policy-rc.d Ausführungsberechtigungen hinzu:

    chmod +x /usr/sbin/policy-rc.d
    
  3. Führen Sie die folgenden Befehle aus:

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

„Error: 0x80040306“ bei der Installation

Dies hat mit der Tatsache zu tun, dass die Legacykonsole nicht unterstützt wird. So deaktivieren Sie die Legacykonsole:

  1. Öffnen Sie „cmd. exe“.
  2. Klicken Sie mit der rechten Maustaste auf der Titelleiste auf „Eigenschaften“. Deaktivieren Sie die Option „Legacykonsole verwenden“.
  3. Auf "OK" klicken

„Error: 0x80040154“ nach Windows-Update

Das Feature „Windows-Subsystem für Linux“ ist möglicherweise während eines Windows-Updates deaktiviert. Wenn dies der Fall ist, muss das Windows-Feature erneut aktiviert werden. Anweisungen zum Aktivieren des Windows-Subsystems für Linux finden Sie im Leitfaden zur manuellen Installation.

Ändern der Anzeigesprache

Die WSL-Installation versucht, das Ubuntu-Gebietsschema automatisch so zu ändern, dass es dem Gebietsschema Ihrer Windows-Installation entspricht. Wenn Sie dieses Verhalten nicht wünschen, können Sie diesen Befehl ausführen, um das Ubuntu-Gebietsschema zu ändern, nachdem die Installation abgeschlossen wurde. Sie müssen „bash.exe“ neu starten, damit diese Änderung wirksam wird.

Im folgenden Beispiel wird das Gebietsschema in „en-US“ geändert:

sudo update-locale LANG=en_US.UTF8

Installationsprobleme nach der Windows-Systemwiederherstellung

  1. Löschen Sie den Ordner %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.
    Hinweis: Unterlassen Sie dies, wenn Ihre optionale Funktion vollständig installiert und funktionsfähig ist.
  2. Aktivieren Sie das optionale WSL-Feature (falls noch nicht geschehen).
  3. Neustart
  4. lxrun/uninstall/full
  5. Installieren von Bash

Kein Internetzugriff in WSL

Einige Benutzer haben Probleme mit bestimmten Firewallanwendungen gemeldet, die den Internetzugriff in WSL blockieren. Die gemeldeten Firewalls sind:

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

In einigen Fällen ermöglicht das Deaktivieren der Firewall den Zugriff. In einigen Fällen sieht es so aus, als ob bereits die Installation der Firewall den Zugriff blockiert.

Wenn Sie Microsoft Defender Firewall verwenden, deaktivieren Sie das Kontrollkästchen „Blockiert alle eingehenden Verbindungen, einschließlich der in der Liste zugelassener Apps“. ermöglicht den Zugriff.

Fehler des Typs „Berechtigung verweigert“ bei Verwendung von Ping

Für Windows Anniversary Update, Version 1607, sind Administratorberechtigungen in Windows erforderlich, um Ping in WSL auszuführen. Um Ping auszuführen, führen Sie Bash unter Ubuntu unter Windows als Administrator aus, oder starten Sie „bash.exe“ über eine CMD-/PowerShell-Eingabeaufforderung mit Administratorrechten.

Für spätere Versionen von Windows, ab Build 14926, sind Administratorberechtigungen nicht mehr erforderlich.

Bash reagiert nicht

Wenn Sie beim Arbeiten mit Bash feststellen, dass Bash hängt (oder blockiert ist) und nicht mehr auf Eingaben reagiert, helfen Sie uns, das Problem zu diagnostizieren, indem Sie ein Speicherabbild erfassen und melden. Beachten Sie, dass diese Schritte zu einem Absturz Ihres Systems führen. Unterlassen Sie dies, wenn Sie damit nicht einverstanden sind, oder speichern Sie Ihre Arbeit zuvor.

So erfassen Sie ein Speicherabbild

  1. Ändern Sie den Typ des Speicherabbilds in „Vollständiges Speicherabbild“. Notieren Sie sich den aktuellen Typ, bevor Sie den Speicherabbildtyp ändern.

  2. Verwenden Sie diese Schritte zum Konfigurieren von Abstürzen mithilfe der Tastatursteuerung.

  3. Reproduzieren Sie das Hängen oder die Blockade.

  4. Lassen Sie das System mithilfe der Tastensequenz aus (2) abstürzen.

  5. Das System stürzt ab und erfasst das Speicherabbild.

  6. Nachdem das System neu gestartet wurde, übermitteln Sie die Datei „memory.dmp“ an secure@microsoft.com. Der Standardspeicherort der Speicherabbilddatei ist „%SystemRoot%\memory.dmp“ oder „C:\Windows\memory.dmp“, wenn „C:“ das Systemlaufwerk ist. Geben Sie in der E-Mail an, dass das Speicherabbild für das WSL- oder Bash unter Windows-Team vorgesehen ist.

  7. Stellen Sie die ursprünglichen Einstellung für den Speicherabbildtyp wieder her.

Überprüfen der Buildnummer

Um die Architektur des PCs und die Windows-Buildnummer zu ermitteln, öffnen Sie
Einstellungen > System > Info

Suchen Sie nach den Feldern Betriebssystembuild und Systemtyp.
Screenshot der Felder „Betriebssystembuild“ und „Systemtyp“

Führen Sie Folgendes in PowerShell aus, um die Windows Server-Buildnummer zu ermitteln:

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

Bestätigen, dass WSL aktiviert ist

Sie können bestätigen, dass das Windows-Subsystem für Linux aktiviert ist, indem Sie Folgendes in PowerShell ausführen:

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

Verbindungsprobleme des OpenSSH-Servers

Beim Versuch, den SSH-Server zu verbinden, tritt ein Fehler auf: „Connection closed by 127.0.0.1 port 22“ (Verbindung wurde durch 127.0.0.1 Port 22 geschlossen).

  1. Stellen Sie sicher, dass der OpenSSH-Server ausgeführt wird:

    sudo service ssh status
    

    und Sie dieses Tutorial befolgt haben: https://ubuntu.com/server/docs/service-openssh

  2. Beenden Sie den sshd-Dienst, und starten Sie sshd im Debugmodus:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Überprüfen Sie die Startprotokolle, und stellen Sie sicher, dass HostKeys verfügbar sind und keine Protokollmeldungen wie die folgenden angezeigt werden:

    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
    

Wenn solche Meldungen angezeigt werden und die Schlüssel unter /etc/ssh/ fehlen, müssen Sie die Schlüssel neu generieren oder openssh-server einfach bereinigen und installieren:

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

"Die referenzierte Assembly konnte nicht gefunden werden." beim Aktivieren des optionalen WSL-Features

Dieser Fehler bezieht sich auf einen fehlerhaften Installationsstatus. Führen Sie die folgenden Schritte aus, um eine Behebung dieses Problems zu versuchen:

  • Wenn Sie den Befehl zum Aktivieren des WSL-Features aus PowerShell ausführen, versuchen Sie stattdessen, die grafische Benutzeroberfläche zu verwenden, indem Sie das Startmenü öffnen, nach „Windows-Features aktivieren oder deaktivieren“ suchen und dann in der Liste „Windows Subsystem für Linux“ auswählen, wodurch die optionale Komponente installiert wird.

  • Aktualisieren Sie Ihre Windows-Version, indem Sie zu „Einstellungen“, „Updates“ wechseln und dann auf „Nach Updates suchen“ klicken

  • Wenn beide Versuche erfolglos bleiben und Sie auf WSL zugreifen müssen, erwägen Sie, ein lokales Upgrade auszuführen, indem Sie Windows 10 mithilfe der Installationsmedien erneut installieren und „Alles beibehalten“ auswählen, um sicherzustellen, dass Ihre Apps und Dateien erhalten bleiben. Anweisungen dazu finden Sie auf der Seite Erneutes Installieren von Windows 10.

Wenn dieser Fehler angezeigt wird:

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

Um dieses Problem zu beheben, fügen Sie Folgendes an die /etc/wsl.conf-Datei an:

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

Beachten Sie, dass durch Hinzufügen dieses Befehls Metadaten hinzugefügt und die in WSL angezeigten Dateiberechtigungen für die Windows-Dateien geändert werden. Weitere Informationen finden Sie in den Dateisystemberechtigungen.

Fehler beim Ausführen von Windows-Befehlen innerhalb einer Verteilung

Einige im Microsoft Store verfügbare Verteilungen sind noch nicht vollständig kompatibel, um Windows-Befehle sofort auszuführen. Wenn Sie beim Ausführen von powershell.exe /c start . oder eines anderen Windows-Befehls der Fehler -bash: powershell.exe: command not found angezeigt wird, können Sie ihn mit den folgenden Schritten beheben:

  1. Führen Sie echo $PATH in Ihrer WSL-Verteilung aus.
    Wenn /mnt/c/Windows/system32 nicht enthalten ist, wird die PATH-Standardvariable von irgendeiner Komponente neu definiert.
  2. Prüfen Sie die Profileinstellungen mit cat /etc/profile.
    Ist die Zuweisung der PATH-Variablen enthalten, bearbeiten Sie die Datei, um den PATH-Zuweisungsblock mit einem # -Zeichen auszukommentieren.
  3. Prüfen Sie, ob „wsl.conf“ vorhanden ist (cat /etc/wsl.conf), und stellen Sie sicher, dass appendWindowsPath=false nicht enthalten ist. Andernfalls kommentieren Sie es aus.
  4. Starten Sie die Verteilung neu, indem Sie wsl -t eingeben, gefolgt vom Namen der Verteilung, oder indem Sie wsl --shutdown entweder in cmd oder PowerShell ausführen.

Starten nach der Installation von WSL 2 nicht möglich

Es ist ein Problem bekannt, das Benutzer betrifft, wenn Sie nach der Installation von WSL 2 nicht starten können. Während unserer umfassenden Diagnose dieser Probleme haben Benutzer berichtet, dass das Ändern der Puffergröße oder das Installieren der richtigen Treiber helfen kann, dieses Problem zu beheben. Im folgenden GitHub-Artikel finden Sie die neuesten Updates zu diesem Problem.

WSL 2-Fehler, wenn ICS deaktiviert ist

Internet Connection Sharing (ICS) ist eine erforderliche Komponente von WSL 2. Der ICS-Dienst wird vom Hostnetzwerkdienst (HNS) verwendet, um das zugrunde liegende virtuelle Netzwerk zu erstellen, auf dem WSL 2 für NAT, DNS, DHCP und die Freigabe von Hostverbindungen basiert.

Das Deaktivieren des ICS-Dienstes (SharedAccess) oder das Deaktivieren von ICS über eine Gruppenrichtlinie verhindert, dass das WSL HNS-Netzwerk erstellt wird. Dies führt zu Fehlern beim Erstellen eines neuen WSL Version 2-Images und dem folgenden Fehler beim Versuch, ein Image der Version 1 in Version 2 zu konvertieren.

There are no more endpoints available from the endpoint mapper.

Systeme, für die WSL 2 erforderlich ist, sollten den ICS-Dienst (SharedAccess) im Standardstartstatus „Manuell“ (Start durch Auslöser) belassen, und alle Richtlinien, die ICS deaktivieren, sollten außer Kraft gesetzt oder entfernt werden. Beim Deaktivieren des ICS-Diensts wird die Ausführung von WSL 2 abgebrochen, daher wird von der Deaktivierung von ICS abgeraten. Eine teilweise Deaktivierung von ICS ist anhand dieser Anweisungenng-application-guard-) möglich.

Verwenden älterer Versionen von Windows und WSL

Es gibt mehrere Unterschiede, die SIe beachten sollten, wenn Sie eine ältere Version von Windows und WSL ausführen, z. B. Windows 10 Creators Update (Oktober 2017, Build 16299) oder Anniversary Update (August 2016, Build 14393). Es wird empfohlen, auf die neueste Windows Version zu aktualisieren. Wenn dies jedoch nicht möglich ist, werden nachfolgend einige der Unterschiede beschrieben.

Unterschiede bei Interoperabilitätsbefehlen:

  • bash.exe wurde durch wsl.exe ersetzt. Linux-Befehle können an der Windows-Eingabeaufforderung oder in PowerShell ausgeführt werden. Für frühe Windows-Versionen müssen Sie jedoch möglicherweise den Befehl bash verwenden. Beispiel: C:\temp> bash -c "ls -la". Die an bash -c übergebenen WSL-Befehle werden ohne Änderung an den WSL-Prozess weitergeleitet. Dateipfade müssen im WSL-Format angegeben werden, und es muss darauf geachtet werden, dass relevante Zeichen mit Escapezeichen versehen werden. Beispiel: C:\temp> bash -c "ls -la /proc/cpuinfo" oder C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Um anzuzeigen, welche Befehle für eine bestimmte Distribution verfügbar sind, führen Sie [distro.exe] /? aus. Beispielsweise mit Ubuntu: C:\> ubuntu.exe /?.
  • Der Windows-Pfad ist in $PATH von WSL enthalten.
  • Wenn Sie ein Windows-Tool aus einer WSL-Verteilung in einer früheren Version von Windows 10 aufrufen, müssen Sie den Verzeichnispfad angeben. Geben Sie beispielsweise Folgendes ein, um die Windows Editor-App über die WSL-Befehlszeile aufzurufen: /mnt/c/Windows/System32/notepad.exe.
  • Um den Standardbenutzer in root zu ändern, verwenden Sie in PowerShell den Befehl C:\> lxrun /setdefaultuser root, und führen Sie dann „Bash.exe“ aus, um sich anzumelden: C:\> bash.exe. Setzen Sie Ihr Kennwort mit dem Kennwortbefehl der Verteilung $ passwd username zurück, und schließen Sie die Linux-Befehlszeile: $ exit. Setzen Sie ihren Standardbenutzer über die Windows-Eingabeaufforderung oder PowerShell wieder auf Ihr normales Linux-Benutzerkonto zurück: C:\> lxrun.exe /setdefaultuser username.

Deinstallieren der Vorgängerversion von WSL

Wenn Sie WSL ursprünglich auf einer Version von Windows 10 vor dem Creators-Update installiert haben (Oktober 2017, Build 16299), empfehlen wir Ihnen, alle erforderlichen Dateien, Daten usw. von der älteren installierten Linux-Verteilung zu einer neueren, über den Microsoft Store installierten Verteilung zu migrieren. Um die alte Verteilung von Ihrem Computer zu entfernen, führen Sie Folgendes über eine Befehlszeilen oder PowerShell-Instanz aus: wsl --unregister Legacy. Sie haben auch die Möglichkeit, die ältere Legacyverteilung manuell zu entfernen, indem Sie den Ordner %localappdata%\lxss\ (und alle untergeordneten Inhalte) mit dem Windows-Datei-Explorer oder mit PowerShell löschen: rm -Recurse $env:localappdata/lxss/.