Sdílet prostřednictvím


Řešení potíží se subsystémem Windows pro Linux

Probrali jsme některé běžné scénáře řešení potíží související s WSL níže, ale zvažte také vyhledávání problémů v úložišti produktů WSL na GitHubu.

Nahlášení problému, hlášení chyb, žádost o funkci

Funkce repository produktů WSL vám umožňují:

  • Prohlédněte si existující problémy a zjistěte, zda některé souvisí s tím, který máte.

    Všimněte si, že na panelu hledání můžete odebrat "state:open", abyste do hledání zahrnuli problémy, které už byly vyřešeny.

    Zvažte prosím komentování nebo udělení palce nahoru k jakýmkoli otevřeným problémům, o které byste chtěli vyjádřit svůj zájem, aby se dál řešily jako priorita.

  • Nahlásit nový problém. Pokud jste narazili na problém s WSL a zdá se, že neexistuje problém, můžete vybrat zelené tlačítko "New issue" a pak zvolit "WSL - Bug Report".

    Musíte poskytnout následující informace:

    • Název problému
    • Verze Windows: Spusťte prosím cmd.exe /c ver build Windows, na který jste.
    • Verze WSL: Pokud používáte subsystém Windows pro Linux z Microsoft Storu, spusťte wsl.exe -vprosím .
    • Používáte WSL 1 nebo WSL 2: Řekněte nám, jestli se jedná o problém ve WSL 2 nebo WSL 1. Můžete to zjistit spuštěním wsl.exe -l -vpříkazu .
    • Verze jádra: Řekněte nám prosím, jakou verzi jádra Linuxu používáte, nebo pokud používáte vlastní jádro. Tento příkaz můžete spustit wsl.exe --status , pokud je pro vás k dispozici, nebo spuštěním cat /proc/version v distribuci.
    • Verze distribuce: Řekněte nám prosím, jakou distribuci používáte (pokud je k dispozici). Pokud je to možné, můžete získat další informace o verzi, například v Debianu / Ubuntu, run lsb_release -r.
    • Jiný software: Pokud hlásíte chybu týkající se interakce WSL s jinými aplikacemi, řekněte nám prosím. Jaké aplikace? Jaké verze?
    • Kroky pro reprodukci: Uveďte prosím kroky pro reprodukci chyby.
    • Očekávané chování: Co jste očekávali? Uveďte všechny relevantní příklady nebo odkazy na dokumentaci.
    • Skutečné chování: Co se místo toho stalo?
    • Diagnostické protokoly: V případě potřeby uveďte další diagnostiku. Informace o shromažďování protokolů centra Feedback, síťových protokolů a dalších informací najdete v doprovodných materiálech.

    Další informace najdete v tématu přispívání do WSL.

  • Vytvořte žádost o funkci tak, že vyberete zelené tlačítko "New issue" a pak vyberete "Feature request".

    Budete muset vyřešit několik otázek popisujících vaši žádost.

Můžete také:

  • Podat problém s dokumentací pomocí úložiště WSL docs. Pokud chcete přispívat do dokumentace WSL, přečtěte si příručku pro přispěvatele Microsoft Docs.
  • Nahlásit problém týkající se Windows Terminal pomocí úložiště produktu Windows Terminal, pokud váš problém souvisí více s Windows Terminal, konzolou systému Windows nebo uživatelským rozhraním příkazového řádku.

Problémy s instalací

  • instalace selhala s chybou 0x80070003

    • Subsystém Windows pro Linux běží jenom na systémové jednotce (obvykle se jedná o jednotku C:). Ujistěte se, že jsou distribuce uložené na systémové jednotce:
    • Ve Windows 10 otevřete Nastavení –>Systém –>Úložiště –>Další nastavení úložiště: Změnit místo uložení nového obsahuObrázek nastavení systému pro instalaci aplikací na disk C: (Windows 10)
    • Ve Windows 11 otevřete Nastavení –>Systém –>Úložiště –>Upřesnit nastavení úložiště –>Kde se ukládá nový obsahObrázek nastavení systému pro instalaci aplikací na jednotku C:
  • WslRegisterDistribution selhal s chybou 0x8007019e

    • Nepovinná komponenta subsystému Windows pro Linux není povolená:
    • Otevřete Ovládací panely –>Programy a funkce –>Zapněte nebo vypněte funkci Windows –> Zkontrolujte subsystém Windows pro Linux nebo použijte rutinu PowerShellu uvedenou v kroku 1.
  • instalace selhala s chybou 0x80070003 nebo 0x80370102

    • Ujistěte se, že je v systému BIOS vašeho počítače povolená virtualizace. Pokyny k tomu, jak to provést, se budou lišit od počítače po počítač a s největší pravděpodobností budou v rámci možností souvisejících s procesorem.
    • WSL2 vyžaduje, aby váš procesor podporoval funkci Překlad adres druhé úrovně (SLAT), která byla zavedena v procesorech Intel Nehalem (Intel Core 1. generace) a AMD Opteron. Starší procesory (například Intel Core 2 Duo) nebudou moct spouštět WSL2, i když je platforma virtuálního počítače úspěšně nainstalovaná.
  • Chyba při pokusu o upgrade, neplatná možnost příkazového řádku: wsl --set-version Ubuntu 2

    • Ujistěte se, že máte povolený subsystém Windows pro Linux a že používáte Windows Build verze 18362 nebo novější. Pokud chcete povolit spuštění WSL, spusťte tento příkaz na příkazovém řádku PowerShellu s oprávněními správce:

      Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
      
  • Požadovanou operaci nebylo možné dokončit kvůli omezení systému virtuálních disků. Soubory virtuálního pevného disku musí být nekomprimované a nešifrované a nesmí být řídké.

    • Zrušte výběr "Komprimovat obsah" (a také "Šifrovat obsah", pokud je zaškrtnuté) otevřením složky profilu pro vaši linuxovou distribuci. Měla by být umístěná ve složce ve vašem systému souborů Windows, například: %LocalAppData%\Packages\CanonicalGroupLimited...
    • V tomto profilu distribuce Linuxu by měla být složka LocalState. Kliknutím pravým tlačítkem myši na tuto složku zobrazíte nabídku možností. Zaškrtněte políčko Upřesnit vlastnosti> a ujistěte se, že políčko Komprimovat obsah pro úsporu místa na disku a Šifrovat obsah pro zabezpečení dat není zaškrtnuté (není zaškrtnuté). Pokud se zobrazí dotaz, jestli se má použít jenom pro aktuální složku nebo pro všechny podsložky a soubory, vyberte "jenom tuto složku", protože vymažete pouze příznak komprimace. Potom by měl příkaz wsl --set-version fungovat.

    Snímek obrazovky s nastavením vlastností distribuce WSL

    Poznámka

    V mém případě byla složka LocalState pro distribuci Ubuntu 18.04 umístěna v C:\Users\<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

    Zkontrolujte vlákno GitHubu na webu WSL #4103, kde se tento problém sleduje, a vyhledejte aktualizované informace.

  • Výraz wsl se nerozpozná jako název rutiny, funkce, souboru skriptu nebo operovatelného programu.

    • Ujistěte se, že je nainstalovaný subsystém Windows pro volitelnou komponentu linuxu. Pokud navíc používáte zařízení ARM64 a spouštíte tento příkaz z PowerShellu, zobrazí se tato chyba. Místo toho spusťte wsl.exe z PowerShell Corenebo z příkazového řádku.
  • Chyba: Subsystém Windows pro Linux nemá nainstalované distribuce.

    • Pokud se zobrazí tato chyba po instalaci distribucí WSL:
    1. Než ho vyvoláte z příkazového řádku, spusťte distribuci alespoň jednou.
    2. Zkontrolujte, jestli možná používáte samostatné uživatelské účty. Spuštění primárního uživatelského účtu se zvýšenými oprávněními (v režimu správce) by nemělo vést k této chybě, ale měli byste se ujistit, že nechtěně nepoužíváte integrovaný účet správce, který je součástí Windows. Jedná se o samostatný uživatelský účet a záměrně se nezobrazí žádné nainstalované distribuce WSL. Další informace najdete v tématu Povolení a zakázání předdefinovaného účtu správce.
    3. Spustitelný soubor WSL je nainstalován pouze do nativního systémového adresáře. Při spuštění 32bitového procesu v 64bitovém systému Windows (nebo v ARM64, jakékoli jiné než nativní kombinaci), hostovaný ne nativní proces ve skutečnosti uvidí jinou složku System32. (Jeden 32bitový proces vidí v systému x64 Windows je uložený na disku v %SystemRoot%\SysWOW64.) K nativnímu systému 32 můžete přistupovat z hostovaného procesu tak, že se podíváte do virtuální složky: \Windows\sysnative. Na disku se skutečně nenachází, ale pamatujte, že ho řešitel cest ve filesystému najde.
  • Chyba: Tato aktualizace se vztahuje pouze na počítače se subsystémem Windows pro Linux.

    • Pokud chcete nainstalovat balíček MSI aktualizace jádra Linuxu, vyžaduje se WSL a měla by být nejprve povolená. Pokud selže, zobrazí se zpráva: Tato aktualizace se vztahuje pouze na počítače se subsystémem Windows pro Linux.
    • Tato zpráva se může zobrazit ze tří důvodů:
    1. Stále jste ve staré verzi Windows, která nepodporuje WSL 2. Viz krok 2 – Kontrola požadavků na spuštění WSL 2.

    2. WSL není povolen. Budete se muset vrátit ke kroku 1 a ujistit se, že je na vašem počítači povolená volitelná funkce WSL.

    3. Po povolení WSL se vyžaduje restartování, aby se projevilo, restartujte počítač a zkuste to znovu.

  • Chyba: WSL 2 vyžaduje aktualizaci součásti jádra. Informace najdete v kroku 4.

    • Pokud ve složce chybí balíček jádra Linuxu %SystemRoot%\system32\lxss\tools , dojde k této chybě. Tento problém vyřešíte instalací balíčku MSI aktualizace jádra Linuxu v kroku 4 těchto pokynů k instalaci. Možná budete muset odinstalovat MSI z příkazu Přidat nebo odebrat programy a nainstalovat ho znovu.

Běžné problémy

Mám Windows 10 verze 1903 a stále nevidím možnosti WSL 2

Důvodem je pravděpodobně to, že váš počítač ještě nepřevezl backport pro WSL 2. Nejjednodušší způsob, jak to vyřešit, je přejít do Nastavení systému Windows a kliknutím na Tlačítko Vyhledat aktualizace nainstalovat nejnovější aktualizace do systému. Přečtěte si úplné pokyny, jak provést zpětné portování.

Pokud kliknete na Vyhledat aktualizace a přesto tuto aktualizaci neobdržíte, můžete kb nainstalovat KB4566116 ručně.

Chyba: 0x1bc při wsl --set-default-version 2

K tomu může dojít v případě, že nastavení Jazyk zobrazení nebo Národní prostředí systému není angličtina.

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

Skutečná chyba 0x1bc : WSL 2 vyžaduje aktualizaci součásti jádra. Informace najdete na adrese .

Další informace najdete v problému č. 5749.

Nelze získat přístup k souborům WSL z Windows

Souborový server protokolu 9p poskytuje službu na straně Linuxu, aby systém Windows mohl přistupovat k systému souborů Linux. Pokud nemůžete získat přístup k WSL pomocí \\wsl$ ve Windows, může to být proto, že 9P se nespustí správně.

Pokud to chcete zkontrolovat, můžete zkontrolovat spouštěcí protokoly pomocí: dmesg | grep 9pa zobrazí se všechny chyby. Úspěšný výstup vypadá takto:

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

Další informace o tomto problému najdete v problému č. 5307 .

Nejde spustit distribuci WSL 2 a ve výstupu se zobrazí pouze WSL 2.

Pokud jazyk zobrazení není angličtina, je možné, že se zobrazí zkrácená verze chybového textu.

PS C:\> wsl.exe
WSL 2

Pokud chcete tento problém vyřešit, projděte si krok 4 a nainstalujte jádro ručně podle pokynů na této stránce dokumentu.

command not found při spouštění windows .exe v Linuxu

Uživatelé můžou spouštět spustitelné soubory Windows, jako je notepad.exe přímo z Linuxu. V některých případech můžete stisknout příkaz "příkaz nebyl nalezen", například níže:

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

Pokud ve vašem $PATH nejsou žádné cesty Win32, nepodaří se interop najít .exe. Můžete ho ověřit spuštěním echo $PATH v Linuxu. Očekává se, že ve výstupu uvidíte cestu Win32 (například /mnt/c/Windows). Pokud nevidíte žádné cesty windows, pravděpodobně se vaše cesta PATH přepíše prostředím Linux.

Tady je příklad, který /etc/profile v Debianu přispěl k problému:

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

Správným způsobem v Debianu je odstranit výše uvedené řádky. Můžete také připojit $PATH během přiřazení jako níže, ale to vede k některým jiné problémy wsL a 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

Další informace najdete v tématu problém č. 5296 a problém č. 5779.

Chyba: 0x80370102 Virtuální počítač nelze spustit, protože není nainstalovaná požadovaná funkce.

Povolte funkci Windows platformy virtuálních počítačů a ujistěte se, že je v systému BIOS povolená virtualizace.

  1. Kontrola požadavků na systém Hyper-V

  2. Pokud je váš stroj virtuální stroj, povolte vnořenou virtualizaci ručně. Spusťte PowerShell pomocí správce a spusťte následující příkaz a nahraďte <VMName> názvem virtuálního počítače ve vašem hostitelském systému (název najdete ve správci Hyper-V):

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Postupujte podle pokynů od výrobce počítače o tom, jak povolit virtualizaci. Obecně to může zahrnovat použití systému BIOS systému, aby se zajistilo, že jsou tyto funkce povoleny na vašem procesoru. Pokyny pro tento proces se mohou lišit od počítače po počítač. Viz Povolení virtualizace ve Windows.

  4. Po povolení volitelné komponentyVirtual Machine Platform restartujte počítač.

  5. Ujistěte se, že je ve vaší konfiguraci spouštění povolené spuštění hypervisoru. Můžete to ověřit spuštěním PowerShellu se zvýšenými oprávněními:

    bcdedit /enum | findstr -i hypervisorlaunchtype
    

    Pokud se zobrazí hypervisorlaunchtype Off, hypervisor je zakázaný. Povolení spuštění v PowerShellu se zvýšenými oprávněními:

    bcdedit /set hypervisorlaunchtype Auto
    
  6. Pokud máte navíc nainstalované hypervisory třetích stran (například VMware nebo VirtualBox), ujistěte se, že máte nejnovější verze, které můžou podporovat HyperV (VMware 15.5.5+ a VirtualBox 6+) nebo jsou vypnuté.

  7. Pokud na virtuálním počítači Azure dochází k této chybě, zkontrolujte, jestli je Trusted Launch zakázáno. Na virtuálních počítačích Azure s důvěryhodným spuštěnímse vnořená virtualizace nepodporuje.

Přečtěte si další informace o tom, jak konfigurovat vnořené virtualizační při spuštění Hyper-V ve virtuálním počítači.

WSL nemá na mém pracovním počítači nebo v podnikovém prostředí žádné síťové připojení

Firemní prostředí můžou mít nastavení brány firewall Windows Defender nakonfigurované k blokování neoprávněného síťového provozu. Pokud je sloučení místních pravidel nastaveno na Ne, sítě WSL nebudou ve výchozím nastavení fungovat a správce bude muset přidat pravidlo brány firewall, aby ho povolil.

Nastavení sloučení místních pravidel můžete potvrdit pomocí následujícího postupu:

snímek obrazovky s nastavením brány Windows Firewall

  1. Otevřete "Windows Defender Firewall s pokročilým zabezpečením" (to se liší od "Windows Defender Firewall" v Ovládacích panelech)
  2. Klikněte pravým tlačítkem na kartu Firewall Windows Defender s pokročilým zabezpečením na místním počítači.
  3. Vyberte Vlastnosti.
  4. V novém okně, které se otevře, vyberte kartu Veřejný profil.
  5. V části Nastavení vyberte Přizpůsobit.
  6. V okně Přizpůsobit nastavení veřejného profilu, které se otevře, zkontrolujte, jestli je možnost Slučování pravidel nastavená na Ne. Tím se zablokuje přístup k WSL.

Pokyny ke změně tohoto nastavení brány firewall najdete v části Konfigurace Hyper-V brány firewall.

WSL nemá žádné síťové připojení při zakazování protokolu IPv6

Pokud je protokol IPv6 zakázán pomocí hodnoty HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters (REG_DWORD) DisabledComponentsregistru, může selhat síťové připojení WSL. Přečtěte si pokyny ke konfiguraci protokolu IPv6 ve Windows pro pokročilé uživatele.

Pokud musí být protokol IPv6 v hostitelském systému zakázaný, doporučujeme k tomu použít PowerShell tak, že přímo odeberete vazby protokolu IPv6. Příklad: Disable-NetAdapterBinding -Name "<MyAdapter>" -ComponentID ms_tcpip[6].

WSL nemá po připojení k síti VPN žádné síťové připojení

Pokud po připojení k síti VPN ve Windows Bash ztratí připojení k síti, zkuste toto alternativní řešení z prostředí Bash. Toto alternativní řešení vám umožní ručně přepsat rozlišení DNS pomocí /etc/resolv.conf.

  1. Poznamenejte si server DNS sítě VPN od provedení:

    ipconfig.exe /all
    
  2. Vytvořte kopii existujícího resolv.confsouboru:

    sudo cp /etc/resolv.conf /etc/resolv.conf.bak
    
  3. Zrušit propojení aktuálního resolv.conf:

    sudo unlink /etc/resolv.conf
    
  4. Běh:

    sudo mv /etc/resolv.conf.bak /etc/resolv.conf
    
  5. Upravte /etc/wsl.conf a přidejte tento obsah do souboru. (Další informace o této konfiguraci najdete v pokročilá nastavení konfigurace)

    [network]
    generateResolvConf=false
    
  6. Otevřít /etc/resolv.conf a

    1. Odstraňte první řádek ze souboru, který obsahuje komentář popisující automatické generování.
    2. Přidejte položku DNS z (1) výše jako první položku v seznamu serverů DNS.
    3. Zavřete soubor.

Po odpojení sítě VPN budete muset vrátit provedené změny na /etc/resolv.conf. Uděláte to takto:

sudo mv /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

Problémy s WSL u klienta Global Secure Access

Globální klient zabezpečeného přístupu (/entra/global-secure-access/how-to-install-windows-client) může ovlivnit připojení ke službě Windows Subsystem for Linux (WSL), protože má funkci pro vrácení dočasné adresy při řešení názvu. Po navázání síťového připojení se adresa změní na skutečnou adresu. To může přerušit WSL, protože provoz WSL se předává pod velkou část háků klienta GSA.

Doporučujeme zakázat tunelové propojení DNS (dnsTunneling=false) nebo zakázat zrcadlový režim (networkingMode=nat).

Problémy se sítí VPN Cisco AnyConnect s WSL v režimu NAT

Síť VPN Cisco AnyConnect upravuje trasy způsobem, který brání tomu, aby překlad adres (NAT) fungoval. Existuje alternativní řešení specifické pro WSL 2: Viz Cisco AnyConnect Secure Mobility Client Administrator Guide, Release 4.10 – Řešení potíží s AnyConnect.

Problémy s připojením WSL k sítím VPN, když je zapnutý režim zrcadlení sítě

Zrcadlený síťový režim je v současné době experimentálním nastavením v konfiguraci WSL. Tradiční síťovou architekturu PŘEKLADU adres (NAT) WSL je možné aktualizovat na zcela nový síťový režim s názvem Zrcadlený síťový režim. Pokud je experimentální networkingMode nastavena na mirrored, síťová rozhraní, která máte ve Windows, se zrcadlí do Linuxu, aby se zlepšila kompatibilita. Další informace najdete v blogu příkazového řádku: aktualizace WSL ze září 2023.

Některé sítě VPN byly testovány a potvrzeny, že nejsou kompatibilní s WSL, včetně:

  • Bitdefender verze 26.0.2.1
  • OpenVPN verze 2.6.501
  • "Mcafee Safe Connect" Verze 2.16.1.124

Hlediska při používání autoProxy pro zrcadlení HttpProxy ve WSL

Zrcadlení proxy serveru HTTP/S lze nakonfigurovat pomocí nastavení autoProxy v experimentální části konfiguračního souboru WSL. Při použití tohoto nastavení si všimněte těchto aspektů:

  • PAC Proxy: WSL nakonfiguruje nastavení v Linuxu WSL_PAC_URL nastavením proměnné prostředí. Linux ve výchozím nastavení nepodporuje proxy servery PAC.
  • Interakce s WSLENV: Proměnné prostředí definované uživatelem mají přednost před těmi určenými touto funkcí.

Pokud je tato možnost povolená, platí pro nastavení proxy serveru v linuxových distribucích:

  • Proměnná prostředí Linuxu HTTP_PROXYje nastavená na jeden nebo více proxy serverů HTTP, které jsou nainstalované v konfiguraci proxy serveru HTTP systému Windows.
  • Proměnná HTTPS_PROXYprostředí Linuxu je nastavená na jeden nebo více proxy serverů HTTPS nainstalovaných v konfiguraci proxy serveru Windows HTTPS.
  • Proměnná prostředí Linuxu NO_PROXYje nastavená tak, aby obešla všechny proxy servery HTTP/S nalezené v cílech konfigurace Windows.
  • Každá proměnná prostředí s výjimkou WSL_PAC_URLje nastavena jak na malá, tak na velká písmena. Příklad: HTTP_PROXY a http_proxy.

Došlo k známému problému způsobenému konfigurací ZScaler, kdy ZScaler opakovaně povoluje a zakazuje konfigurace proxy serveru Windows, což vede k opakovanému zobrazení chyby "Na hostiteli byla zjištěna změna proxy serveru HTTP".

Další informace najdete v blogu příkazového řádku: aktualizace WSL ze září 2023.

Důležité informace o sítích s tunelovým propojením DNS

Pokud se WSL nemůže připojit k internetu, může to být proto, že volání DNS na hostitele s Windows je blokováno. Důvodem je to, že síťový paket pro DNS odesílaný virtuálním počítačem WSL na hostitele Windows je zablokovaný stávající konfigurací sítě. Tunelování DNS to řeší pomocí funkce virtualizace pro přímou komunikaci s Windows, což umožňuje překlad názvu DNS bez odeslání síťového paketu. Tato funkce by měla zlepšit kompatibilitu sítě a umožnit lepší připojení k internetu i v případě, že máte síť VPN, konkrétní nastavení brány firewall nebo jiné síťové konfigurace.

Tunelování DNS lze nakonfigurovat pomocí nastavení dnsTunneling v experimentální části konfiguračního souboru WSL. Při použití tohoto nastavení si všimněte těchto aspektů:

  • Pokud používáte SÍŤ VPN s WSL, zapněte tunelování DNS. Mnoho sítí VPN používá zásady NRPT, které se použijí jenom u dotazů DNS WSL, když je povolené tunelování DNS.
  • Soubor /etc/resolv.conf ve vaší linuxové distribuci má maximální omezení 3 serverů DNS, zatímco Systém Windows může používat více než 3 servery DNS. Pomocí tunelování DNS se toto omezení odebere – Linux teď může používat všechny servery DNS systému Windows.
  • WSL bude používat přípony DNS systému Windows v následujícím pořadí (podobně jako pořadí používané klientem DNS systému Windows):
    1. Globální přípony DNS
    2. Doplňkové přípony DNS
    3. Přípony DNS pro rozhraní
    4. Pokud je ve Windows povolené šifrování DNS (DoH, DoT), použije se šifrování na dotazy DNS z WSL. Pokud uživatelé chtějí povolit DoH, DoT v Linuxu, musí zakázat tunelování DNS.
  • Dotazy DNS z kontejnerů Dockeru spravovaných Docker Desktopem obcházejí tunelování DNS. Docker Desktop má svůj vlastní způsob (liší se od tunelování DNS) použití nastavení a zásad DNS hostitele na dotazy DNS z kontejnerů Dockeru.
  • Aby bylo možné úspěšně povolit tunelové propojení DNS, neměl by být možnost generateResolvConf v souboru wsl.conf zakázaná.
  • Pokud je povolené tunelování DNS, generateHosts možnost v souboru wsl.conf se ignoruje (soubor hostitelů DNS systému Windows se nezkopíruje v souboru Linux /etc/hosts). Zásady v souboru hostitelů Windows se použijí na dotazy DNS z Linuxu, aniž by se soubor zkopíroval v Linuxu.

Další informace najdete v blogu příkazového řádku: aktualizace WSL ze září 2023.

Problémy s řízením příchozího provozu, který je hostitelem Windows přesměrován do virtuálního počítače WSL.

Pokud používáte režim zrcadlení sítě (experimentální networkingMode nastavená na mirrored), nebudou do virtuálního počítače s Linuxem nikdy přesměrovány některé příchozí přenosy přijaté hostitelem Windows. Tento provoz je následující:

  • PORT UDP 68 (DHCP)
  • Port TCP 135 (rozlišení koncového bodu DCE)
  • Port TCP 1900 (UPnP)
  • Port TCP 2869 (SSDP)
  • Port TCP 5004 (RTP)
  • Port TCP 3702 (WSD)
  • Port TCP 5357 (WSD)
  • Port TCP 5358 (WSD)

WSL automaticky nakonfiguruje určitá nastavení sítě s Linuxem při použití zrcadlového síťového režimu. Všechny konfigurace uživatelů těchto nastavení při používání režimu zrcadlených sítí se nepodporují. Tady je seznam nastavení, které WSL nakonfiguruje:

Název nastavení Hodnota
https://sysctl-explorer.net/net/ipv4/accept_local/ Povoleno (1)
https://sysctl-explorer.net/net/ipv4/route_localnet/ Povoleno (1)
https://sysctl-explorer.net/net/ipv4/rp_filter/ Deaktivováno (0)
https://sysctl-explorer.net/net/ipv6/accept_ra/ Deaktivováno (0)
https://sysctl-explorer.net/net/ipv6/autoconf/ Deaktivováno (0)
https://sysctl-explorer.net/net/ipv6/use_tempaddr/ Deaktivováno (0)
režim_generování_adres Deaktivováno (0)
zakázat_ipv6 Deaktivováno (0)
https://sysctl-explorer.net/net/ipv4/arp_filter/ Povoleno (1)

Problémy s kontejnerem Dockeru ve WSL2 při spuštění ve výchozím oboru názvů sítě s povoleným režimem zrcadleného připojení k síti

Existuje známý problém, kdy se nepodaří vytvořit kontejnery Docker Desktopu s publikovanými porty (docker run –publish/–p). Tým WSL pracuje s týmem Docker Desktopu, aby tento problém vyřešil. Pokud chcete tento problém obejít, použijte obor názvů sítě hostitele v kontejneru Docker. Typ sítě nastavte pomocí --network host možnosti použité v docker run příkazu. Alternativním alternativním řešením je uvést publikované číslo portu v nastavení ignoredPorts experimentální části v konfiguračním souboru WSL.

Problémy s kontejnerem Dockeru při spuštění správce sítě

Existuje známý problém s kontejnery Dockeru, které mají spuštěnou službu Network Manager. Mezi příznaky patří selhání při pokusu o vytvoření připojení zpětné smyčky k hostiteli. Doporučuje se zastavit službu Správce sítě, aby byla správně nakonfigurovaná síť WSL.

sudo systemctl disable network-manager.service

Řešení názvů .local ve WSL

K překladu názvů hostitelů na IP adresy v rámci místní sítě bez nutnosti konvenčního serveru DNS se často používají názvy .local. Toho se dosahuje prostřednictvím protokolu mDNS (Multicast DNS), který spoléhá na multicastový provoz.

networkingMode nastaveno na NAT:

Tato funkce se v současné době nepodporuje, pokud je povolené tunelování DNS. Pokud chcete povolit rozlišení názvů .local, doporučujeme následující řešení:

  • Zakažte tunelování DNS.
  • Použijte zrcadlený síťový režim.

networkingMode nastaveno na Mirrored:

Poznámka: Abyste mohli mít níže uvedené funkce, musíte být v sestavení WSL 2.3.17 nebo vyšší.

Vzhledem k tomu, že zrcadlený režim podporuje provoz vícesměrového vysílání, lze k překladu názvů .local použít protokol mDNS (Multicast DNS). Linux musí být nakonfigurovaný tak, aby podporoval mDNS, protože to ve výchozím nastavení nedělá. Jedním ze způsobů, jak ho nakonfigurovat, je použít následující dva kroky:

  1. Nainstalujte balíček libnss-mdns.

    sudo apt-get install libnss-mdns
    

    *Balíček libnss-mdns je modul plug-in pro funkci GNU Name Service Switch (NSS) knihovny GNU C (glibc), která poskytuje překlad názvů hostitelů prostřednictvím DNS vícesměrového vysílání (mDNS). Tento balíček efektivně umožňuje běžným programům v systémech Unix/Linux řešit názvy v ad-hoc mDNS doméně .local.

  2. /etc/nsswitch.conf Nakonfigurujte soubor tak, aby povolil mdns_minimal nastavení v oddíluhosts. Příklad obsahu souboru:

    />cat /etc/nsswitch.conf
    # /etc/nsswitch.conf
    #
    # Example configuration of GNU Name Service Switch functionality.
    # If you have the `glibc-doc-reference' and `info' packages installed, try:
    # `info libc "Name Service Switch"' for information about this file.
    
    passwd:         compat systemd
    group:          compat systemd
    shadow:         compat
    gshadow:        files
    
    hosts:          files mdns_minimal [NOTFOUND=return] dns
    networks:       files
    
    protocols:      db files
    services:       db files
    ethers:         db files
    rpc:            db files
    
    netgroup:       nis
    

Přípony DNS ve WSL

V závislosti na konfiguracích v souboru .wslconfig bude mít WSL následující chování s příponami DNS:

Kdy networkingMode je nastavená hodnota NAT:

Případ 1: Ve výchozím nastavení není v Linuxu nakonfigurovaná žádná přípona DNS.

Případ 2: Pokud je povolené tunelování DNS (dnsTunneling je nastaveno na true .wslconfig) Všechny přípony DNS systému Windows jsou nakonfigurované v Linuxu, v search nastavení /etc/resolv.conf

Přípony se konfigurují v souboru /etc/resolv.conf v následujícím pořadí, podobně jako v pořadí, ve kterém klient DNS systému Windows zkouší přípony při překladu názvu: nejprve globální přípony DNS, pak doplňkové přípony DNS a přípony DNS pro jednotlivé rozhraní.

Pokud dojde ke změně přípon DNS systému Windows, projeví se tato změna automaticky v Linuxu.

Případ 3: Pokud je zakázané tunelování DNS a je zakázaný proxy server DNS služby SharedAccess (dnsTunneling a dnsProxy je nastaven na false hodnotu v souboru .wslconfig). V Linuxu je nakonfigurovaná jedna přípona DNS v nastavení domény /etc/resolv.conf.

Pokud dojde ke změně přípon DNS systému Windows, tato změna se v Linuxu neprojeví.

Jedna přípona DNS nakonfigurovaná v Linuxu se vybírá z přípon DNS pro jednotlivé rozhraní (globální a doplňkové přípony se ignorují).

Pokud systém Windows má více rozhraní, heuristika se používá k výběru jedné přípony DNS, která se nakonfiguruje v Linuxu. Pokud je například ve Windows rozhraní VPN, je přípona zvolena z tohoto rozhraní. Pokud není k dispozici žádné rozhraní VPN, je přípona zvolena z rozhraní, které s největší pravděpodobností dává připojení k internetu.

Kdy networkingMode je nastavená hodnota Mirrored:

Všechny přípony DNS systému Windows se konfigurují v Linuxu search , v nastavení /etc/resolv.conf.

Přípony se konfigurují v souboru /etc/resolv.conf ve stejném pořadí jako případ 2) z NAT režimu.

Pokud dojde ke změně přípon DNS systému Windows, projeví se tato změna automaticky v Linuxu.

Poznámka

doplňkové přípony DNS je možné nakonfigurovat ve Windows pomocí.

Funkce SetInterfaceDnsSettings (netioapi.h) s příznakem DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST nastaveným v parametruSettings.

Řešení potíží s DNS ve WSL

Výchozí konfigurace DNS, když WSL spustí kontejner v režimu NAT, je mít zařízení NAT na hostiteli Windows sloužit jako "server" DNS pro kontejner WSL. Když se dotazy DNS odesílají z kontejneru WSL na toto zařízení NAT na hostiteli Windows, paket DNS se předá ze zařízení NAT do služby sdíleného přístupu na hostiteli; odpověď se odešle v opačném směru zpět do kontejneru WSL. Tento proces předávání paketů do sdíleného přístupu vyžaduje pravidlo brány firewall, které povolí příchozí paket DNS, který je vytvořen službou HNS, když WSL původně požádá HNS o vytvoření virtuální sítě NAT pro svůj kontejner WSL.

Vzhledem k tomuto překladu adres (NAT) – návrhu sdíleného přístupu existuje několik známých konfigurací, které můžou přerušit překlad názvů z WSL.

  1. Podnik může nabízet zásady, které neumožňují místně definovaná pravidla brány firewall, což povoluje jenom pravidla definovaná podnikovými zásadami.

    Když ho nastaví organizace, pravidlo brány firewall vytvořené službou HNS se ignoruje, protože se jedná o místně definované pravidlo.

    Aby tato konfigurace fungovala, musí organizace vytvořit pravidlo brány firewall, které povolí připojení UDP portu 53 ke službě sdíleného přístupu, nebo je možné nastavit WSL tak, aby používalo tunelování DNS.

    Spuštěním následujícího příkazu zjistíte, jestli je nakonfigurovaná tak, aby nepovolovala místně definovaná pravidla brány firewall. Všimněte si, že se zobrazí nastavení všech 3 profilů: Doména, Privátní a Veřejná. Pokud je nastavená v libovolném profilu, pakety se zablokují, pokud je k sadě WSL vNIC přiřazený tento profil (výchozí hodnota je Public). Jedná se pouze o fragment prvního profilu brány firewall, který se vrátí v PowerShellu:

    PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
    Name                    : Domain
    Enabled                 : True
    DefaultInboundAction    : Block
    DefaultOutboundAction   : Allow
    AllowInboundRules       : True
    AllowLocalFirewallRules : False
    ...
    

    AllowLocalFirewallRules: False znamená, že místně definovaná pravidla brány firewall, jako ta službou HNS, nebudou uplatněna ani použita.

  2. Podnik může odesílat zásady skupiny a nastavení zásad MDM, která blokují všechna příchozí pravidla.

    Toto nastavení přepíše všechna pravidla brány firewall Allow-Inbound. Toto nastavení tedy zablokuje pravidlo brány firewall UDP vytvořené službou HNS, a tím zabrání službě WSL v rozlišení názvů.

    Aby tato konfigurace fungovala, musí být WSL nastavena tak, aby používala tunelování DNS. Toto nastavení vždy zablokuje NAT DNS proxy.

    Ze Zásad Skupiny:

    Konfigurace počítače \ Šablony pro správu \ Síť \ Síťová připojení \ Windows Defender Firewall \ Profil domény | Standardní profil

    Firewall v programu Windows Defender: Nepovolit výjimky – Povolit

    ze zásad MDM:

    ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/Shielded

    ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Ochráněno

    ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Shielded

    Můžete zjistit, jestli je nakonfigurovaná tak, aby nepovolovala žádná příchozí pravidla brány firewall spuštěním následujícího postupu (viz výše uvedené upozornění na profily brány firewall). Jedná se pouze o fragment prvního profilu brány firewall, který se vrátí v PowerShellu:

    
    PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
    Name                  : Domain
    Enabled               : True
    DefaultInboundAction  : Block
    DefaultOutboundAction : Allow
    AllowInboundRules     : False
    ...
    

    AllowInboundRules: False znamená, že nebudou použita žádná příchozí pravidla brány firewall.

  3. Uživatel prochází aplikacemi pro nastavení zabezpečení Systému Windows a zkontroluje, jestli se v ovládacím prvku "Blokuje všechna příchozí připojení, včetně těch v seznamu povolených aplikací".

    Systém Windows podporuje výslovný souhlas uživatele pro stejné nastavení, na které může organizace odkazovat v #2 výše. Uživatelé mohou otevřít stránku nastavení Zabezpečení systému Windows, vybere možnost Brána firewall a ochrana sítě, vybere profil brány firewall, který chtějí nakonfigurovat (doména, soukromá nebo veřejná) a v části Příchozí připojení zaškrtněte políčko "Blokuje všechna příchozí připojení, včetně těch v seznamu povolených aplikací".

    Pokud je nastavena pro veřejný profil (toto je výchozí profil pro WSL vNIC), pravidlo brány firewall vytvořené HNS, které povoluje pakety UDP pro sdílený přístup, bude zablokováno.

    Aby konfigurace proxy serveru DNS překladu adres (NAT) fungovala z WSL, musí být tato možnost nezaškrtnutá, nebo WSL je možné nastavit tak, aby používala tunelování DNS.

  4. Pravidlo brány firewall HNS, které povoluje sdílený přístup paketů DNS, může být neplatné a odkazuje na předchozí identifikátor rozhraní WSL.

    Jedná se o chybu v rámci HNS, která byla opravena v nejnovější verzi Windows 11. Pokud k tomu dojde v dřívějších verzích, není to snadné zjistitelné, ale má jednoduché řešení:

    • Zastavení WSL

      wsl.exe –shutdown
      
    • Odstraňte staré pravidlo brány firewall HNS. Tento příkaz PowerShellu by měl ve většině případů fungovat:

      Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
      
    • Odeberte všechny koncové body HNS. Poznámka: Pokud se HNS používá ke správě jiných kontejnerů, jako je MDAG nebo Windows Sandbox, měly by se také zastavit.

      hnsdiag.exe delete all
      
    • Restartování nebo rebootování služby HNS

      Restart-Service hns
      
    • Po restartování WSL služba HNS vytvoří nová pravidla brány firewall, která správně cílí na rozhraní WSL.

Řešení potíží se síťovým přístupem ve Windows

Pokud nemáte přístup k síti, může to být způsobeno chybnou konfigurací. Zkontrolujte, jestli je spuštěný ovladač FSE:

Get-Service FSE

Pokud se nezobrazuje spuštěná služba FSE, zkontrolujte, jestli PortTrackerEnabledMode se hodnota registru ukončí pod tímto klíčem registru:

Get-ItemProperty HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters

Pokud služba FSE není spuštěná nebo nainstalovaná a PortTrackerEnabledMode existuje, odstraňte tuto hodnotu registru a restartujte ji.

Ruční způsob odstranění fantomových adaptérů

adaptéry Ghost, nebo fantomová zařízení Plug and Play (PnP), odkazují na hardwarové komponenty, které se zobrazují ve vašem systému, ale nejsou fyzicky připojené. Tato "duchová" zařízení můžou způsobit nejasnosti a nepotřebné prvky v nastavení systému. Pokud se při spuštění WSL na virtuálním počítači zobrazí neexistující adaptéry, vyhledejte a odstraňte tato fantomická PnP zařízení podle těchto manuálních kroků. Microsoft pracuje na automatizovaném řešení, které nebude vyžadovat ruční zásah. Další informace budou brzy k dispozici.

  1. Otevření Správce zařízení

  2. Zobrazit > Zobrazení skrytých zařízení

    snímek obrazovky Správce zařízení s nabídkou skrytých zařízení

  3. Otevření síťových adaptérů

    snímek obrazovky se seznamem síťových adaptérů

  4. Klikněte pravým tlačítkem myši na ghosted síťový adaptér a vyberte Odinstalovat zařízení.

    snímek obrazovky s kliknutím pravým tlačítkem na fantomový pnp ze seznamu sítě a výběrem možnosti odinstalovat zařízení

Spuštění WSL nebo instalace distribuce vrátí kód chyby.

Postupujte podle pokynů k shromažďování protokolů WSL v úložišti WSL na GitHubu, abyste shromáždili podrobné protokoly a nahlásili problém na našem GitHubu.

Aktualizace WSL

Existují dvě komponenty subsystému Windows pro Linux, které mohou vyžadovat aktualizaci.

  1. Pokud chcete aktualizovat subsystém Windows pro samotný Linux, použijte následující příkaz.

    wsl.exe --update
    
  2. Pokud chcete aktualizovat konkrétní binární soubory uživatelů distribuce Linuxu, použijte následující příkaz v distribuci Linuxu, kterou chcete aktualizovat.

    apt-get update | apt-get upgrade
    

Chyby při upgradu apt-get

Některé balíčky používají funkce, které jsme ještě neimplementovali. udevse například zatím nepodporuje a způsobuje několik chyb apt-get upgrade.

Pokud chcete vyřešit problémy související s udev, postupujte následovně:

  1. Napište následující do /usr/sbin/policy-rc.d a uložte změny.

    #!/bin/sh
    exit 101
    
  2. Přidání oprávnění ke spuštění do /usr/sbin/policy-rc.d:

    chmod +x /usr/sbin/policy-rc.d
    
  3. Spusťte následující příkazy:

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

Chyba: 0x80040306 při instalaci

To souvisí s faktem, že nepodporujeme starší konzolu. Vypnutí starší konzoly:

  1. Otevřít cmd.exe
  2. Klikněte pravým tlačítkem myši na záhlaví –> Vlastnosti –> Zrušte zaškrtnutí možnosti Použít starší konzolu
  3. Klikněte na OK.

Chyba: 0x80040154 po aktualizaci Windows

Funkce Subsystému Windows pro Linux může být během aktualizace Windows zakázaná. Pokud k tomu dojde, musí být funkce Systému Windows znovu povolena. Pokyny k povolení subsystému Windows pro Linux najdete v příručce k ruční instalaci.

Změna jazyka zobrazení

Instalace WSL se pokusí automaticky změnit národní prostředí Ubuntu tak, aby odpovídalo národnímu prostředí vaší instalace systému Windows. Pokud toto chování nechcete, můžete po dokončení instalace změnit národní prostředí Ubuntu spuštěním tohoto příkazu. Aby se tato změna projevila, budete muset znovu spustit bash.exe.

Následující příklad změní jazykové prostředí na en-US:

sudo update-locale LANG=en_US.UTF8

Problémy s instalací po obnovení systému Windows

  1. Odstraňte složku %SystemRoot%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.

    Výstraha

    Tuto akci neproveďte, pokud je volitelná funkce plně nainstalovaná a funkční.

  2. Povolte volitelnou funkci WSL (pokud ještě není)

  3. Opětovné spuštění

  4. lxrun /uninstall /full

  5. Nainstalujte bash

Ve WSL není přístup k internetu.

Někteří uživatelé nahlásili problémy s některými aplikacemi brány firewall, které ve WSL blokují přístup k internetu. Hlášené brány firewall jsou:

  1. Kaspersky
  2. PRŮMĚR
  3. Avast
  4. Symantec Endpoint Protection

V některých případech vypnutí firewallu umožňuje přístup. V některých případech se zdá, že samotná instalace brány firewall blokuje přístup.

Pokud používáte bránu firewall v programu Microsoft Defender, zrušení zaškrtnutí políčka "Blokuje všechna příchozí připojení, včetně těch, které jsou v seznamu povolených aplikací" umožní přístup.

Chyba odepření oprávnění při použití příkazu ping

Pro Windows Anniversary Update verze 1607 se ke spuštění ve WSL vyžadují ping ve Windows. Pokud chcete spustit , spusťte pingBash v Ubuntu ve Windows jako správce nebo spusťte bash.exe příkaz z příkazového řádku PowerShellu s oprávněními správce.

Pro novější verze Windows build 14926+už nejsou vyžadována oprávnění správce.

Bash je zablokovaná

Pokud při práci s Bashem zjistíte, že je zamrzlý (nebo zablokovaný) a nereaguje na vstupy, pomozte nám diagnostikovat problém shromážděním a nahlášením výpisu paměti. Mějte na paměti, že tyto kroky způsobí chybové ukončení systému. Tuto akci neprovádějte, pokud se s tím necítíte dobře, nebo si před tím uložte práci.

Shromažďování výpisu paměti:

  1. Změňte typ výpisu paměti na "dokončení výpisu paměti". Při změně typu výpisu paměti si poznamenejte aktuální typ.

  2. Pomocí kroků nakonfigurujte chybové ukončení pomocí ovládacího prvku klávesnice.

  3. Reprodukovat zavěšení nebo zablokování.

  4. Způsobte havárii systému pomocí klávesové sekvence z (2).

  5. Systém se chybově ukončí a shromáždí výpis paměti.

  6. Jakmile se systém restartuje, nahlašte memory.dmp zprávu secure@microsoft.comna . Výchozí umístění souboru s výpisem paměti je %SystemRoot%\memory.dmp nebo C:\Windows\memory.dmp je-li C: systémová jednotka. V e-mailu uveďte, že výpis je určen pro tým WSL nebo Bash na Windows.

  7. Obnovte typ výpisu paměti do původního nastavení.

Zkontrolujte číslo sestavení.

Pokud chcete najít architekturu počítače a číslo buildu Windows, otevřete Nastavení>systému>o systému

Vyhledejte pole sestavení operačního systému a typ systému . snímek obrazovky s poli Typu sestavení a systému

Pokud chcete najít číslo buildu Windows Serveru, spusťte v PowerShellu následující příkaz:

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

Potvrzení povolení WSL

Spuštěním následujícího příkazu v okně PowerShellu se zvýšenými oprávněními můžete ověřit, že je subsystém Windows pro Linux povolený:

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

Problémy s připojením OpenSSH-Server

Pokus o připojení serveru SSH se nezdařil s následující chybou: Připojení se ukončilo 127.0.0.1 port 22.

  1. Ujistěte se, že je server OpenSSH spuštěný:

    sudo service ssh status
    

    a postupovali jste podle tohoto kurzu: https://ubuntu.com/server/docs/service-openssh

  2. Zastavte službu sshd a spusťte sshd v režimu ladění:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Zkontrolujte spouštěcí protokoly a ujistěte se, že jsou k dispozici klíče hostitele a nezobrazují se zprávy protokolu, například:

    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
    

Pokud se tyto zprávy zobrazí a v /etc/ssh/chybí klíče, budete muset klíče znovu vygenerovat nebo jednoduše odstranit&a nainstalovat openssh-server.

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

"Odkazované sestavení nebylo nalezeno." Při povolování volitelné funkce WSL

Tato chyba souvisí s chybnou instalací. Pokud chcete tento problém vyřešit, proveďte následující kroky:

  • Pokud používáte příkaz povolit funkci WSL z PowerShellu, zkuste místo toho použít grafické uživatelské rozhraní, a to tak, že otevřete nabídku Start, vyhledejte "Zapnout nebo vypnout funkce Windows" a pak v seznamu vyberte Subsystém Windows pro Linux, který nainstaluje volitelnou komponentu.

  • Aktualizujte verzi Windows tak, že přejdete na Nastavení, Aktualizace a kliknete na Vyhledat aktualizace.

  • Pokud obě tyto služby selžou a potřebujete získat přístup ke službě WSL, zvažte místní upgrade tak, že přeinstalujete Windows pomocí instalačního média a vyberete Možnost Zachovat vše, abyste zajistili zachování vašich aplikací a souborů. Pokyny k tomu najdete na stránce Přeinstalovat Windows 10 .

Pokud se zobrazí tato chyba:

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

Tento problém vyřešíte tak, že do souboru /etc/wsl.conf připojíte následující kód:

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

Upozorňujeme, že přidání tohoto příkazu bude obsahovat metadata a upravovat oprávnění k souborům Windows, které jsou zobrazeny z WSL. Další informace najdete v oprávnění systému souborů.

Nejde vzdáleně používat WSL pomocí OpenSSH ve Windows

Pokud používáte openssh-server ve Windows a pokoušíte se vzdáleně získat přístup k WSL, zobrazí se mnoho z těchto chyb: K souboru nemá systém přístup.

Jedná se o známý problémpři použití verze WSL pro Store. Tento problém můžete dnes obejít pomocí WSL 1 nebo pomocí verze WSL v systému Windows. Další informace najdete v tématu WSL v Microsoft Storu .

Spuštění příkazů Systému Windows selže v distribuci

Některé distribuce dostupné v Microsoft Storu zatím nejsou plně kompatibilní se spouštěním příkazů systému Windows. Pokud se zobrazí chyba -bash: powershell.exe: příkaz nenalezena nebo powershell.exe /c start . jakýkoli jiný příkaz systému Windows, můžete ho vyřešit následujícím postupem:

  1. V distribuci WSL spusťte echo $PATH. Pokud neobsahuje: /mnt/c/Windows/system32 něco mění standardní proměnnou PATH.
  2. Zkontrolujte nastavení profilu pomocí cat /etc/profile. Pokud obsahuje přiřazení proměnné PATH, upravte soubor tak, aby byl blok přiřazení PATH okomentován znakem #.
  3. Zkontrolujte, jestli je soubor wsl.conf k dispozici cat /etc/wsl.conf, a ujistěte se, že neobsahuje appendWindowsPath=false, jinak ho zakomentujte.
  4. Restartujte distribuci zadáním wsl -t <Distro> názvu distribuce nebo spuštěním wsl --shutdown buď v PowerShellu.

Po instalaci WSL 2 nejde spustit

Víme o problému ovlivňujícím uživatele, kteří se po instalaci WSL 2 nemůžou spustit. Zatímco plně diagnostikujeme tento problém, uživatelé oznámili, že změna velikosti vyrovnávací paměti nebo instalace správných ovladačů může pomoci tento problém vyřešit. Pokud chcete zobrazit nejnovější aktualizace tohoto problému, projděte si tento problém na GitHubu.

Chyby WSL 2 při zakázání ICS

Sdílení připojení k internetu (ICS) je požadovaná komponenta WSL 2. Služba ICS je používána službou Host Network Service (HNS) k vytvoření základní virtuální sítě, kterou WSL 2 využívá pro sdílení připojení k serveru NAT, DNS, DHCP a hostiteli.

Zakázání služby ICS (SharedAccess) nebo zakázání ICS prostřednictvím zásad skupiny zabrání vytvoření sítě WSL HNS. Výsledkem budou chyby při vytváření nové image WSL verze 2 a následující chyba při pokusu o převod image verze 1 na verzi 2: V mapovači koncových bodů nejsou k dispozici žádné další koncové body.

Systémy, které vyžadují WSL 2, by měly ponechat službu ICS (SharedAccess) v jeho výchozím stavu spuštění, ručně (Spuštění při události), a všechny zásady, které ICS zakazují, by měly být přepsány nebo odstraněny. Ačkoli při zakázání služby ICS se přeruší WSL 2 a nedoporučujeme zakázat ICS, části ICS lze zakázat pomocí těchto pokynů

Použití starších verzí Windows a WSL

Pokud používáte starší verzi Windows a WSL, jako je Windows 10 Creators Update (říjen 2017, build 16299) nebo Anniversary Update (srpen 2016, build 14393), existuje několik rozdílů. Doporučujeme, abyste aktualizovat na nejnovější verzi windows, ale pokud to není možné, uvádíme některé z níže uvedených rozdílů.

Rozdíly příkazů interoperability:

  • bash.exe byla nahrazena wsl.exe. Příkazy Pro Linux se dají spouštět z PowerShellu, ale v dřívějších verzích Windows možná budete muset tento příkaz použít bash . Příklad: C:\temp> bash -c "ls -la". Příkazy WSL předané do bash -c se předávají procesu WSL beze změny. Cesty k souborům musí být zadány ve formátu WSL a je třeba zabezpečit příslušné znaky. Například: C:\temp> bash -c "ls -la /proc/cpuinfo" nebo C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Pokud chcete zjistit, jaké příkazy jsou k dispozici pro konkrétní distribuci, spusťte [distro.exe] /?. Například s Ubuntu: C:\> ubuntu.exe /?.
  • Cesta systému Windows je zahrnuta ve WSL $PATH.
  • Při volání nástroje Systému Windows z distribuce WSL ve starší verzi Windows 10 budete muset zadat cestu k adresáři. Pokud chcete například volat aplikaci Windows Notepad z příkazového řádku WSL, zadejte: /mnt/c/Windows/System32/notepad.exe
  • Pokud chcete změnit výchozího uživatele na root použít tento příkaz v PowerShellu: C:\> lxrun /setdefaultuser root a pak spusťte Bash.exe pro přihlášení: C:\> bash.exe. Resetujte heslo pomocí příkazu heslo distribuce: $ passwd username a pak zavřete příkazový řádek Linuxu: $ exit. Z příkazového řádku Windows nebo PowerShellu resetujte výchozího uživatele zpět na normální uživatelský účet Linuxu: C:\> lxrun.exe /setdefaultuser username.

Odinstalovat původní verzi WSL

Pokud jste původně nainstalovali WSL na verzi Windows 10 před aktualizací Creators (říjen 2017, build 16299), doporučujeme migrovat všechny potřebné soubory, data atd. ze starší linuxové distribuce, kterou jste nainstalovali, do novější distribuce nainstalované přes Microsoft Store. Pokud chcete ze svého počítače odebrat starší verzi distribuce, spusťte z příkazového řádku nebo instance PowerShellu následující příkaz: wsl --unregister Legacy. Můžete také ručně odebrat starší starší distribuci odstraněním složky %LocalAppData%\lxss\ (a veškerého obsahu) pomocí Průzkumníka souborů Windows nebo PowerShellu: Remove-Item -Recurse $env:localappdata/lxss/.

Kód chyby 0x8000FFFF neočekávané selhání

Tento kód chyby obvykle znamená, že došlo k neočekávanému nebo "katastrofickému" selhání během operací systému při pokusu o instalaci nebo použití distrubutionu Linuxu (například Ubuntu) s WSL. K tomuto selhání může dojít z mnoha důvodů. Začněte tím, že zkontrolujete následující:

  • Jedná se o problém s oprávněními? Zkontrolujte, že jste přihlášeni jako očekávaný uživatel na příkazovém řádku a máte potřebná oprávnění správce při instalaci distribuce Linuxu s WSL. (Kliknutím pravým tlačítkem myši na ikonu terminálu nebo hlavního panelu příkazového řádku vyberte Spustit jako správce.)
  • Aktualizovali jste WSL na nejnovější verzi? Pomocí příkazu: wsl --update Aktualizujte na nejnovější verzi. Můžete také chtít aktualizovat na nejnovější verzi Windows.
  • Ujistěte se, že wsl --install příkaz používáte správně, a specifikujte distribuci Linuxu, kterou chcete nainstalovat.
  • Zkuste vypnout a restartovat WSL pomocí příkazu: wsl --shutdown.
  • Pokud používáte Windows Server, ujistěte se, že je vaše verze aktuální, a postupujte podle průvodce instalací Windows Serveru.
  • Pokud máte podezření, že to může souviset s chybějícími nebo poškozenými systémovými soubory, můžete z příkazového řádku se zvýšenými oprávněními (Spustit jako správce) kontrolovat a opravovat systémové soubory nebo opravit bitovou kopii operačního systému Windows. Chcete-li vyhledat a opravit poškozené nebo chybějící systémové soubory systému Windows, použijte příkaz: SFC /SCANNOW. Chcete-li opravit samotnou image systému Windows, použijte příkaz: DISM /Online /Cleanup-Image /RestoreHealth.
  • Viz související problém s úložištěm produktů WSL 9420.