Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Vi har gått igenom några vanliga felsökningsscenarier som är associerade med WSL nedan, men överväg att söka i de problem som finns i WSL-produktrepo på GitHub också.
Skapa ett problem, felrapport, funktionsbegäran
Funktionerna i WSL-produktens lagringsplats ger dig möjlighet att:
- Sök efter befintliga frågor för att se om det finns några som är kopplade till problem som du upplever. Observera att du i sökfältet kan ta bort "is:open" för att inkludera problem som redan har lösts i sökningen. Överväg att kommentera eller ge tummen upp till eventuella öppna ärenden som du vill uttrycka ditt intresse för att få prioriterade.
-
Skapa ett nytt problem. Om du har hittat ett problem med WSL och det inte verkar finnas något befintligt problem kan du välja den gröna knappen Nytt problem och sedan välja WSL – Felrapport. Du måste ta med en rubrik för problemet, ditt Versionsnummer för Windows (kör
cmd.exe /c ver
för att se din aktuella version #), oavsett om du kör WSL 1 eller 2, din aktuella Linux Kernel-version # (körwsl.exe --status
ellercat /proc/version
), version # av distributionen (körlsb_release -r
), eventuella andra programvaruversioner som ingår, repro-stegen, förväntat beteende, faktiskt beteende, diagnostikloggar om det är tillgängligt och lämpligt. För mer information, se om WSL-. - Skicka en funktionsbegäran genom att välja den gröna knappen Nytt problem och sedan välja funktionsbegäran. Du måste besvara några frågor som beskriver din begäran.
Du kan också:
- Fila ett dokumentationsproblem med hjälp av lagringsplatsen för WSL-dokument. Information om hur du bidrar till WSL-dokumenten finns i deltagarguiden för Microsoft Docs.
- Anmäl ett Windows Terminal- problem med Windows Terminal-produktens repo om problemet är mer relaterat till Windows Terminal, Windows Console eller kommandoradsgränssnittet.
Installationsproblem
Installationen misslyckades med fel 0x80070003
- Windows-undersystemet för Linux körs bara på systemenheten (vanligtvis är det här din
C:
enhet). Kontrollera att distributionerna lagras på systemenheten: - I Windows 10 öppnar du Inställningar –>System –>Storage –>Fler lagringsinställningar: Ändra var nytt innehåll sparas
- I Windows 11 öppnar du Inställningar –>System –>Storage –>Avancerade lagringsinställningar –>Där nytt innehåll sparas
- Windows-undersystemet för Linux körs bara på systemenheten (vanligtvis är det här din
WslRegisterDistribution misslyckades med fel 0x8007019e
- Den valfria Komponenten Windows-undersystem för Linux är inte aktiverad:
- Öppna Kontrollpanelen –>program och funktioner –>Aktivera eller inaktivera Windows-funktionen –> Kontrollera Windows-undersystem för Linux eller med powershell-cmdleten som nämns i början av den här artikeln.
Installationen misslyckades med fel 0x80070003 eller fel 0x80370102
- Kontrollera att virtualisering är aktiverat i datorns BIOS. Instruktionerna för hur du gör detta varierar från dator till dator, och kommer sannolikt att finnas under CPU-relaterade alternativ.
- WSL2 kräver att processorn stöder SLAT-funktionen (Second Level Address Translation), som introducerades i Intel Nehalem-processorer (Intel Core 1:a generationen) och AMD Opteron. Äldre processorer (till exempel Intel Core 2 Duo) kommer inte att kunna köra WSL2, även om den virtuella datorplattformen har installerats.
fel vid uppgradering:
Invalid command line option: wsl --set-version Ubuntu 2
- Kontrollera att Windows-undersystemet för Linux är aktiverat och att du använder Windows Build version 18362 eller senare. Om du vill aktivera WSL kör du det här kommandot i en PowerShell-prompt med administratörsbehörighet:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
.
- Kontrollera att Windows-undersystemet för Linux är aktiverat och att du använder Windows Build version 18362 eller senare. Om du vill aktivera WSL kör du det här kommandot i en PowerShell-prompt med administratörsbehörighet:
Det gick inte att slutföra den begärda åtgärden på grund av en systembegränsning för virtuella diskar. Virtuella hårddiskfiler måste vara okomprimerade och okrypterade och får inte vara glesa.
- Avmarkera "Komprimera innehåll" (samt "Kryptera innehåll" om det är markerat) genom att öppna profilmappen för Din Linux-distribution. Den bör finnas i en mapp i ditt Windows-filsystem, ungefär som:
%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
- I den här Linux-distributionsprofilen bör det finnas en LocalState-mapp. Högerklicka på den här mappen om du vill visa en meny med alternativ. Markera Egenskaper > Avancerat och kontrollera sedan att kryssrutorna "Komprimera innehåll för att spara diskutrymme" och "Kryptera innehåll för att skydda data" är avmarkerade (inte markerat). Om du tillfrågas om du bara vill tillämpa detta på den aktuella mappen eller på alla undermappar och filer väljer du "bara den här mappen" eftersom du bara rensar komprimeringsflaggan. Därefter bör kommandot
wsl --set-version
fungera.
- Avmarkera "Komprimera innehåll" (samt "Kryptera innehåll" om det är markerat) genom att öppna profilmappen för Din Linux-distribution. Den bör finnas i en mapp i ditt Windows-filsystem, ungefär som:
Not
I mitt fall fanns mappen LocalState för min Ubuntu 18.04-distribution på C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
Kontrollera WSL Docs GitHub-tråd #4103 där det här problemet spåras för uppdaterad information.
Termen "wsl" identifieras inte som namnet på en cmdlet, funktion, skriptfil eller ett fungerande program.
- Kontrollera att den valfria komponenten Windows-undersystemet för Linux är installerad. Om du använder en ARM64-enhet och kör det här kommandot från PowerShell får du dessutom det här felet. Kör istället
wsl.exe
från PowerShell Coreeller Kommandotolken.
- Kontrollera att den valfria komponenten Windows-undersystemet för Linux är installerad. Om du använder en ARM64-enhet och kör det här kommandot från PowerShell får du dessutom det här felet. Kör istället
Fel: Windows-undersystem för Linux har inga installerade distributioner.
- Om du får det här felet när du redan har installerat WSL-distributioner:
- Kör fördelningen minst en gång innan du anropar den från kommandoraden.
- Kontrollera om du kan köra separata användarkonton. Att köra ditt primära användarkonto med utökade behörigheter (i administratörsläge) bör inte resultera i det här felet, men du bör se till att du inte av misstag kör det inbyggda administratörskontot som medföljer Windows. Det här är ett separat användarkonto och visar inga installerade WSL-distributioner avsiktligt. Mer information finns i Aktivera och inaktivera det inbyggda administratörskontot.
- Den körbara WSL-filen installeras endast i den interna systemkatalogen. När du kör en 32-bitarsprocess i 64-bitars Windows (eller på ARM64, alla icke-interna kombinationer) ser den värdbaserade icke-interna processen faktiskt en annan System32-mapp. (Den som en 32-bitarsprocess ser på x64 Windows lagras på disken på \Windows\SysWOW64.) Du kan komma åt det "ursprungliga" system32 från en värdbaserad process genom att titta i den virtuella mappen:
\Windows\sysnative
. Det kommer faktiskt inte att finnas på disken, men filsystemets sökvägslösare hittar den.
Fel: Den här uppdateringen gäller endast för datorer med Windows-undersystemet för Linux.
- För att installera MSI-paketet för Linux-kerneluppdatering krävs WSL och bör aktiveras först. Om det misslyckas visas meddelandet:
This update only applies to machines with the Windows Subsystem for Linux
. - Det finns tre möjliga orsaker till att du ser det här meddelandet:
Du är fortfarande i den gamla versionen av Windows som inte stöder WSL 2. Se steg 2 för versionskrav och länkar för uppdatering.
WSL är inte aktiverat. Du måste återgå till steg 1 och se till att den valfria WSL-funktionen är aktiverad på datorn.
När du har aktiverat WSL krävs en omstart för att den ska börja gälla, starta om datorn och försök igen.
- För att installera MSI-paketet för Linux-kerneluppdatering krävs WSL och bör aktiveras först. Om det misslyckas visas meddelandet:
Fel: WSL 2 kräver en uppdatering av dess kernelkomponent. Mer information finns i https://aka.ms/wsl2kernel .
- Om Linux-kernelpaketet saknas i mappen %SystemRoot%\system32\lxss\tools visas det här felet. Lös det genom att installera MSI-paketet för Linux-kerneluppdatering i steg 4 i de här installationsanvisningarna. Du kan behöva avinstallera MSI från Lägg till eller ta bort programoch installera det igen.
Vanliga problem
Jag är på Windows 10 version 1903 och jag fortfarande inte ser alternativ för WSL 2
Detta beror troligen på att datorn ännu inte har tagit backporten för WSL 2. Det enklaste sättet att lösa detta är genom att gå till Windows-inställningar och klicka på "Sök efter uppdateringar" för att installera de senaste uppdateringarna i systemet. Läs de fullständiga instruktionerna för hur du installerar backporten.
Om du trycker på Sök efter uppdateringar och fortfarande inte får uppdateringen kan du installera KB KB4566116 manuellt.
Fel: 0x1bc när wsl --set-default-version 2
Detta kan inträffa när inställningen "Visningsspråk" eller "Systemspråk" inte är engelska.
wsl --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Det faktiska felet för 0x1bc
är:
WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel
Mer information finns i ärende 5749
Det går inte att komma åt WSL-filer från Windows
En 9p-protokollfilserver tillhandahåller tjänsten på Linux-sidan så att Windows kan komma åt Linux-filsystemet. Om du inte kan komma åt WSL med hjälp av \\wsl$
i Windows kan det bero på att 9P inte startade korrekt.
Om du vill kontrollera detta kan du kontrollera startloggarna med hjälp av: dmesg |grep 9p
, och då visas eventuella fel. Ett lyckat resultat ser ut så här:
[ 0.363323] 9p: Installing v9fs 9p2000 file system support
[ 0.363336] FS-Cache: Netfs '9p' registered for caching
[ 0.398989] 9pnet: Installing 9P2000 support
Se den här GitHub-tråden för vidare diskussion om det här problemet.
Det går inte att starta WSL 2-distributionen och bara se "WSL 2" i utdata
Om ditt visningsspråk inte är engelska är det möjligt att du ser en trunkerad version av en feltext.
C:\Users\me>wsl
WSL 2
Lös problemet genom att gå till https://aka.ms/wsl2kernel
och installera kerneln manuellt genom att följa anvisningarna på den dokumentsidan.
command not found
vid körning av Windows .exe i Linux
Användare kan köra körbara Windows-filer som notepad.exe direkt från Linux. Ibland kan du trycka på "kommandot hittades inte" som nedan:
$ notepad.exe
-bash: notepad.exe: command not found
Om det inte finns några Win32-sökvägar i $PATH kommer inte interop att hitta .exe.
Du kan verifiera det genom att köra echo $PATH
i Linux. Du förväntas se en Win32-sökväg (till exempel /mnt/c/Windows) i utdata.
Om du inte kan se några Windows-sökvägar är det troligt att din PATH skrivs över av Linux-gränssnittet.
Här är ett exempel som /etc/profile på Debian bidrog till problemet:
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
Det rätta sättet på Debian är att ta bort ovanstående rader. Du kan också lägga till $PATH under tilldelningen som nedan, men detta leder till vissa andra problem med WSL och 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
Mer information finns i ärende 5296 och ärende 5779.
"Fel: 0x80370102 Det gick inte att starta den virtuella datorn eftersom en nödvändig funktion inte är installerad."
Aktivera Windows-funktionen Virtual Machine Platform och se till att virtualisering är aktiverad i BIOS.
Kontrollera Hyper-V systemkraven
Om datorn är en virtuell dator aktiverar du kapslad virtualisering manuellt. Starta powershell med administratör och kör följande kommando och ersätt
<VMName>
med namnet på den virtuella datorn i värdsystemet (du hittar namnet i Hyper-V Manager):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Följ riktlinjerna från datorns tillverkare om hur du aktiverar virtualisering. I allmänhet kan detta innebära att du använder systemets BIOS för att säkerställa att dessa funktioner är aktiverade på processorn. Anvisningar för den här processen kan skilja sig åt mellan olika datorer, se den här artikeln från Bleeping Computer för ett exempel.
Starta om datorn när du har aktiverat den
Virtual Machine Platform
valfria komponenten.Kontrollera att hypervisor-starten är aktiverad i startkonfigurationen. Du kan verifiera detta genom att köra PowerShell med administrativa rättigheter:
bcdedit /enum | findstr -i hypervisorlaunchtype
Om du ser
hypervisorlaunchtype Off
inaktiveras hypervisor-programmet. Så här aktiverar du den genom att köra den i ett upphöjt powershell:bcdedit /set hypervisorlaunchtype Auto
Om du har installerat hypervisor-program från tredje part (till exempel VMware eller VirtualBox) kontrollerar du att du har dessa på de senaste versionerna som kan stödja HyperV (VMware 15.5.5+ och VirtualBox 6+) eller är avstängda.
Om du får det här felet på en virtuell Azure-dator kontrollerar du att Betrodd start är inaktiverad. Kapslad virtualisering stöds inte på virtuella Azure-datorer med betrodd start.
Läs mer om hur du konfigurerar kapslad virtualisering när du kör Hyper-V i en virtuell maskin.
WSL har ingen nätverksanslutning på min arbetsdator eller i en Företagsmiljö
Företags- eller företagsmiljöer kan ha Windows Defender-brandväggsinställningar som konfigurerats för att blockera obehörig nätverkstrafik. Om lokala regel som sammanfogar är inställd på "Nej" fungerar inte WSL-nätverk som standard, och administratören måste lägga till en brandväggsregel för att tillåta det.
Du kan bekräfta inställningen för sammanslagning av lokala regler genom att följa dessa steg:
- Öppna "Windows Defender-brandväggen med avancerad säkerhet" (detta skiljer sig från "Windows Defender-brandväggen" på Kontrollpanelen)
- Högerklicka på fliken "Windows Defender-brandväggen med avancerad säkerhet på den lokala datorn"
- Välj "Egenskaper"
- Välj fliken Offentlig profil i det nya fönstret som öppnas
- Välj "Anpassa" under avsnittet "Inställningar"
- Kontrollera i fönstret "Anpassa inställningar för den offentliga profilen" som öppnas för att se om "Regelsammanslagningen" är inställd på "Nej". Detta blockerar åtkomsten till WSL.
Du hittar anvisningar om hur du ändrar den här brandväggsinställningen i Konfigurera Hyper-V brandvägg.
WSL har ingen nätverksanslutning när den är ansluten till ett VPN
Om bash förlorar nätverksanslutningen när du har anslutit till ett VPN i Windows kan du prova den här lösningen inifrån bash. Med den här lösningen kan du åsidosätta DNS-matchningen manuellt via /etc/resolv.conf
.
- Notera DNS-servern för VPN från steg
ipconfig.exe /all
- Skapa en kopia av den befintliga resolve.conf-
sudo cp /etc/resolv.conf /etc/resolv.conf.new
- Ta bort kopplingen för den aktuella resolv.conf
sudo unlink /etc/resolv.conf
sudo mv /etc/resolv.conf.new /etc/resolv.conf
- Redigera
/etc/wsl.conf
och lägg till det här innehållet i filen. (Mer information om den här konfigurationen finns i Konfiguration av avancerade inställningar)
[network]
generateResolvConf=false
- Öppna
/etc/resolv.conf
och
a. Ta bort den första raden från filen som har en kommentar som beskriver automatisk generering
b) Lägg till DNS-posten från (1) ovan som den allra första posten i listan över DNS-servrar.
Punkt c Stäng filen.
När du har kopplat från VPN måste du återställa ändringarna till /etc/resolv.conf
. Gör detta genom att göra:
cd /etc
sudo mv resolv.conf resolv.conf.new
sudo ln -s ../run/resolvconf/resolv.conf resolv.conf
Problem med global säker åtkomstklient med WSL
Den globala klienten för säker åtkomst (/entra/global-secure-access/how-to-install-windows-client) kan påverka WSL-anslutningen eftersom den har en funktion för att returnera en tillfällig adress när ett namn matchas. Sedan växlas adressen till den faktiska adressen när en nätverksanslutning upprättas. Detta kan störa WSL eftersom WSL-trafiken vidarebefordras under många av GSA-klientanknytningarna.
Vi rekommenderar att du inaktiverar DNS-tunnlar (dnsTunneling=false
) eller inaktiverar speglat läge (networkingMode=nat
).
Cisco Anyconnect VPN-problem med WSL i NAT-läge
Cisco AnyConnect VPN ändrar vägar på ett sätt som hindrar NAT från att fungera. Det finns en lösning som är specifik för WSL 2: Se administratörsguiden för Cisco AnyConnect Secure Mobility Client, version 4.10 – Felsöka AnyConnect.
WSL-anslutningsproblem med VPN när läget för speglat nätverk är aktiverat
Speglat nätverksläge är för närvarande en experimentell inställning i WSL-konfigurationen. Den traditionella NAT-nätverksarkitekturen för WSL kan uppdateras till ett helt nytt nätverksläge med namnet "Speglat nätverksläge". När den experimentella networkingMode
är inställd på mirrored
speglas de nätverksgränssnitt som du har i Windows i Linux för att förbättra kompatibiliteten. Läs mer i kommandoradsbloggen: WSL september 2023-uppdatering.
Vissa VPN-nätverk har testats och bekräftats vara inkompatibla med WSL, inklusive:
- "Bitdefender" version 26.0.2.1
- "OpenVPN" version 2.6.501
- "Mcafee Safe Connect" version 2.16.1.124
Överväganden vid användning av autoProxy för HttpProxy-spegling i WSL
HTTP/S-proxyspegling kan konfigureras med hjälp av inställningen autoProxy
i den experimentella sektionen i WSL-konfigurationsfilen. När du tillämpar den här inställningen bör du tänka på följande:
- PAC Proxy: WSL konfigurerar inställningen i Linux genom att ange miljövariabeln "WSL_PAC_URL". Linux stöder inte PAC-proxyservrar som standard.
- Interaktioner med WSLENV: Användardefinierade miljövariabler har företräde framför de som anges av den här funktionen.
När det är aktiverat gäller följande proxyinställningar för dina Linux-distributioner:
- Miljövariabeln för Linux,
HTTP_PROXY
, är inställd på en eller flera HTTP-proxyservrar som finns installerade i Windows HTTP-proxykonfigurationen. - Miljövariabeln för Linux,
HTTPS_PROXY
, är inställd på en eller flera HTTP-S- proxyservrar som finns installerade i Windows HTTP-proxykonfigurationen. - Miljövariabeln för Linux,
NO_PROXY
, är inställd på att kringgå alla HTTP/S-proxyservrar som finns i Windows-konfigurationsmålen. - Varje miljövariabel, förutom
WSL_PAC_URL
, anges i både gemener och versaler. Till exempel:HTTP_PROXY
ochhttp_proxy
.
Det finns ett känt problem som orsakas av ZScaler-konfigurationerna, där ZScaler upprepade gånger aktiverar och inaktiverar Windows-proxykonfigurationer, vilket leder till att WSL upprepade gånger visar meddelandet "En HTTP-proxyändring har identifierats på värden".
Läs mer i kommandoradsbloggen: WSL september 2023-uppdatering.
Nätverksöverväganden med DNS-tunnlar
När WSL inte kan ansluta till Internet kan det bero på att DNS-anropet till Windows-värden är blockerat. Detta beror på att nätverkspaketet för DNS som skickas av den virtuella WSL-datorn till Windows-värden blockeras av den befintliga nätverkskonfigurationen. DNS-tunnlar åtgärdar detta med hjälp av en virtualiseringsfunktion för att kommunicera direkt med Windows, vilket gör att DNS-namnet kan matchas utan att skicka ett nätverkspaket. Den här funktionen bör förbättra nätverkskompatibiliteten och ge dig bättre internetanslutning även om du har ett VPN, en specifik brandväggskonfiguration eller andra nätverkskonfigurationer.
DNS-tunnlar kan konfigureras med inställningen dnsTunneling
i den experimentella sektionen i WSL-konfigurationsfilen. När du tillämpar den här inställningen bör du tänka på följande:
- Om du använder ett VPN med WSL aktiverar du DNS-tunnlar. Många VPN-nätverk använder NRPT-principer, som endast tillämpas på WSL DNS-frågor när DNS-tunneltrafik är aktiverat.
- Den
/etc/resolv.conf
filen i Linux-distributionen har en maximal begränsning på 3 DNS-servrar, medan Windows kan använda fler än 3 DNS-servrar. Om du använder DNS-tunnlar tas den här begränsningen bort – alla Windows DNS-servrar kan nu användas av Linux. - WSL använder Windows DNS-suffix i följande ordning (liknar den ordning som används av Windows DNS-klienten):
- Globala DNS-suffix
- Kompletterande DNS-suffix
- DNS-suffixer per gränssnitt
- Om DNS-kryptering (DoH, DoT) är aktiverat i Windows tillämpas kryptering på DNS-frågor från WSL. Om användarna vill aktivera DoH, DoT i Linux, måste de inaktivera DNS-tunnlar.
- DNS-frågor från Docker-containrar som hanteras av Docker Desktop kringgår DNS-tunnlar. Docker Desktop har sitt eget sätt (skiljer sig från DNS-tunneltrafik) att tillämpa DNS-värdinställningar och principer på DNS-frågor från Docker-containrar.
- Alternativet generateResolvConf i filen wsl.conf ska inte inaktiveras för att DNS-tunnlar ska aktiveras på ett lyckat sätt.
- När DNS-tunneling är aktiverad ignoreras alternativet generateHosts i filen wsl.conf (Windows DNS hosts-fil kopieras inte i Linux-filen /etc/hosts). Principerna i Windows-värdfilen tillämpas på DNS-frågor från Linux, utan att filen behöver kopieras i Linux.
Läs mer i kommandoradsbloggen: WSL september 2023-uppdatering.
Problem med styrning av den inkommande trafik som tas emot av Windows-värden till WSL:s virtuella maskin
När du använder det speglade nätverksläget (den experimentella networkingMode
inställd på mirrored
) kommer viss inkommande trafik som tas emot av Windows-värden aldrig att styras till den virtuella Linux-datorn. Den här trafiken är följande:
- UDP-port 68 (DHCP)
- TCP-port 135 (DCE-ändpunktsupplösning)
- TCP-port 1900 (UPnP)
- TCP-port 2869 (SSDP)
- TCP-port 5004 (RTP)
- TCP-port 3702 (WSD)
- TCP-port 5357 (WSD)
- TCP-port 5358 (WSD)
WSL konfigurerar automatiskt vissa Linux-nätverksinställningar när du använder speglat nätverksläge. Alla användarkonfigurationer av de här inställningarna när du använder speglat nätverksläge stöds inte. Här är listan över inställningar som WSL konfigurerar:
Inställningsnamn | Värde |
---|---|
https://sysctl-explorer.net/net/ipv4/accept_local/ | Aktiverad (1) |
https://sysctl-explorer.net/net/ipv4/route_localnet/ | Aktiverad (1) |
https://sysctl-explorer.net/net/ipv4/rp_filter/ | Inaktiverad (0) |
https://sysctl-explorer.net/net/ipv6/accept_ra/ | Inaktiverad (0) |
https://sysctl-explorer.net/net/ipv6/autoconf/ | Inaktiverad (0) |
https://sysctl-explorer.net/net/ipv6/use_tempaddr/ | Inaktiverad (0) |
addr_gen_mode | Inaktiverad (0) |
inaktivera_ipv6 | Inaktiverad (0) |
https://sysctl-explorer.net/net/ipv4/arp_filter/ | Aktiverad (1) |
Problem med Docker-container i WSL2 med läget Speglat nätverk aktiverat när det körs under standardnamnet för nätverk
Det finns ett känt problem där Docker Desktop-containrar med publicerade portar (docker run –publish/-p) inte kan skapas. WSL-teamet arbetar med Docker Desktop-teamet för att åtgärda problemet. Du kan undvika problemet genom att använda värdens nätverksnamnområde i Docker-containern. Ange nätverkstypen via alternativet "--network host" som används i kommandot "docker run". En alternativ lösning är att lista det publicerade portnumret i inställningen ignoredPorts
för det experimentella avsnittet i WSL-konfigurationsfilen.
Problem med Docker-containern när nätverkshanteraren körs
Det finns ett känt problem med Docker-containrar som har Network Manager-tjänsten igång. Symtomen är bland annat fel vid försök att upprätta loopbackanslutningar till värddatorn. Vi rekommenderar att du stoppar Network Manager-tjänsten för WSL-nätverk så att den är korrekt konfigurerad.
sudo systemctl disable network-manager.service
Lösa .local-namn i WSL
För att matcha värdnamn till IP-adresser i ett lokalt nätverk utan att behöva en vanlig DNS-server används ofta lokala namn. Detta uppnås via protokollet mDNS (Multicast DNS), som förlitar sig på multicast-trafik för att fungera.
networkingMode inställd på NAT:
Den här funktionen stöds för närvarande inte när DNS-tunnlar är aktiverade. För att möjliggöra upplösning av .local-namn rekommenderar vi följande lösningar:
- Inaktivera DNS-tunneltrafik.
- Använd speglat nätverksläge.
nätverksläge inställd på Speglad:
Obs! Du måste ha WSL-version 2.3.17 eller senare för att kunna använda funktionerna nedan.
Eftersom speglingsläge stöder multicast-trafik kan protokollet mDNS (Multicast DNS) användas för att lösa .local-namn. Linux måste konfigureras för att stödja mDNS, eftersom det inte gör det som standard. Ett sätt att konfigurera det är att använda följande två steg:
- Installera paketet "libnss-mdns"
sudo apt-get install libnss-mdns
*Paketet "libnss-mdns" är en insticksmodul för funktionaliteten i GNU Name Service Switch (NSS) i GNU C-biblioteket (glibc) som tillhandahåller upplösning av värdnamn via Multicast DNS (mDNS). Det här paketet gör att vanliga Unix/Linux-program kan matcha namn i den ad hoc mDNS-domänen .local.
- Konfigurera
/etc/nsswitch.conf
-filen för att aktivera inställningen "mdns_minimal" i avsnittet "hosts". Exempelinnehåll i filen:
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
DNS-suffix i WSL
Beroende på konfigurationerna i .wslconfig-filen har WSL följande beteende med avseende på DNS-suffix:
När networkingMode är inställt på NAT:
Fall 1) Som standard konfigureras inget DNS-suffix i Linux
Fall 2) Om DNS-tunnling är aktiverad (dnsTunneling är inställt på true i .wslconfig) är alla Windows DNS-suffixer konfigurerade i Linux i inställningen "search" för /etc/resolv.conf
Suffixen konfigureras i /etc/resolve.conf i följande ordning, ungefär som i den ordning windows DNS-klienten försöker använda suffix när ett namn matchas: globala DNS-suffix först, sedan kompletterande DNS-suffix och sedan DNS-suffix per gränssnitt.
När det sker en ändring i Windows DNS-suffixen återspeglas den ändringen automatiskt i Linux
Fall 3) Om DNS-tunnlar är inaktiverade och DNS-proxyn SharedAccess är inaktiverad (dnsTunneling är inställt på false och dnsProxy är inställt på false i .wslconfig) konfigureras ett enda DNS-suffix i Linux i inställningen "domän" för /etc/resolve.conf
När det sker en ändring i Windows DNS-suffixen återspeglas inte ändringen i Linux
Det enskilda DNS-suffixet som konfigurerats i Linux väljs från DNS-suffixen per gränssnitt (globala och kompletterande suffix ignoreras)
Om Windows har flera gränssnitt används en heuristisk för att välja det enda DNS-suffix som ska konfigureras i Linux. Om det till exempel finns ett VPN-gränssnitt i Windows väljs suffixet från det gränssnittet. Om det inte finns något VPN-gränssnitt väljs suffixet från det gränssnitt som mest sannolikt ger Internetanslutning.
När networkingMode är inställt på Speglad:
Alla Windows DNS-suffix har konfigurerats i Linux i inställningen "sök" för /etc/resolve.conf
Suffixen konfigureras i /etc/resolve.conf i samma ordning som i fall 2) från NAT-läge
När det sker en ändring i Windows DNS-suffixen återspeglas den ändringen automatiskt i Linux
Obs! Kompletterande DNS-suffix kan konfigureras i Windows med SetInterfaceDnsSettings – Win32-appar | Microsoft Learn, med flaggan DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST i parametern Inställningar
Felsökning av DNS i WSL
Standard-DNS-konfigurationen när WSL startar en container i NAT-läge är att NAT-enheten på Windows-värden ska fungera som DNS-server för WSL-containern. När DNS-frågor skickas från WSL-containern till NAT-enheten på Windows-värden vidarebefordras DNS-paketet från NAT-enheten till tjänsten för delad åtkomst på värddatorn; Svaret skickas i omvänd riktning tillbaka till WSL-containern. Den här paketvidarebefordringsprocessen till delad åtkomst kräver en brandväggsregel för att tillåta det inkommande DNS-paketet, som skapas av HNS-tjänsten när WSL först ber HNS att skapa det virtuella NAT-nätverket för sin WSL-container.
På grund av denna NAT-design för delad åtkomst finns det några kända konfigurationer som kan förhindra namnuppslagning från WSL.
1. Ett företag kan pusha policyer som inte tillåter lokalt definierade brandväggsregler, och endast tillåter regler definierade av företagspolicy.
När detta anges av ett företag ignoreras den HNS-skapade brandväggsregeln eftersom det är en lokalt definierad regel. För att den här konfigurationen ska fungera måste Enterprise skapa en brandväggsregel för att tillåta UDP-port 53 till tjänsten för delad åtkomst, eller så kan WSL anges att använda DNS-tunnlar. Man kan se om detta är konfigurerat för att inte tillåta lokalt definierade brandväggsregler genom att köra följande. Observera att detta visar inställningar för alla tre profiler: Domän, Privat och Offentlig. Om det är inställt på någon profil kommer paket att blockeras om WSL vNIC tilldelas den profilen (standardvärdet är Offentligt). Det här är bara ett kodfragment av den första brandväggsprofilen som returneras i PowerShell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name : Domain
Enabled : True
DefaultInboundAction : Block
DefaultOutboundAction : Allow
AllowInboundRules : True
AllowLocalFirewallRules : False
AllowLocalFirewallRules:False means the locally defined firewall rules, like that by HNS, will not be applied or used.
2. Och Enterprise kan skicka ned inställningar för gruppprincip- och MDM-principer som blockerar alla regler för inkommande anslutningar.
De här inställningarna åsidosätter alla Allow-Inbound brandväggsregel. Den här inställningen blockerar därför den HNS-skapade UDP-brandväggsregeln och förhindrar därför att WSL löser namn. För att den här konfigurationen ska fungera måste WSL anges för att använda DNS-tunneltrafik. Den här inställningen blockerar alltid NAT DNS-proxyn.
från gruppolicy:
Datorkonfiguration \ Administrativa mallar \ Nätverk \ Nätverksanslutningar \ Windows Defender-brandväggen \ Domänprofil | Standardprofil
"Windows Defender-brandväggen: Tillåt inte undantag" – Aktiverad
från MDM-policy:
./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/Skärmad
./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Shielded
./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Skärmad
Man kan se om detta är konfigurerat för att inte tillåta några inkommande brandväggsregler genom att köra följande (se ovan varningar på brandväggsprofiler). Det här är bara ett kodfragment av den första brandväggsprofilen som returneras i PowerShell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name : Domain
Enabled : True
DefaultInboundAction : Block
DefaultOutboundAction : Allow
AllowInboundRules : False
AllowInboundRules: False means that no inbound Firewall rules will be applied.
3. En användare går igenom windowssäkerhetsinställningsapparna och kontrollerar kontrollen för "Blockerar alla inkommande anslutningar, inklusive de i listan över tillåtna appar"
Windows har stöd för en användaranmälning för samma inställning som kan tillämpas av ett företag som refereras till i #2 ovan. Användare kan öppna inställningssidan "Windows-säkerhet", väljer alternativet "Brandvägg & nätverksskydd", väljer den brandväggsprofil som de vill konfigurera (domän, privat eller offentlig) och under "Inkommande anslutningar" kontrollerar du kontrollen "Blockerar alla inkommande anslutningar, inklusive de i listan över tillåtna appar".
Om detta anges för den offentliga profilen (detta är standardprofilen för WSL vNIC) blockeras brandväggsregeln som skapats av HNS för att tillåta UDP-paketen till delad åtkomst.
Detta måste avmarkeras för att NAT DNS-proxykonfigurationen ska fungera från WSL, eller WSL kan specificeras för att använda DNS-tunnling.
4. HNS-brandväggsregeln för att tillåta DNS-paketen till delad åtkomst kan bli ogiltig och referera till en tidigare WSL-gränssnittsidentifierare. Detta är ett fel i HNS som har åtgärdats med den senaste Windows 11-versionen. I tidigare versioner är det inte lätt att upptäcka om detta inträffar, men det finns en enkel lösning.
Stoppa WSL
wsl.exe –shutdown
Ta bort den gamla HNS-brandväggsregeln. Det här PowerShell-kommandot bör fungera i de flesta fall:
Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
Ta bort alla HNS-slutpunkter. Obs! Om HNS används för att hantera andra containrar, till exempel MDAG eller Windows Sandbox, bör de också stoppas.
hnsdiag.exe delete all
Starta eller starta om HNS-tjänsten
Restart-Service hns
När WSL startas om skapar HNS nya brandväggsregler som är korrekt inriktade på WSL-gränssnittet.
Felsöka problem med nätverksåtkomst i Windows
Om du inte har någon nätverksåtkomst kan det bero på en felkonfiguration. Kontrollera om FSE-drivrutinen är igång: "sc queryex FSE". Om det inte visar att FSE är igång, kontrollerar du om registervärdet PortTrackerEnabledMode finns under den här registernyckeln: reg query HKLM\System\CurrentControlSet\Services\Tcpip\Parameters. Om FSE inte körs eller installeras och PortTrackerEnabledMode finns tar du bort registervärdet och startar om
Manuellt sätt att ta bort fantomadaptrar
Ghost-adaptrar, eller fantomenheter för Plug and Play (PnP), avser hårdvarukomponenter som visas i systemet men som inte är fysiskt anslutna. Dessa "spök"-enheter kan orsaka förvirring och oreda i systeminställningarna. Om du ser spökadaptrar när du kör WSL på virtuella datorer följer du dessa manuella steg för att hitta och ta bort dessa spök-PnP-enheter. Microsoft arbetar med en automatiserad lösning som inte kräver manuella åtgärder. Mer information kommer snart.
- Öppna Enhetshanteraren
- Visa > Visa dolda enheter
- Öppna nätverkskort
- Högerklicka över det spökbaserade nätverkskortet och välj Avinstallera enhet
Om du startar WSL eller installerar en distribution returneras en felkod
Följ anvisningarna för att Samla in WSL-loggar i WSL-databasen på GitHub för att få detaljerade loggar och rapportera ett ärende på vår GitHub.
Uppdaterar WSL
Det finns två komponenter i Windows-undersystemet för Linux som kan kräva uppdatering.
Om du vill uppdatera Själva Windows-undersystemet för Linux använder du kommandot
wsl --update
i PowerShell eller CMD.Om du vill uppdatera specifika binärfiler för Linux-distributionsanvändare använder du kommandot:
apt-get update | apt-get upgrade
i Linux-distributionen som du vill uppdatera.
Apt-get-uppgraderingsfel
Vissa paket använder funktioner som vi inte har implementerat ännu.
udev
stöds till exempel inte ännu och orsakar flera apt-get upgrade
fel.
Följ följande steg för att åtgärda problem som rör udev
:
Skriv följande till
/usr/sbin/policy-rc.d
och spara ändringarna.#!/bin/sh exit 101
Lägg till körningsbehörigheter i
/usr/sbin/policy-rc.d
:chmod +x /usr/sbin/policy-rc.d
Kör följande kommandon:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
"Fel: 0x80040306" vid installationen
Detta har att göra med att vi inte stöder den äldre konsolen. Så här inaktiverar du den äldre konsolen:
- Öppna cmd.exe
- Högerklicka på titelraden –> Egenskaper –> Avmarkera Använd äldre konsol
- Klicka på OK
"Fel: 0x80040154" efter Windows-uppdateringen
Windows-undersystemet för Linux-funktionen kan inaktiveras under en Windows-uppdatering. Om detta händer måste Windows-funktionen återaktiveras. Instruktioner för att aktivera Windows-undersystemet för Linux finns i manuella installationsguiden.
Ändra visningsspråket
WSL-installationen försöker automatiskt ändra Ubuntu-språkvarianten så att den matchar nationella inställningar för din Windows-installation. Om du inte vill att det här beteendet ska fungera kan du köra det här kommandot för att ändra Ubuntu-språkvarianten när installationen har slutförts. Du måste starta om bash.exe för att ändringen ska börja gälla.
I exemplet nedan ändras nationella inställningar till en-US
:
sudo update-locale LANG=en_US.UTF8
Installationsproblem efter windows-systemåterställning
- Ta bort mappen
%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux
.
Obs! Gör inte detta om den valfria funktionen är helt installerad och fungerar. - Aktivera den valfria WSL-funktionen (om inte redan)
- Omstart
- lxrun /uninstall /full
- Installera bash
Ingen internetåtkomst i WSL
Vissa användare har rapporterat problem med specifika brandväggsprogram som blockerar Internetåtkomst i WSL. De brandväggar som rapporteras är:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
I vissa fall tillåter avstängning av brandväggen åtkomst. I vissa fall verkar det som om bara installationen av brandväggen blockerar åtkomst.
Om du använder Microsoft Defender-brandväggen avmarkerar du "Blockerar alla inkommande anslutningar, inklusive de i listan över tillåtna appar." tillåter åtkomst.
Fel: Åtkomst nekad vid användning av ping
För Windows Anniversary Update, version 1607krävs administratörsbehörigheter i Windows för att köra ping i WSL. Om du vill köra ping kör du Bash på Ubuntu i Windows som administratör eller kör bash.exe från en CMD/PowerShell-prompt med administratörsbehörighet.
För senare versioner av Windows krävs inte längre administratörsbehörigheter Build 14926+.
Bash är hängd
Om du arbetar med bash och upptäcker att bash är låst (eller fastlåst) och inte svarar på inmatningar, hjälp oss att diagnostisera problemet genom att samla in och rapportera en minnesdump. Observera att de här stegen kraschar systemet. Gör inte detta om du inte är bekväm med det eller spara ditt arbete innan du gör detta.
Samla in en minnesdump
Ändra minnesdumptypen till "fullständig minnesdump". Anteckna den aktuella typen när du ändrar dumptypen.
Använd steg för att konfigurera krasch med hjälp av tangentbordskontroll.
Återskapa hängningen eller dödläget.
Krascha systemet med hjälp av nyckelsekvensen från (2).
Systemet kraschar och samlar in minnesdumpen.
När systemet startas om rapporterar du memory.dmp till secure@microsoft.com. Standardplatsen för dumpfilen är %SystemRoot%\memory.dmp eller C:\Windows\memory.dmp om C: är systemenheten. Observera i e-postmeddelandet att dumpen gäller för WSL- eller Bash-teamet i Windows.
Återställ minnesdumptypen till den ursprungliga inställningen.
Kontrollera ditt versionsnummer
Om du vill hitta datorns arkitektur och Versionsnummer för Windows öppnar du
Inställningar>System>Om
Leta efter fälten OS Build och System Type.
Om du vill hitta ditt Windows Server-versionsnummer kör du följande i PowerShell:
systeminfo | Select-String "^OS Name","^OS Version"
Bekräfta att WSL är aktiverat
Du kan bekräfta att Windows-undersystemet för Linux är aktiverat genom att köra följande i ett upphöjt PowerShell-fönster:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
OpenSSH-Server anslutningsproblem
Det gick inte att ansluta SSH-servern med följande fel: "Anslutningen stängdes av 127.0.0.1 port 22".
Kontrollera att OpenSSH-servern körs:
sudo service ssh status
och du har följt den här självstudien: https://ubuntu.com/server/docs/service-openssh
Stoppa sshd-tjänsten och starta sshd i felsökningsläge:
sudo service ssh stop sudo /usr/sbin/sshd -d
Kontrollera startloggarna och kontrollera att HostKeys är tillgängliga och att du inte ser loggmeddelanden som:
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
Om du ser sådana meddelanden och nycklarna saknas under /etc/ssh/
måste du återskapa nycklarna eller bara rensa&installera openssh-server:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
"Det gick inte att hitta den refererade sammansättningen." när du aktiverar den valfria WSL-funktionen
Det här felet är relaterat till ett felaktigt installationstillstånd. Utför följande steg för att försöka åtgärda problemet:
Om du kör kommandot aktivera WSL-funktion från PowerShell kan du prova att använda användargränssnittet i stället genom att öppna Start-menyn, söka efter "Aktivera eller inaktivera Windows-funktioner" och i listan väljer du sedan "Windows-undersystem för Linux" som installerar den valfria komponenten.
Uppdatera din version av Windows genom att gå till Inställningar, Uppdateringar och klicka på "Sök efter uppdateringar"
Om båda dessa misslyckas och du behöver komma åt WSL bör du överväga att uppgradera på plats genom att installera om Windows med installationsmedia och välja "Behåll allt" för att säkerställa att dina appar och filer bevaras. Du hittar anvisningar om hur du gör det på sidan Installera om Windows 10.
Åtgärda (SSH-relaterade) behörighetsfel
Om du ser det här felet:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/user/.ssh/private-key.pem' are too open.
Åtgärda detta genom att lägga till följande i filen /etc/wsl.conf
:
[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022
Observera att om du lägger till det här kommandot inkluderas metadata och filbehörigheterna för Windows-filerna som visas från WSL ändras. Se filsystembehörigheter för mer information.
Det går inte att fjärransluta WSL med OpenSSH i Windows
Om du använder openssh-server i Windows och försöker komma åt WSL via fjärranslutning visas det här felet:
The file cannot be accessed by the system.
Det är ett känt problemnär du använder Store-versionen av WSL. Du kan kringgå detta i dag med hjälp av WSL 1 eller med hjälp av WSL-versionen i Windows. Mer information finns i https://aka.ms/wslstoreinfo.
Det går inte att köra Windows-kommandon i en distribution
Vissa distributioner tillgängliga i Microsoft Store är ännu inte helt kompatibla för att köra Windows-kommandon direkt. Om du får fel -bash: powershell.exe: command not found
när du kör powershell.exe /c start .
eller något annat Windows-kommando kan du lösa det genom att följa dessa steg:
- Kör
echo $PATH
i din WSL-distribution.
Om den inte innehåller:/mnt/c/Windows/system32
något omdefinierar standardvariabeln PATH. - Kontrollera profilinställningarna med
cat /etc/profile
.
Om den innehåller tilldelning av PATH-variabeln redigerar du filen för att kommentera ut PATH-tilldelningsblocket med ett # tecken. - Kontrollera om wsl.conf finns
cat /etc/wsl.conf
och se till att den inte innehållerappendWindowsPath=false
, annars kommentera ut den. - Starta om distributionen genom att skriva
wsl -t
följt av distributionsnamn eller körawsl --shutdown
antingen i cmd eller PowerShell.
Det går inte att starta efter installationen av WSL 2
Vi är medvetna om ett problem som påverkar användare där de inte kan starta efter installationen av WSL 2. Medan vi håller på att diagnostisera problemen fullt ut, har användarna rapporterat att ändra buffertstorleken eller installera rätt drivrutiner kan hjälpa att åtgärda detta. Visa det här GitHub-problemet för att se de senaste uppdateringarna om det här problemet.
WSL 2-fel när ICS är inaktiverat
Internet-anslutningsdelning (ICS) är en nödvändig komponent i WSL 2. ICS-tjänsten används av värdnätverkstjänsten (HNS) för att skapa det underliggande virtuella nätverket som WSL 2 förlitar sig på för NAT, DNS, DHCP och värdanslutningsdelning.
Om du inaktiverar ICS-tjänsten (SharedAccess) eller inaktiverar ICS via en grupprincip hindrar du WSL HNS-nätverket från att skapas. Detta resulterar i fel när du skapar en ny WSL version 2-avbildning och följande fel när du försöker konvertera en version 1-avbildning till version 2.
There are no more endpoints available from the endpoint mapper.
System som kräver WSL 2 bör lämna ICS-tjänsten (SharedAccess) i standardstarttillståndet, Manuell (utlösarstart) och alla principer som inaktiverar ICS ska skrivas över eller tas bort. Om du inaktiverar ICS-tjänsten kommer WSL 2 att sluta fungera. Vi rekommenderar inte att inaktivera ICS, men delar av ICS kan inaktiveras med hjälp av dessa instruktioner
Använda äldre versioner av Windows och WSL
Det finns flera skillnader att notera om du kör en äldre version av Windows och WSL, till exempel Windows 10 Creators Update (okt 2017, Build 16299) eller Anniversary Update (Aug 2016, Build 14393). Vi rekommenderar att du uppdatera till den senaste Windows-versionen, men om det inte är möjligt har vi beskrivit några av skillnaderna nedan.
Skillnader i kommandon för interoperabilitet:
-
bash.exe
har ersatts medwsl.exe
. Linux-kommandon kan köras från Windows-kommandotolken eller från PowerShell, men för tidiga Windows-versioner kan du behöva använda kommandotbash
. Till exempel:C:\temp> bash -c "ls -la"
. De WSL-kommandon som skickas tillbash -c
vidarebefordras till WSL-processen utan ändringar. Filsökvägar måste anges i WSL-format och du måste vara noga med att undvika relevanta tecken. Till exempel:C:\temp> bash -c "ls -la /proc/cpuinfo"
ellerC:\temp> bash -c "ls -la \"/mnt/c/Program Files\""
. - Om du vill se vilka kommandon som är tillgängliga för en viss distribution kör du
[distro.exe] /?
. Till exempel med Ubuntu:C:\> ubuntu.exe /?
. - Windows-sökvägen ingår i WSL-
$PATH
. - När du anropar ett Windows-verktyg från en WSL-distribution i en tidigare version av Windows 10 måste du ange katalogsökvägen. Om du till exempel vill anropa Windows Notepad-appen från WSL-kommandoraden anger du:
/mnt/c/Windows/System32/notepad.exe
- Om du vill ändra standardanvändaren till
root
använder du det här kommandot i PowerShell:C:\> lxrun /setdefaultuser root
och kör sedan Bash.exe för att logga in:C:\> bash.exe
. Återställ lösenordet med kommandot distributionslösenord:$ passwd username
och stäng sedan Linux-kommandoraden:$ exit
. Från Windows-kommandotolken eller PowerShell återställer du standardanvändaren till ditt vanliga Linux-användarkonto:C:\> lxrun.exe /setdefaultuser username
.
Avinstallera äldre version av WSL
Om du ursprungligen installerade WSL på en version av Windows 10 före Creators-uppdateringen (okt 2017, version 16299) rekommenderar vi att du migrerar alla nödvändiga filer, data osv. från den äldre Linux-distributionen som du installerade till en nyare distribution installerad via Microsoft Store. Om du vill ta bort den äldre distributionen från datorn kör du följande från en kommandorad eller PowerShell-instans: wsl --unregister Legacy
. Du kan också ta bort den äldre äldre distributionen manuellt genom att ta bort mappen %localappdata%\lxss\
(och allt dess underinnehåll) med Utforskaren i Windows eller med PowerShell: rm -Recurse $env:localappdata/lxss/
.
Windows Subsystem for Linux