Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 verbuild 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ímcat /proc/versionv 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 obsahu

- Ve Windows 11 otevřete Nastavení –>Systém –>Úložiště –>Upřesnit nastavení úložiště –>Kde se ukládá nový obsah

- Subsystém Windows pro Linux běží jenom na systémové jednotce (obvykle se jedná o jednotku
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 2Ujistě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-versionfungovat.
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_79rhkp1fndgscZkontrolujte vlákno GitHubu na webu WSL #4103, kde se tento problém sleduje, a vyhledejte aktualizované informace.
- 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:
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.exez PowerShell Corenebo z příkazového řádku.
- 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
Chyba: Subsystém Windows pro Linux nemá nainstalované distribuce.
- Pokud se zobrazí tato chyba po instalaci distribucí WSL:
- Než ho vyvoláte z příkazového řádku, spusťte distribuci alespoň jednou.
- 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.
- 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ů:
Stále jste ve staré verzi Windows, která nepodporuje WSL 2. Viz krok 2 – Kontrola požadavků na spuštění WSL 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.
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.
- Pokud ve složce chybí balíček jádra Linuxu
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.
Kontrola požadavků na systém Hyper-V
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 $truePostupujte 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.
Po povolení volitelné komponentyVirtual Machine Platform restartujte počítač.
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 hypervisorlaunchtypePokud 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 AutoPokud 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é.
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 
- Otevřete "Windows Defender Firewall s pokročilým zabezpečením" (to se liší od "Windows Defender Firewall" v Ovládacích panelech)
- 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.
- Vyberte Vlastnosti.
- V novém okně, které se otevře, vyberte kartu Veřejný profil.
- V části Nastavení vyberte Přizpůsobit.
- 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.
Poznamenejte si server DNS sítě VPN od provedení:
ipconfig.exe /allVytvořte kopii existujícího
resolv.confsouboru:sudo cp /etc/resolv.conf /etc/resolv.conf.bakZrušit propojení aktuálního
resolv.conf:sudo unlink /etc/resolv.confBěh:
sudo mv /etc/resolv.conf.bak /etc/resolv.confUpravte
/etc/wsl.confa přidejte tento obsah do souboru. (Další informace o této konfiguraci najdete v pokročilá nastavení konfigurace)[network] generateResolvConf=falseOtevřít
/etc/resolv.confa- Odstraňte první řádek ze souboru, který obsahuje komentář popisující automatické generování.
- Přidejte položku DNS z (1) výše jako první položku v seznamu serverů DNS.
- 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_URLnastavení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_PROXYahttp_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.confve 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):
- Globální přípony DNS
- Doplňkové přípony DNS
- Přípony DNS pro rozhraní
- 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,
generateHostsmož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:
Nainstalujte balíček
libnss-mdns.sudo apt-get install libnss-mdns*Balíček
libnss-mdnsje 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./etc/nsswitch.confNakonfigurujte soubor tak, aby povolilmdns_minimalnastavení 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.
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: Falseznamená, že místně definovaná pravidla brány firewall, jako ta službou HNS, nebudou uplatněna ani použita.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: Falseznamená, že nebudou použita žádná příchozí pravidla brány firewall.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.
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 –shutdownOdstraň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-NetFirewallRuleOdeberte 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 allRestartování nebo rebootování služby HNS
Restart-Service hnsPo 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.
Otevření Správce zařízení
Zobrazit > Zobrazení skrytých zařízení
Otevření síťových adaptérů
Klikněte pravým tlačítkem myši na ghosted síťový adaptér a vyberte 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.
Pokud chcete aktualizovat subsystém Windows pro samotný Linux, použijte následující příkaz.
wsl.exe --updatePokud 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ě:
Napište následující do
/usr/sbin/policy-rc.da uložte změny.#!/bin/sh exit 101Přidání oprávnění ke spuštění do
/usr/sbin/policy-rc.d:chmod +x /usr/sbin/policy-rc.dSpusť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:
- Otevřít cmd.exe
- Klikněte pravým tlačítkem myši na záhlaví –> Vlastnosti –> Zrušte zaškrtnutí možnosti Použít starší konzolu
- 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
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í.
Povolte volitelnou funkci WSL (pokud ještě není)
Opětovné spuštění
lxrun /uninstall /full
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:
- Kaspersky
- PRŮMĚR
- Avast
- 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:
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.
Pomocí kroků nakonfigurujte chybové ukončení pomocí ovládacího prvku klávesnice.
Reprodukovat zavěšení nebo zablokování.
Způsobte havárii systému pomocí klávesové sekvence z (2).
Systém se chybově ukončí a shromáždí výpis paměti.
Jakmile se systém restartuje, nahlašte
memory.dmpzprávu secure@microsoft.comna . Výchozí umístění souboru s výpisem paměti je%SystemRoot%\memory.dmpneboC:\Windows\memory.dmpje-liC:systémová jednotka. V e-mailu uveďte, že výpis je určen pro tým WSL nebo Bash na Windows.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 .
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.
Ujistěte se, že je server OpenSSH spuštěný:
sudo service ssh statusa postupovali jste podle tohoto kurzu: https://ubuntu.com/server/docs/service-openssh
Zastavte službu sshd a spusťte sshd v režimu ladění:
sudo service ssh stop sudo /usr/sbin/sshd -dZkontrolujte 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 .
Opravit chyby oprávnění související s protokolem SSH
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:
- V distribuci WSL spusťte
echo $PATH. Pokud neobsahuje:/mnt/c/Windows/system32něco mění standardní proměnnou PATH. - 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 #. - Zkontrolujte, jestli je soubor wsl.conf k dispozici
cat /etc/wsl.conf, a ujistěte se, že neobsahujeappendWindowsPath=false, jinak ho zakomentujte. - Restartujte distribuci zadáním
wsl -t <Distro>názvu distribuce nebo spuštěnímwsl --shutdownbuď 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.exebyla nahrazenawsl.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žítbash. Příklad:C:\temp> bash -c "ls -la". Příkazy WSL předané dobash -cse 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"neboC:\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
rootpoužít tento příkaz v PowerShellu:C:\> lxrun /setdefaultuser roota pak spusťte Bash.exe pro přihlášení:C:\> bash.exe. Resetujte heslo pomocí příkazu heslo distribuce:$ passwd usernamea 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 --updateAktualizujte na nejnovější verzi. Můžete také chtít aktualizovat na nejnovější verzi Windows. - Ujistěte se, že
wsl --installpří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.
Windows Subsystem for Linux