Obecné
Co je subsystém Windows pro Linux (WSL)?
Subsystém Windows pro Linux (WSL) je funkce operačního systému Windows, která umožňuje spouštět linuxový systém souborů spolu s nástroji příkazového řádku Linuxu a aplikacemi grafického uživatelského rozhraní přímo ve Windows společně s tradičními desktopovými a aplikacemi pro Windows.
Další podrobnosti najdete na stránce s informacemi o produktu.
Pro koho je WSL určeno?
Jedná se především o nástroj pro vývojáře, zejména webové vývojáře, ty, kteří pracují na opensourcových projektech nebo nasazují do serverových prostředí Linuxu. WSL je určený pro každého, kdo má rád Bash, běžné linuxové nástroje (sed, awkatd.) a linuxové architektury (Ruby, Python atd.), ale má také rád použití nástrojů pro produktivitu Windows.
Co můžu dělat s WSL?
WSL umožňuje spouštět Linux v prostředí Bash s výběrem distribuce (Ubuntu, Debian, OpenSUSE, Kali, Alpine atd.). Pomocí Bash můžete spouštět nástroje a aplikace příkazového řádku pro Linux. Zadejte a stiskněte enter. Zobrazí se například lsb_release -a podrobnosti o distribuci Linuxu, která je aktuálně spuštěná:
K souborovému systému místního počítače můžete přistupovat také z prostředí linuxového shellu Bash – místní jednotky najdete připojené ve složce /mnt. Například je vaše jednotka C: připojena v /mnt/c:
Mohli byste popsat typický vývojový pracovní postup, který zahrnuje WSL?
WSL je určeno vývojářům a má sloužit jako součást interního vývojového cyklu. Řekněme, že Sam vytváří kanál CI/CD (kontinuální integrace a průběžné doručování) a před nasazením do cloudu ho chce nejprve otestovat na místním počítači (přenosném počítači). Sam může povolit WSL (& WSL 2 ke zlepšení rychlosti a výkonu) a pak použít originální linuxovou instanci Ubuntu místně (na přenosném počítači) s jakýmkoli příkazy a nástroji Bash, které preferují. Jakmile je vývojový pipeline místně ověřen, může Sam tento CI/CD pipeline nasadit do cloudu (tj. Azure) tak, že z něj vytvoří kontejner Docker a nahraje jej do cloudové instance, kde běží na produkčně připraveném virtuálním počítači s Ubuntu.
Co je Bash?
Bash je oblíbené textové prostředí a jazyk příkazového řádku. Jedná se o výchozí prostředí zahrnuté v Ubuntu a dalších distribucích Linuxu. Uživatelé zadává příkazy do prostředí, aby mohli spouštět skripty nebo spouštět příkazy a nástroje pro provádění mnoha úloh.
Jak to funguje?
Podívejte se na tento článek na blogu příkazového řádku Windows: Podrobné informace o tom, jak WSL umožňuje systému Windows přístup k linuxovým souborům , který podrobně popisuje základní technologii.
Proč bych ve virtuálním počítači místo Linuxu používal WSL?
WSL vyžaduje méně prostředků (procesor, paměť a úložiště) než celý virtuální počítač. WSL také umožňuje spouštět linuxové nástroje a aplikace příkazového řádku spolu s příkazovým řádkem Windows, desktopovými a storemi a přistupovat k souborům Windows z Linuxu. To vám umožní používat aplikace pro Windows a linuxové nástroje příkazového řádku ve stejné sadě souborů, pokud chcete.
Proč bych používal(a) například Ruby v Linuxu místo ve Windows?
Některé multiplatformní nástroje byly vytvořeny za předpokladu, že se prostředí, ve kterém běží, chová jako Linux. Některé nástroje například předpokládají, že mají přístup k velmi dlouhým cestám k souborům nebo že existují konkrétní soubory nebo složky. To často způsobuje problémy ve Windows, které se často chovají odlišně od Linuxu.
Mnoho jazyků, jako je Ruby a Node.js, se často přeportují a skvěle běží ve Windows. Ne všechny vlastníky knihovny Ruby Gem nebo node/NPM ale portují své knihovny pro podporu Windows a mnoho z nich má závislosti specifické pro Linux. To může často vést k tomu, že systémy vytvořené pomocí takových nástrojů a knihoven trpí chybami sestavení a někdy i nežádoucím chováním modulu runtime ve Windows.
Jedná se jen o některé problémy, které způsobily, že mnoho lidí požádalo Microsoft o vylepšení nástrojů příkazového řádku windows a co nás vedlo k partnerství s Canonical, aby nativní nástroje příkazového řádku Bash a Linux mohly běžet ve Windows.
Co to znamená pro PowerShell?
Při práci s projekty OSS existuje celá řada scénářů, ve kterých je nesmírně užitečné převést do prostředí Bash z příkazového řádku PowerShellu. Podpora Bash je doplňková a posiluje hodnotu příkazového řádku ve Windows, což umožňuje PowerShellu a komunitě PowerShellu využívat další oblíbené technologie.
Přečtěte si další informace o blogu týmu PowerShellu – Bash pro Windows: Proč je to úžasné a co to znamená pro PowerShell.
Jaké procesory WSL podporuje?
WSL podporuje procesory x64 a Arm64.
Jak získám přístup k disku C:?
Přípojné body pro pevné disky na místním počítači se automaticky vytvoří a poskytují snadný přístup k systému souborů Windows.
/mnt/<písmeno>jednotky/
Příklad použití by byl cd /mnt/c pro přístup c:\
Jak nastavím Správce přihlašovacích údajů Gitu? (Jak ve WSL používám oprávnění Gitu pro Windows?)
Podívejte se na kurz Začínáme používat Git v subsystému Windows pro Linux, který obsahuje část o nastavení Správce přihlašovacích údajů Gitu a ukládání ověřovacích tokenů ve Správci přihlašovacích údajů systému Windows.
Jak se dá soubor s Windows používat s aplikací pro Linux?
Jednou z výhod WSL je přístup k souborům prostřednictvím aplikací nebo nástrojů pro Windows i Linux.
WSL připojuje pevné disky vašeho počítače do složky /mnt/<drive> ve vašich linuxových distribucích. Například jednotka C: je připojena pod /mnt/c/.
Na připojených jednotkách můžete upravovat kód například v C:\dev\myproj\ pomocí Visual Studio nebo VS Code a v Linuxu ho sestavovat a testovat tím, že budete přes /mnt/c/dev/myproj přistupovat ke stejným souborům.
Přečtěte si další informace v článku o práci v systémech souborů s Windows a Linuxem .
Liší se soubory na jednotce s Linuxem od připojené jednotky Windows?
Soubory pod kořenovým adresářem Linuxu (tj.
/) spravuje WSL způsobem, který odpovídá chování Linuxu, včetně, ale nejen:- Soubory, které obsahují neplatné znaky názvu souboru systému Windows
- Symlinky vytvořené pro uživatele bez oprávnění správce
- Změna atributů souboru prostřednictvím
chmodachown - Citlivost velkých a malých písmen souborů nebo složek
Soubory na připojených jednotkách jsou řízeny systémem Windows a mají následující chování:
- Citlivost případu podpory
- Všechna oprávnění jsou nastavená tak, aby nejlépe odrážela oprávnění Windows.
Jak můžu odinstalovat distribuci WSL?
Pokud chcete odebrat distribuci z WSL a odstranit všechna data přidružená k dané linuxové distribuci, spusťte wsl --unregister <Distro> místo, kde <Distro> je název distribuce Linuxu, který můžete vidět ze seznamu v wsl -l příkazu.
Kromě toho můžete aplikaci distribuce Linuxu odinstalovat na svém počítači stejně jako jakoukoli jinou aplikaci pro Store.
Další informace o příkazech wsl najdete v článku Základní příkazy pro WSL.
Jak spustit server OpenSSH?
OpenSSH se dodává s Windows jako volitelná funkce. Podívejte se na dokumentaci k instalaci OpenSSH . Oprávnění správce ve Windows jsou nutná ke spuštění OpenSSH ve WSL. Pokud chcete spustit server OpenSSH, spusťte distribuci WSL (tj. Ubuntu) nebo Terminál Windows jako správce. Existuje několik prostředků, které pokrývají scénáře SSH s WSL. Podívejte se na blogové články Scotta Hanselmana: Jak SSH připojit k počítači s Windows 10 z Linuxu NEBO Windows NEBO kdekoli, Jak SSH do WSL2 ve Windows 10 z externího počítače, SNADNÝ ZPŮSOB, jak SSH do Bash a WSL2 ve Windows 10 z externího počítače a jak používat Integrované OpenSSH pro Windows 10 k automatickému SSH na vzdáleném počítači s Linuxem.
Jak změním jazyk zobrazení WSL?
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. Budete muset restartovat vaši distribuci WSL, aby se tato změna projevila.
Následující příklad změní národní prostředí na en-US:
sudo update-locale LANG=en_US.UTF8
Proč nemám přístup k internetu z WSL?
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
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
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.
Jak získám přístup k portu z WSL ve Windows?
WSL sdílí IP adresu Windows, protože je spuštěná ve Windows. Díky tomu můžete přistupovat k libovolným portům na localhostu; například pokud byste měli webový server na portu 1234, mohli byste jej https://localhost:1234 otevřít ve svém prohlížeči ve Windows. Další informace najdete v tématu Přístup k síťovým aplikacím.
Jak můžu zálohovat distribuce WSL?
Nejlepší způsob, jak zálohovat nebo přesouvat distribuce, je pomocí příkazů export/ a import, které jsou k dispozici ve Windows verze 1809 a novějších. Pomocí příkazu můžete exportovat celou distribuci do tarballu wsl --export . Tuto distribuci pak můžete importovat zpět do WSL pomocí wsl --import příkazu, který může pojmenovat nové umístění jednotky pro import, což vám umožní zálohovat a ukládat stavy (nebo přesunout) distribuce WSL. Další informace o přesunu distribucí WSL najdete v tématu Jak můžu přenést soubory WSL z jednoho počítače do jiného?
Tradiční zálohovací služby, které zálohují soubory ve vašich složkách AppData (například Windows Backup), nepoškodí vaše linuxové soubory.
Můžu použít WSL pro produkční scénáře?
Ano. K vytváření produkčních aplikací, které používají runtimnes pro Linux, doporučujeme použít rozhraní API kontejneru WSL. Můžete také použít WSL, ale WSL je navržen pro pracovní postupy iterativního vývoje. Ve WSL existují funkce návrhu, které ho pro tento účel skvěle hodí, ale mohou být náročné pro scénáře související s produkčním prostředím v porovnání s jinými produkty. Naším cílem je jasně určit, jak se WSL liší od běžného prostředí virtuálních počítačů, abyste mohli rozhodnout, jestli vyhovuje vašim obchodním potřebám.
Hlavní rozdíly mezi WSL a tradičním produkčním prostředím jsou:
- WSL má jednoduchý nástrojový virtuální počítač, který se spouští, zastavuje a spravuje prostředky automaticky.
- Pokud nemáte otevřené popisovače souborů pro procesy Windows, virtuální počítač WSL se automaticky vypne. To znamená, že pokud jej používáte jako webový server, připojíte se k němu přes SSH, spustíte na něm server a poté se odhlásíte, virtuální počítač se může vypnout, protože rozpozná, že jej uživatelé přestali používat, a uvolní jeho prostředky.
- Uživatelé WSL mají úplný přístup ke svým instancím Linuxu. Doba existence virtuálního počítače, registrované distribuce WSL atd. jsou uživateli přístupné a uživatel je může měnit.
- WSL automaticky poskytuje přístup k souborům Windows.
- Cesty Windows se ve výchozím nastavení připojují k vaší cestě, což může způsobit neočekávané chování určitých linuxových aplikací v porovnání s tradičním linuxovým prostředím.
- WSL může spouštět spustitelné soubory Windows z Linuxu, což může také vést k jinému prostředí než k tradičnímu virtuálnímu počítači s Linuxem.
- Jádro Linuxu používané WSL se aktualizuje automaticky.
- Přístup k GPU ve WSL probíhá prostřednictvím
/dev/dxgzařízení, které směruje volání GPU do grafického procesoru Windows. Toto nastavení se liší od tradičního nastavení Linuxu. - Ve srovnání s Linuxem běžícím přímo na hardwaru existují i další menší rozdíly a očekává se, že jich v budoucnu přibude, protože se upřednostňuje vývojový pracovní postup inner loop.
Jak můžu přenést soubory WSL z jednoho počítače do jiného?
Tento úkol můžete provést několika způsoby:
- Nejjednodušší způsob je použít příkaz k exportu
wsl --export <Distro> <FileName> --format vhddistribuce WSL do souboru VHD. Tento soubor pak můžete zkopírovat do jiného počítače a importovat ho pomocíwsl --import <Distro> <InstallLocation> <FileName> --vhd. Další informace najdete v dokumentu o základních příkazech WSL o příkazech import a export. - Výše uvedená implementace vyžaduje hodně místa na disku. Pokud nemáte hodně místa na disku, můžete soubory přesunout pomocí technik Linuxu:
- Použijte
tar -czf <tarballName> <directory>k vytvoření archivu tar z vašich souborů. Tyto konkrétní soubory pak můžete zkopírovat do nového počítače a spustittar -xzf <tarballName>, abyste je extrahovali. - Seznam nainstalovaných balíčků můžete také exportovat pomocí
aptpříkazem, jako je tento:dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt, a po přenesení souboru pak na jiném počítači znovu nainstalovat stejné balíčky pomocí příkazu, jako jesudo apt install -y $(cat package_list.txt).
- Použijte
Jak mohu přesunout svou distribuci WSL na jiný disk nebo do jiného umístění?
Můžete to provést pomocí PowerShellu. Níže jsou uvedeny potřebné příkazy a vysvětlení jednotlivých kroků. Otevřete okno PowerShellu a upravte hodnoty mezi <> značkami tak, aby odpovídaly vašemu konkrétnímu případu použití:
# Export your distro to that folder as a VHD
wsl --export <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx> --format vhd
# Unregister your old distro
# Please note this will erase your existing distro's file contents, please ensure the backup file you created in the 2nd step is present at the location and that the export operation completed successfully.
# Please exercise caution when using this command, as it is destructive and could cause data loss.
wsl --unregister <Distro, e.g: Ubuntu>
# Import your VHD backup
wsl --import-in-place <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx>
Jak nastavit výchozí uživatelský účet
Výchozí uživatelský účet můžete nastavit nastavením wsl.conf hodnoty user.default=<name>
WSL 2
Je WSL 2 k dispozici ve Windows 10 Home a Windows 11 Home?
Ano. WSL 2 je k dispozici ve všech desktopových edicích systému Windows, ve kterých je WSL k dispozici, včetně Windows 10 Home a Windows 11 Home.
Konkrétně WSL2 vyžaduje povolení dvou funkcí:
- Platforma virtuálních počítačů (podmnožina Hyper-V)
- Subsystém Windows pro Linux
Používá WSL 2 technologii Hyper-V?
Nejnovější verze WSL používá podmnožinu architektury Hyper-V k povolení virtualizace. Tato podmnožina je poskytována jako volitelná komponenta s názvem „Virtual Machine Platform“, která je k dispozici ve všech desktopových edicích.
Co se stane s WSL 1? Bude opuštěný?
V současné době nemáme žádné plány na vyřazení WSL 1. Můžete spustit distribuce WSL 1 a WSL 2 vedle sebe a můžete kdykoli upgradovat a downgradovat libovolnou distribuci. Přidání WSL 2 jako nové architektury představuje lepší platformu pro tým WSL, aby poskytoval funkce, díky kterým WSL představuje úžasný způsob, jak spustit linuxové prostředí ve Windows.
Budu moct spustit WSL 2 a další nástroje virtualizace třetích stran, jako je VMware nebo VirtualBox?
Některé aplikace třetích stran nemůžou při použití Hyper-V fungovat, což znamená, že nebudou moct běžet při povolení WSL 2, jako je VMware a VirtualBox. Nedávno však virtualBox i VMware vydaly verze, které podporují Hyper-V a WSL2. Další informace o změnách virtualboxu najdete tady a tady najdete změny VMware. Při řešení potíží se podívejte na diskuze o problémech virtualboxu v úložišti WSL na GitHubu. StackOverflow také nabízí užitečný tip: Jak zprovoznit VirtualBox 6.0 a WSL současně.
Konzistentně pracujeme na řešeních, která podporují integraci Hyper-V třetích stran. Zveřejňujeme například sadu rozhraní API označovaných jako Hypervisor Platform , kterou můžou poskytovatelé virtualizace třetích stran použít k zajištění kompatibility softwaru s technologií Hyper-V. To umožňuje aplikacím používat architekturu Hyper-V pro jejich emulaci, jako je Google Android Emulator, a VirtualBox 6 a vyšší, které jsou nyní kompatibilní s Technologií Hyper-V.
Další informace o problémech s WSL a diskuzi o problémech s VirtualBoxem 6.1 najdete v úložišti problémů WSL 2.
*Pokud hledáte virtuální počítač s Windows, soubory ke stažení virtuálních počítačů pro VMware, Hyper-V, VirtualBox a Parallels jsou k dispozici na webu Windows Dev Center.
Můžu získat přístup k GPU ve WSL 2? Existují plány na zvýšení podpory hardwaru?
Vydali jsme podporu pro přístup k GPU uvnitř distribucí WSL 2! To znamená, že teď můžete wsL používat pro scénáře strojového učení, umělé inteligence a datových věd snadněji, když se zapojí velké datové sady. Podívejte se na kurz jak začít s podporou GPU. Odteď WSL 2 nezahrnuje sériovou podporu ani podporu zařízení USB. Snažíme se prozkoumat nejlepší způsob, jak tyto funkce přidat. Podpora USB je ale nyní dostupná prostřednictvím projektu USBIPD-WIN. Postup nastavení podpory zařízení USB najdete v tématu Připojení zařízení USB .
Může WSL 2 používat síťové aplikace?
Ano, obecně síťové aplikace budou fungovat lépe a rychleji s WSL 2, protože nabízí plnou kompatibilitu volání systému. Architektura WSL 2 však používá virtualizované síťové komponenty, což znamená, že WSL 2 se bude chovat podobně jako virtuální počítač – distribuce WSL 2 budou mít jinou IP adresu než hostitelský počítač (operační systém Windows). Další informace naleznete v tématu Přístup k síťovým aplikacím pomocí WSL.
Můžu na virtuálním počítači spustit WSL 2?
Ano. Musíte se ujistit, že je na virtuálním počítači povolená vnořená virtualizace. To můžete povolit v nadřazeném Hyper-V hostiteli spuštěním následujícího příkazu v okně PowerShellu s oprávněními správce:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Ujistěte se, že '<VMName>' nahradíte názvem svého virtuálního počítače.
Můžu ve WSL 2 použít wsl.conf?
WSL 2 podporuje stejný soubor wsl.conf, který používá WSL 1. To znamená, že všechny možnosti konfigurace, které jste nastavili v distribuci WSL 1, jako je automatické připojení jednotek Windows, povolení nebo zakázání zprostředkovatele komunikace, změna adresáře, ve kterém budou připojené jednotky Windows, atd. budou fungovat uvnitř WSL 2. Další informace o možnostech konfigurace ve WSL najdete na stránce Správa distribuce. Další informace o podpoře připojení jednotek, disků, zařízení nebo virtuálních pevných disků (VHD) najdete v článku Připojení disku s Linuxem ve WSL 2 .
1: Přehled změn pro VirtualBox 6.02: Hyper-V API3: Podpora emulátoru Androidu v Hyper-V4: VMware Workstation Tech Preview 20H1 — podpora Hyper-V/VBS hostitele
Kde můžu poskytnout zpětnou vazbu?
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 "is: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 problém neexistuje, můžete vybrat zelené tlačítko Nový problém a pak zvolit WSL - Zpráva o chybě. Budete muset uvést název problému, číslo sestavení Windows (spuštěním
cmd.exe /c verzobrazit aktuální build #), ať už používáte WSL 1 nebo 2, aktuální verzi jádra Linuxu # (spusťtewsl.exe --statusnebocat /proc/version), verzi vaší distribuce (spusťtelsb_release -r), všechny ostatní zahrnuté verze softwaru, kroky pro reprodukci, očekávané chování, skutečné chování, a diagnostické protokoly, pokud jsou k dispozici a vhodné. Další informace najdete v tématu přispívání do WSL. - Vytvořte požadavek na funkci výběrem zeleného tlačítka Nový požadavek a potom vyberte Požadavek na funkci. 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.
- Nahlaste problém týkající se Terminál Windowsu pomocí produktového repozitáře Terminál Windowsu, pokud váš problém souvisí spíše s Terminál Windowsem, Konzolou Windows nebo uživatelským rozhraním příkazového řádku.
Pokud chcete mít aktuální informace o nejnovějších novinkách WSL, můžete to udělat takto:
- Náš blog týmu příkazového řádku
- X. Sledujte prosím @craigaloewen na X, kde se dozvíte o novinkách, aktualizacích atd.
Jak vyřešit chybu: 0x800704ec Tento program je blokován zásadami skupiny. Další informace získáte od správce systému.
Příčinou této chyby jsou zásady skupiny blokující WSL. Pokud chcete problém vyřešit, spusťte nejprve příkaz wsl --update , který aktualizuje na nejnovější verzi Storu. Pokud se tím problém nevyřeší, obraťte se na správce. Přečtěte si více o rozdílu mezi integrovanou verzí WSL a verzí WSL z Microsoft Storu: WSL v Microsoft Storu.
Nahradila služba WSLService LxssManager?
Ano, služba LxssManager byla nahrazena službou WSLService, když WSL přešel z komponenty integrované v systému na službu poskytovanou prostřednictvím Microsoft Storu.