Aracılığıyla paylaş


Linux için Windows Alt Sistemi sorunlarını giderme

Aşağıda WSL ile ilişkili bazı yaygın sorun giderme senaryolarını ele aldık, ancak lütfen GitHub 'daki WSL ürün deposunda bulunan sorunları da aramayı göz önünde bulundurun.

Sorun, hata raporu, özellik isteği bildirme

WSL ürün deposu sorunları sana şunları yapma imkanı tanır:

  • Mevcut sorunları ara ve karşılaştığınız bir sorunla ilişkili bir durum olup olmadığını kontrol edin.

    Arama çubuğunda, aramanıza zaten çözülmüş olan sorunları eklemek için "state:open" öğesini kaldırabileceğinizi unutmayın.

    İlerlenmesini istediğiniz açık sorunlara öncelik verilmesini belirtmek için lütfen yorum yapmayı veya beğeni yapmayı göz önünde bulundurun.

  • Yeni bir sorun oluşturun. WSL ile ilgili bir sorun bulduysanız ve mevcut bir sorun görünmüyorsa, yeşil "New issue" düğmesini ve ardından "WSL - Bug Report" seçeneğini belirleyebilirsiniz.

    Aşağıdaki bilgileri sağlamanız gerekir:

    • Sorun başlığı
    • Windows Sürümü: Lütfen çalıştırdığınız Windows derlemesini almak için komutunu çalıştırın cmd.exe /c ver .
    • WSL Sürümü: Microsoft Store'dan Linux için Windows Alt Sistemi çalıştırıyorsanız lütfen komutunu çalıştırın wsl.exe -v.
    • WSL 1 mi yoksa WSL 2 mi kullanıyorsunuz: Sorunun WSL 2 ve/veya WSL 1'de olup olmadığını bize bildirin. komutunu çalıştırarak wsl.exe -l -vbunu anlayabilirsiniz.
    • Çekirdek Sürümü: Lütfen linux çekirdeğinin hangi sürümünü kullandığınızı veya özel bir çekirdek kullanıp kullanmadığınızdan bahsedin. Bu komut kullanılabilir durumdaysa veya dağıtımınızda çalıştırarak komutunu çalıştırabilirsiniz wsl.exe --statuscat /proc/version .
    • Dağıtım Sürümü: Lütfen hangi dağıtımı kullandığınızı (varsa) bize bildirin. Mümkün olduğunda sürüm hakkında ek bilgi alabilirsiniz; örneğin, Debian / Ubuntu, run lsb_release -r.
    • Diğer Yazılım: WSL'nin diğer uygulamalarla etkileşimiyle ilgili bir hata bildiriyorsanız lütfen bize bildirin. Hangi uygulamalar? Hangi sürümler?
    • Yeniden Oluşturma Adımları: Lütfen hatanızı yeniden oluşturma adımlarını listeleyin.
    • Beklenen Davranış: Ne görmeyi bekliyordunuz? İlgili örnekleri veya belge bağlantılarını ekleyin.
    • Gerçek Davranış: Bunun yerine ne oldu?
    • Tanılama Günlükleri: Gerekirse lütfen ek tanılama sağlayın. Geri Bildirim Merkezi günlüklerini, ağ günlüklerini ve daha fazlasını toplama hakkında bilgi için kılavuza bakın.

    Daha fazla bilgi için, WSL 'e katkıda bulunma hakkında bkz..

  • Yeşil "" düğmesini ve ardından "" öğesini seçerekNew issueFeature request oluşturun.

    İsteğinizi açıklayan birkaç soruya yanıt vermeniz gerekir.

Ayrıca şunları da yapabilirsiniz:

Yükleme sorunları

  • Yükleme 0x80070003 hata koduyla başarısız oldu

    • Linux için Windows Alt Sistemi yalnızca sistem sürücünüzde çalışır (genellikle bu, C: sürücünüzdür). Dağıtımların sistem sürücünüzde depolandığından emin olun:
    • Windows 10'da Ayarları açın ->Sistem ->Depolama ->Daha Fazla Depolama Ayarları: Yeni içeriğin kaydedildiği yeri değiştirmeC: sürücüsüne (Windows 10) uygulama yüklemek için sistem ayarlarının resmi
    • Windows 11'de Ayarları açın ->System ->Depolama ->Gelişmiş depolama ayarları ->Yeni içeriğin kaydedildiği yerUygulamaları C: sürücüye yüklemek için sistem ayarlarının resmi (Windows 11)
  • WslRegisterDistribution 0x8007019e hatasıyla başarısız oldu

    • Linux için Windows Alt Sistemi isteğe bağlı bileşeni etkinleştirilmedi:
    • Denetim Masası -> ->Windows Özelliğini açma veya kapatma ->Linux için Windows Alt Sistemini denetleyin veya 1. adımda belirtilen PowerShell cmdlet'ini kullanın.
  • Yükleme hata 0x80070003 veya hata 0x80370102 ile başarısız oldu

    • Lütfen bilgisayarınızın BIOS'unun içinde sanallaştırmanın etkinleştirildiğinden emin olun. Bunun nasıl yapılacağını gösteren yönergeler bilgisayardan bilgisayara değişir ve büyük olasılıkla CPU ile ilgili seçenekler altında olacaktır.
    • WSL2, CPU'nuzun Intel Nehalem işlemcilerde (Intel Core 1. Nesil) ve AMD Opteron'da kullanıma sunulan İkinci Düzey Adres Çevirisi (SLAT) özelliğini desteklemesini gerektirir. Sanal Makine Platformu başarıyla yüklenmiş olsa bile eski CPU'lar (Intel Core 2 Duo gibi) WSL2'yi çalıştıramaz.
  • Yükseltmeye çalışırken hata oluştu, Geçersiz komut satırı seçeneği: wsl --set-version Ubuntu 2

    • Linux için Windows Alt Sistemi'nin etkinleştirildiğinden ve Windows Build 18362 veya sonraki bir sürümünü kullandığınızdan emin olun. WSL'yi etkinleştirmek için bu komutu yönetici ayrıcalıklarına sahip bir PowerShell isteminde çalıştırın:

      Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
      
  • İstenen işlem sanal disk sistemi sınırlaması nedeniyle tamamlanamadı. Sanal sabit disk dosyaları sıkıştırılmamış ve şifrelenmemiş olmalı ve seyrek olmamalıdır.

    • Linux dağıtımınız için profil klasörünü açarak "İçeriği sıkıştır" (ve işaretliyse "İçeriği şifrele" seçeneğini kaldırın. Windows dosya sisteminizdeki bir klasörde bulunmalıdır, örneğin: %LocalAppData%\Packages\CanonicalGroupLimited...
    • Bu Linux dağıtım profilinde bir LocalState klasörü olmalıdır. Seçenekler menüsünü görüntülemek için bu klasöre sağ tıklayın. Gelişmiş Özellikler'i> seçin ve ardından "Disk alanından tasarruf etmek için içeriği sıkıştır" ve "Verileri güvenli hale getirmek için içeriği şifrele" onay kutularının seçili olmadığından (işaretlenmediğinden) emin olun. Bunu yalnızca geçerli klasöre mi yoksa tüm alt klasörlere ve dosyalara mı uygulayacağınız sorulursa, yalnızca sıkıştırma bayrağını temizlediğiniz için "yalnızca bu klasör" seçeneğini belirleyin. Bundan sonra, wsl --set-version komutu çalışmalıdır.

    WSL dağıtımı özellik ayarları ekran görüntüsü

    Not

    Benim durumumda, Ubuntu 18.04 dağıtımım için LocalState klasörü C:\Users\<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

    Güncel bilgiler için bu sorunun izlendiği WSL Docs GitHub iş parçacığı #4103 inceleyin.

  • 'wsl' terimi bir cmdlet, işlev, betik dosyası veya çalıştırılabilir programın adı olarak tanınmaz.

  • Hatası: Linux için Windows Alt Sisteminde yüklü dağıtım yok.

    • WSL dağıtımlarını zaten yükledikten sonra bu hatayı alırsanız:
    1. Dağıtımı komut satırından çağırmadan önce en az bir kez çalıştırın.
    2. Ayrı kullanıcı hesapları çalıştırıp çalıştırmayabileceğinizi denetleyin. Birincil kullanıcı hesabınızı yükseltilmiş izinlerle (yönetici modunda) çalıştırmak bu hataya neden olmamalıdır, ancak Windows ile birlikte gelen yerleşik Yönetici hesabını yanlışlıkla çalıştırmadığınızdan emin olmalısınız. Bu ayrı bir kullanıcı hesabıdır ve tasarım gereği yüklü WSL dağıtımlarını göstermez. Daha fazla bilgi için bkz. Yerleşik Yönetici HesabıEtkinleştirme ve Devre Dışı Bırakma.
    3. WSL yürütülebilir dosyası yalnızca yerel sistem dizinine yüklenir. 64 bit Windows üzerinde (veya ARM64'te herhangi bir yerel olmayan birleşimde) 32 bitlik bir işlem çalıştırdığınızda, barındırılan yerel olmayan işlem aslında farklı bir System32 klasörü görür. (32 bitlik bir işlemin x64 Windows'ta gördüğü işlem %SystemRoot%\SysWOW64 konumundaki diskte depolanır.) Barındırılan bir işlemden "yerel" system32'ye şu sanal klasöre bakarak erişebilirsiniz: \Windows\sysnative. Aslında diskte mevcut olmayacaktır, ancak dosya sistemi yol çözümleyicisi bunu bulur.
  • Hatası: Bu güncelleştirme yalnızca Linux için Windows Alt Sistemi olan makineler için geçerlidir.

    • Linux çekirdek güncelleştirmesi MSI paketini yüklemek için WSL gereklidir ve önce etkinleştirilmesi gerekir. Başarısız olursa şu iletiyi görürsünüz: Bu güncelleştirme yalnızca Linux için Windows Alt Sistemi'ne sahip makineler için geçerlidir.
    • Bu iletiyi görmenin üç olası nedeni vardır:
    1. Hala WSL 2'i desteklemeyen eski Windows sürümündesiniz. Bkz . Adım 2 - WSL 2 çalıştırma gereksinimlerini denetleme.

    2. WSL etkinleştirilmedi. 1. adıma dönmeniz ve isteğe bağlı WSL özelliğinin makinenizde etkinleştirildiğinden emin olmanız gerekir.

    3. WSL'yi etkinleştirdikten sonra, etkili olması için bir yeniden başlatma gereklidir, bu nedenle makinenizi yeniden başlatın ve tekrar deneyin.

  • Hata: WSL 2, çekirdek bileşeninde bir güncelleştirme gerektirir. Bilgi için lütfen 4. adımı ziyaret edin

    • Klasörde Linux çekirdek paketi eksikse %SystemRoot%\system32\lxss\tools bu hatayla karşılaşırsınız. Bu yükleme yönergelerinin 4. adımında Linux çekirdek güncelleştirmesi MSI paketini yükleyerek sorunu çözebilirsiniz. MSI'yi "Program Ekle veya Kaldır"dan kaldırmanız ve yeniden yüklemeniz gerekebilir.

Yaygın sorunlar

Windows 10 sürüm 1903'teyim ve WSL 2 seçeneklerini hala göremiyorum

Bunun nedeni büyük olasılıkla makinenizin WSL 2 için henüz arka bağlantı noktası almamış olmasıdır. Bunu çözmenin en basit yolu , Sisteminize en son güncelleştirmeleri yüklemek için Windows Ayarları'na gidip "Güncelleştirmeleri Denetle" seçeneğine tıklamaktır. Bkz. arka bağlantı noktası alma yönergelerinin tamamını.

"Güncelleştirmeleri Denetle" düğmesine basıp güncelleştirmeyi hala almazsanız KB KB4566116 el ile yükleyebilirsiniz.

Hata: 0x1bc wsl --set-default-version 2 olduğunda

'Görüntüleme Dili' veya 'Sistem Yerel Ayarı' ayarı İngilizce olmadığında bu durum oluşabilir.

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

için asıl hata 0x1bc şudur: WSL 2, çekirdek bileşeni için bir güncelleştirme gerektirir. Daha fazla bilgi için lütfen https://aka.ms/wsl2kernel

Daha fazla bilgi için lütfen sorun #5749'a bakın

Windows'tan WSL dosyalarına erişilemiyor

9p protokol dosya sunucusu, Windows'un Linux dosya sistemine erişmesine izin vermek için Linux tarafında hizmeti sağlar. Windows'da \\wsl$ kullanarak WSL'ye erişemiyorsanız, bunun nedeni 9P'nin doğru şekilde başlatılmamış olması olabilir.

Bunu kontrol etmek için, dmesg | grep 9pkullanarak başlangıç günlüklerini kontrol edebilirsiniz ve bu, size hataları gösterir. Başarılı bir çıkış aşağıdaki gibi görünü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

Bu sorunla ilgili daha fazla bilgi için lütfen sorun #5307'ye bakın.

WSL 2 dağıtımı başlatılamıyor ve yalnızca 'WSL 2' çıktısını görebiliyorum.

Görüntüleme diliniz İngilizce değilse, hata metninin kesilmiş bir sürümünü görüyor olmanız mümkündür.

PS C:\> wsl.exe
WSL 2

Bu sorunu çözmek için lütfen 4. adıma bakın ve bu belge sayfasındaki yönergeleri izleyerek çekirdeği el ile yükleyin.

Linux'ta command not found Windows'u çalıştırırken .exe

Kullanıcılar notepad.exe gibi Windows yürütülebilir dosyalarını doğrudan Linux'tan çalıştırabilir. Bazen aşağıdaki gibi "komut bulunamadı" tuşuna basabilirsiniz:

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

$PATH içinde hiçbir Win32 yolu yoksa, birlikte çalışabilirlik işlevleri .exe'u bulamayacak. Linux'ta echo $PATH çalıştırarak bunu doğrulayabilirsiniz. Çıktıda bir Win32 yolu (örneğin, /mnt/c/Windows) görmeniz beklenir. Herhangi bir Windows yolu göremiyorsanız, büyük olasılıkla PATH'iniz Linux komut satırınız tarafından üzerine yazılmaktadır.

Debian'da /etc/profile soruna katkıda bulunan bir örnek aşağıda verilmiştir:

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

Debian'da doğru yol, yukarıdaki satırları kaldırmaktır. Atama sırasında aşağıdaki gibi $PATH'yi ekleyebilirsiniz, ancak bu, WSL ve VSCode ile başka bazı sorunlara yol açar.

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

Daha fazla bilgi için bkz. sorun #5296 ve sorun #5779.

"Hata: 0x80370102 Gerekli bir özellik yüklenmediğinden sanal makine başlatılamadı."

Lütfen Sanal Makine Platformu Windows özelliğini etkinleştirin ve BIOS'ta sanallaştırmanın etkinleştirildiğinden emin olun.

  1. Hyper-V sistem gereksinimlerini denetleyin

  2. Makineniz bir VM ise, iç içe sanallaştırmayı el ile etkinleştirin. PowerShell'i yöneticiyle başlatın ve aşağıdaki komutu çalıştırın ve <VMName> yerine konak sisteminizdeki sanal makinenin adını yazın (adı Hyper-V Yöneticisi'nde bulabilirsiniz):

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Lütfen bilgisayarınızın üreticisinin sanallaştırmayı etkinleştirme yönergelerini izleyin. Genel olarak, bu özelliklerin CPU'nuzda etkinleştirildiğinden emin olmak için sistem BIOS'unu kullanmayı içerebilir. Bu işlemle ilgili yönergeler makineden makineye farklılık gösterebilir, lütfen bkz. Windows'ta sanallaştırmayı etkinleştirme.

  4. Sanal Makine Platformuisteğe bağlı bileşenini etkinleştirdikten sonra makinenizi yeniden başlatın.

  5. Önyükleme yapılandırmanızda hipervizör başlatmasının etkinleştirildiğinden emin olun. Yükseltilmiş PowerShell'i çalıştırarak bunu doğrulayabilirsiniz:

    bcdedit /enum | findstr -i hypervisorlaunchtype
    

    hypervisorlaunchtype Offgörürseniz hipervizör devre dışı bırakılır. Bunu etkinleştirmek için yükseltilmiş bir powershell'de çalıştırın:

    bcdedit /set hypervisorlaunchtype Auto
    
  6. Buna ek olarak, 3. taraf hipervizörleriniz yüklüyse (VMware veya VirtualBox gibi) Hyper-V'yi (VMware 15.5.5+ ve VirtualBox 6+) destekleyen en son sürümlerde olduğundan veya devre dışı olduklarından emin olun.

  7. Bu hatayı bir Azure Sanal Makinesinde alıyorsanız, Güvenilen Başlatma'nın devre dışı olduğundan emin olun. Güvenli Başlatma özelliğine sahip Azure sanal makinelerinde iç içe sanallaştırma desteklenmez.

Sanal Makinede Hyper-V çalıştırırken İç İçe Sanallaştırma Yapılandırma hakkında daha fazla bilgi edinin.

WSL'nin iş makinemde veya Kurumsal ortamda ağ bağlantısı yok

İş veya Kurumsal ortamlar, yetkisiz ağ trafiğini engellemek için yapılandırılmış Windows Defender Güvenlik Duvarı ayarlarına sahip olabilir. yerel kural birleştirme "Hayır" olarak ayarlanırsa WSL ağı varsayılan olarak çalışmaz ve yöneticinizin buna izin vermek için bir güvenlik duvarı kuralı eklemesi gerekir.

Aşağıdaki adımları izleyerek yerel kural birleştirme ayarını onaylayabilirsiniz:

Windows Güvenlik Duvarı ayarları ekran görüntüsü

  1. "Gelişmiş güvenlik özellikli Windows Defender Güvenlik Duvarı" açın (bu, Denetim Masası'ndaki "Windows Defender Güvenlik Duvarı"ndan farklıdır)
  2. "Yerel Bilgisayarda gelişmiş güvenlik özellikli Windows Defender Güvenlik Duvarı" sekmesine sağ tıklayın
  3. "Özellikler"i seçin
  4. Açılan yeni Pencerede "Genel Profil" sekmesini seçin
  5. "Ayarlar" bölümünün altında "Özelleştir"i seçin
  6. "Kural Birleştirme"nin "Hayır" olarak ayarlandığını görmek için açılan "Genel Profil ayarlarını özelleştir" penceresini işaretleyin. Bu, WSL'ye erişimi engeller.

Bu Güvenlik Duvarı ayarını değiştirme yönergelerini Hyper-V güvenlik duvarını yapılandırmabulabilirsiniz.

IPv6 devre dışı bırakıldığında WSL'nin ağ bağlantısı yok

IPv6 kayıt defteri değeri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters (REG_DWORD) DisabledComponentskullanılarak devre dışı bırakılırsa WSL ağ bağlantısı başarısız olabilir. Bkz. Gelişmiş kullanıcılar için Windows'ta IPv6'yı yapılandırma kılavuzu.

Konak sisteminde IPv6'nın devre dışı bırakılması gerekiyorsa, IPv6 protokol bağlamalarını doğrudan kaldırarak bunu yapmak için PowerShell kullanmanızı öneririz. Örneğin: Disable-NetAdapterBinding -Name "<MyAdapter>" -ComponentID ms_tcpip[6].

Vpn'e bağlandıktan sonra WSL'nin ağ bağlantısı yoktur

Windows'da bir VPN'e bağlandıktan sonra Bash ağ bağlantısını kaybederse bash içinden bu geçici çözümü deneyin. Bu geçici çözüm, /etc/resolv.confaracılığıyla DNS çözümlemesini el ile geçersiz kılmanıza olanak sağlar.

  1. VPN'in DNS sunucusunun aşağıdakileri yaptığını not edin:

    ipconfig.exe /all
    
  2. Var olan resolv.confbir kopyasını alın:

    sudo cp /etc/resolv.conf /etc/resolv.conf.bak
    
  3. Geçerli resolv.confbağlantısını kaldırın:

    sudo unlink /etc/resolv.conf
    
  4. Koş!

    sudo mv /etc/resolv.conf.bak /etc/resolv.conf
    
  5. /etc/wsl.conf düzenleyin ve bu içeriği dosyaya ekleyin. (Bu kurulum hakkında daha fazla bilgi Gelişmiş ayarlar yapılandırması) bulunabilir.

    [network]
    generateResolvConf=false
    
  6. Ve'i açın /etc/resolv.conf

    1. Otomatik oluşturma işlemini açıklayan bir açıklama içeren dosyadan ilk satırı silin.
    2. Yukarıdaki (1) dns girdisini DNS sunucuları listesinde ilk girdi olarak ekleyin.
    3. Dosyayı kapatın.

VPN bağlantısını kestikten sonra, değişiklikleri /etc/resolv.confolarak geri döndürmeniz gerekir. Bunu yapmak için şunları yapın:

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

WSL ile ilgili Genel Güvenli Erişim İstemcisi sorunları

Genel Güvenli Erişim İstemcisi (/entra/global-secure-access/how-to-install-windows-client), bir adı çözümlerken geçici bir adres döndürme özelliğine sahip olduğundan WSL bağlantısını etkileyebilir. Ardından bir ağ bağlantısı yapıldığında adres gerçek adresle değiştirilir. WSL trafiği GSA istemci kancalarının büyük bir bölümünün altına iletildiğinden bu durum WSL'yi bozabilir.

DNS Tüneli'nin (dnsTunneling=false) devre dışı bırakılması veya Yansıtılmış Modun (networkingMode=nat) devre dışı bırakılması önerilir.

NAT modunda WSL ile cisco Anyconnect VPN sorunları

Cisco AnyConnect VPN, yolları NAT'nin çalışmasını engelleyecek şekilde değiştirir. WSL 2'ye özgü bir geçici çözüm vardır: Cisco AnyConnect Secure Mobility İstemci Yöneticisi Kılavuzu, Sürüm 4.10 - AnyConnect sorunlarını giderme bölümüne bakın.

Yansıtılmış ağ modu açıkken VPN'lerle ilgili WSL bağlantı sorunları

Yansıtılmış ağ modu şu anda WSL Yapılandırma'da deneysel bir özelliktir. WSL'nin geleneksel NAT ağ mimarisi "Yansıtılmış ağ modu" adı verilen tamamen yeni bir ağ moduna güncelleştirilebilir. Deneysel networkingModemirroredolarak ayarlandığında, Uyumluluğu geliştirmek için Windows'ta sahip olduğunuz ağ arabirimleri Linux'a yansıtılır. Komut Satırı blogunda daha fazla bilgi edinin: WSL Eylül 2023 güncellemesi.

Bazı VPN'ler test edilmiştir ve WSL ile uyumsuz olduğu onaylanmıştır, örneğin:

  • "Bitdefender" sürüm 26.0.2.1
  • "OpenVPN" sürüm 2.6.501
  • "Mcafee Safe Connect" sürüm 2.16.1.124

WSL'de HttpProxy Yansıtma için autoProxy kullanırken dikkat edilmesi gerekenler

HTTP/S proxy aynalama, WSL Yapılandırma dosyasının autoProxybölümündeki ayarı kullanılarak yapılandırılabilir. Bu ayarı uygularken şu noktalara dikkat edin:

  • PAC Ara Sunucusu: WSL, ortam değişkenini ayarlayarak WSL_PAC_URL Ayarı Linux'ta yapılandıracaktır. Linux, PAC proxy'lerini varsayılan olarak desteklemez.
  • WSLENV ile etkileşimler: Kullanıcı tanımlı ortam değişkenleri bu özellik tarafından belirtilenlerden önceliklidir.

Etkinleştirildiğinde, Linux dağıtımlarınızdaki ara sunucu ayarları için aşağıdakiler geçerlidir:

  • HTTP_PROXYLinux ortam değişkeni, Windows HTTP proxy yapılandırmasında yüklü bulunan bir veya daha fazla HTTP proxy'sine ayarlanır.
  • Linux ortam değişkeni, HTTPS_PROXYWindows HTTPS proxy yapılandırmasında yüklü bulunan bir veya daha fazla HTTPS proxy'sine ayarlanır.
  • NO_PROXYLinux ortam değişkeni, Windows yapılandırma hedeflerinde bulunan HTTP/S proxy'lerini atlayacak şekilde ayarlanır.
  • WSL_PAC_URLdışındaki her ortam değişkeni hem küçük harfe hem de büyük harfe ayarlanır. Örneğin: HTTP_PROXY ve http_proxy.

ZScaler'ın Windows proxy yapılandırmalarını sürekli olarak etkinleştirip devre dışı bırakması ve WSL'nin sürekli olarak "Konakta http proxy değişikliği algılandı" bildirimini göstermesine neden olan ZScaler yapılandırmalarının neden olduğu bilinen bir sorun vardır.

Komut Satırı blogunda daha fazla bilgi edinin: WSL Eylül 2023 güncellemesi.

DNS tüneli ile ağ konusunda dikkat edilmesi gerekenler

WSL İnternet'e bağlanamadığında, bunun nedeni Windows ana bilgisayarına yönelik DNS çağrısının engellenmiş olması olabilir. Bunun nedeni, WSL VM tarafından Windows konağına gönderilen DNS için ağ paketinin mevcut ağ yapılandırması tarafından engellenmesidir. DNS tüneli, windows ile doğrudan iletişim kurmak için bir sanallaştırma özelliği kullanarak bunu düzeltir ve DNS adının ağ paketi göndermeden çözülmesini sağlar. Bu özellik ağ uyumluluğunu geliştirmeli ve VPN, belirli bir güvenlik duvarı kurulumu veya diğer ağ yapılandırmalarınız olsa bile daha iyi İnternet bağlantısına sahip olmanıza izin vermelidir.

DNS Tüneli, dnsTunnelingdeneysel bölümündeki ayarı kullanılarak yapılandırılabilir. Bu ayarı uygularken şu noktalara dikkat edin:

  • WSL ile VPN kullanıyorsanız DNS tünel oluşturmayı açın. Birçok VPN, NRPT ilkelerini kullanır ve bu ilkeler yalnızca DNS tüneli etkinleştirildiğinde WSL DNS sorgularına uygulanır.
  • Linux dağıtımınızdaki /etc/resolv.conf dosyasının en fazla 3 DNS sunucusu sınırlaması vardır; Windows ise 3'ten fazla DNS sunucusu kullanabilir. DNS tüneli kullanmak bu sınırlamayı ortadan kaldırır; artık tüm Windows DNS sunucuları Linux tarafından kullanılabilir.
  • WSL, Windows DNS son eklerini aşağıdaki sırayla kullanır (Windows DNS istemcisi tarafından kullanılan sıralamaya benzer):
    1. Genel DNS son ekleri
    2. Tamamlayıcı DNS sonekleri
    3. Arabirim başına DNS sonekleri
    4. Windows'da DNS şifrelemesi (DoH, DoT) etkinleştirilirse, şifreleme WSL'den DNS sorgularına uygulanır. Linux içinde DoH, DoT'yi etkinleştirmek isteyen kullanıcıların DNS tünellerini devre dışı bırakmaları gerekir.
  • Docker Desktop tarafından yönetilen Docker kapsayıcılarından gelen DNS sorguları DNS tünellerini atlar. Docker Desktop'ın, Docker kapsayıcılarından DNS sorgularına ana bilgisayar DNS ayarlarını ve ilkelerini uygulamanın kendi yolu (DNS tünelinden farklı) vardır.
  • DNS tünelinin başarıyla etkinleştirilmesi için wsl.conf dosyasındaki generateResolvConf seçeneği devre dışı bırakılmamalıdır.
  • DNS tüneli etkinleştirildiğinde, generateHosts wsl.conf dosyasındaki seçenek yoksayılır (Windows DNS konakları dosyası Linux /etc/hosts dosyasına kopyalanmaz). Windows konakları dosyasındaki ilkeler, dosyanın Linux'ta kopyalanması gerekmeden Linux'tan dns sorgularına uygulanır.

Komut Satırı blogunda daha fazla bilgi edinin: WSL Eylül 2023 güncellemesi.

Windows ana bilgisayarı tarafından WSL Sanal Makinesine gelen trafiği yönlendirmeyle ilgili sorunlar

Yansıtılmış ağ modu kullanılırken (deneysel networkingModemirroredolarak ayarlanır), Windows konağı tarafından alınan bazı gelen trafik hiçbir zaman Linux VM'ye yönlendirilmeyecektir. Bu trafik aşağıdaki gibidir:

  • UDP bağlantı noktası 68 (DHCP)
  • TCP bağlantı noktası 135 (DCE uç nokta çözümlemesi)
  • TCP bağlantı noktası 1900 (UPnP)
  • TCP bağlantı noktası 2869 (SSDP)
  • TCP bağlantı noktası 5004 (RTP)
  • TCP bağlantı noktası 3702 (WSD)
  • TCP bağlantı noktası 5357 (WSD)
  • TCP bağlantı noktası 5358 (WSD)

WSL, yansıtılmış ağ modunu kullanırken belirli Linux ağ ayarlarını otomatik olarak yapılandıracaktır. Yansıtılmış ağ modu kullanılırken bu ayarların kullanıcı yapılandırmaları desteklenmez. WSL'nin yapılandıracağı ayarların listesi aşağıdadır:

Ayar Adı Değer
https://sysctl-explorer.net/net/ipv4/accept_local/ Etkin (1)
https://sysctl-explorer.net/net/ipv4/route_localnet/ Etkin (1)
https://sysctl-explorer.net/net/ipv4/rp_filter/ Devre Dışı (0)
https://sysctl-explorer.net/net/ipv6/accept_ra/ Devre Dışı (0)
https://sysctl-explorer.net/net/ipv6/autoconf/ Devre Dışı (0)
https://sysctl-explorer.net/net/ipv6/use_tempaddr/ Devre Dışı (0)
addr_gen_mode Devre Dışı (0)
ipv6'yı devre dışı bırak Devre Dışı (0)
https://sysctl-explorer.net/net/ipv4/arp_filter/ Etkin (1)

WSL2'de varsayılan ağ ad alanı altında çalışırken Aynalanmış ağ modunun etkinleştirildiği Docker konteyneri sorunları

Yayımlanan bağlantı noktalarına (docker run –publish/–p) sahip Docker Desktop kapsayıcılarının oluşturulamamasıyla ilgili bilinen bir sorun vardır. WSL ekibi bu sorunu çözmek için Docker Desktop ekibiyle birlikte çalışmaktadır. Sorunu geçici olarak çözmek için Docker kapsayıcısında konağın ağ ad alanını kullanın. Komutunda kullanılan --network host seçeneği kullanarak docker run ağ türünü ayarlayın. Alternatif bir geçici çözüm, yayımlanan bağlantı noktası numarasını ignoredPortsdeneysel bölümünün ayarında listelemektir.

Docker kapsayıcısı, Ağ Yöneticisi çalışırken sorunlar yaratıyor

Ağ Yöneticisi hizmetinin çalıştığı Docker kapsayıcılarında bilinen bir sorun vardır. Belirtiler, sistemle geri döngü bağlantıları kurmaya çalışırken meydana gelen hataları içerir. WSL ağlarının düzgün yapılandırılması için Ağ Yöneticisi hizmetinin durdurulması önerilir.

sudo systemctl disable network-manager.service

WSL'de .local adlarını çözümleme

Konak adlarını geleneksel DNS sunucusuna gerek kalmadan yerel ağ içindeki IP adreslerine çözümlemek için genellikle .local adları kullanılır. Bu, işlev görmek için çok noktaya yayın trafiğine dayanan mDNS (Çok Noktaya Yayın DNS) protokolü aracılığıyla gerçekleştirilir.

networkingMode olarak NATayarlayın:

Şu anda, DNS tüneli etkinleştirildiğinde bu özellik desteklenmez. .local adlarının çözümlemesini etkinleştirmek için aşağıdaki çözümleri öneririz:

  • DNS tünel oluşturma özelliğini devre dışı bırakın.
  • Yansıtılmış ağ modunu kullanın.

networkingMode olarak Mirroredayarlayın:

Not: Aşağıdaki işlevlere sahip olmak için WSL derlemesi 2.3.17 veya üzeri bir sürümde olmanız gerekir.

Yansıtılmış mod çok noktaya yayın trafiğini desteklediğinden, .local adlarını çözümlemek için mDNS (Çok Noktaya Yayın DNS) protokolü kullanılabilir. Linux, varsayılan olarak mDNS'yi desteklemez, bu nedenle destekleyecek şekilde yapılandırılmalıdır. Yapılandırmanın bir yolu aşağıdaki iki adımı kullanmaktır:

  1. libnss-mdns paketini yükleme

    sudo apt-get install libnss-mdns
    

    *Paket libnss-mdns , GNU C Kitaplığı'nın (glibc) GNU Ad Hizmet Anahtarı (NSS) işlevselliği için Çok Noktaya Yayın DNS (mDNS) aracılığıyla ana bilgisayar adı çözümlemesi sağlayan bir eklentidir. Bu paket, yaygın Unix/Linux programlarının geçici mDNS etki alanındaki .local adlarını çözümlemesine etkili bir şekilde olanak tanır.

  2. bölümdeki /etc/nsswitch.conf ayarı mdns_minimal etkinleştirmek hosts için dosyayı yapılandırın. Dosyanın örnek içeriği:

    />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
    

WSL'de DNS sonekleri

.wslconfig dosyasındaki yapılandırmalara bağlı olarak, WSL DNS sonekleri ile ilgili olarak aşağıdaki davranışları gösterir.

olarak networkingMode ayarlandığında NAT:

Olay 1: Varsayılan olarak Linux'ta hiçbir DNS soneki yapılandırılmamış

Olay 2: DNS tüneli etkinleştirildiyse (dnsTunneling .wslconfig olarak ayarlanır true ) Tüm Windows DNS sonekleri Linux'ta /etc/resolv.conf ayarında search yapılandırılır

Sonekler,/etc/resolv.conf dosyasında, Windows DNS istemcisinin bir adı çözümlerken sonekleri deneme sırasına benzer şekilde yapılandırılır: önce genel DNS sonekleri, sonra ek DNS sonekleri, sonra arabirim başına DNS sonekleri.

Windows DNS soneklerinde bir değişiklik olduğunda, bu değişiklik Linux'a otomatik olarak yansıtılır

Olay 3: DNS tüneli devre dışı bırakılmışsa ve SharedAccess DNS proxy'si devre dışıysa (dnsTunneling ve dnsProxy .wslconfig içinde olarak ayarlanmışsa false ). Linux'ta /etc/resolv.conf dosyasının "etki alanı" ayarında tek bir DNS soneki yapılandırılır

Windows DNS soneklerinde bir değişiklik olduğunda, bu değişiklik Linux'a yansıtılmaz

Linux'ta yapılandırılan tek bir DNS soneki, arabirim başına DNS sonekleri arasından seçilir (genel ve ek sonekler yoksayılır)

Windows'un birden çok arabirimi varsa, Linux'ta yapılandırılması gereken tek DNS sonekini seçmek için bir heuristik kullanılır. Örneğin, Windows'ta bir VPN arabirimi varsa, bu arabirimden sonek seçilir. VPN arabirimi yoksa, İnternet bağlantısı sağlama olasılığı en yüksek olan arabirimden sonek seçilir.

olarak networkingMode ayarlandığında Mirrored:

Tüm Windows DNS sonekleri Linux'ta /etc/resolv.conf ayarında search yapılandırılır

Sonekler NAT modundan /etc/resolv.conf dosyasında 2) ile aynı sırada yapılandırılır

Windows DNS soneklerinde bir değişiklik olduğunda, bu değişiklik Linux'a otomatik olarak yansıtılır

Not

ek DNS son ekleri Windows'ta kullanılarak yapılandırılabilir.

DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST).

WSL'de DNS sorunlarını giderme

WSL NAT modunda bir kapsayıcı başlattığında varsayılan DNS yapılandırması, Windows Ana Bilgisayarı'ndaki NAT cihazının WSL kapsayıcısı için DNS "sunucusu" olarak hizmet vermesini sağlamaktır. DNS sorguları WSL kapsayıcısından Windows Ana Bilgisayar üzerindeki bu NAT cihazına gönderildiğinde, DNS paketi NAT cihazından Ana Bilgisayar üzerindeki paylaşılan erişim hizmetine iletilir; yanıt ise ters yönünde WSL kapsayıcısına geri gönderilir. Bu paylaşımlı erişim için paket iletme işlemi, WSL başlangıçta WSL kapsayıcısı için NAT sanal ağı oluşturmasını HNS'den istediğinde, HNS hizmeti tarafından oluşturulan bu gelen DNS paketine izin vermek amacıyla bir Güvenlik Duvarı kuralı gerektirir.

NAT - paylaşılan erişim tasarımı nedeniyle, bazı bilinen yapılandırmalar WSL'den isim çözümlemeyi engelleyebilir.

  1. Bir Kuruluş, yerel olarak tanımlanmış Güvenlik Duvarı kurallarına izin vermeyen ilkeyi göndererek yalnızca Kurumsal ilke tanımlı kurallara izin verebilir.

    Bu bir Kuruluş tarafından ayarlandığında, yerel olarak tanımlanmış bir kural olduğundan HNS tarafından oluşturulan Güvenlik Duvarı kuralı yoksayılır.

    Bu yapılandırmanın çalışması için, Kuruluş'un paylaşılan erişim hizmetine 53 numaralı UDP bağlantı noktasına izin verecek bir Güvenlik Duvarı kuralı oluşturması gerekir veya WSL, DNS Tüneli kullanacak şekilde ayarlanabilir.

    Aşağıdakini çalıştırarak bunun yerel olarak tanımlanmış Güvenlik Duvarı kurallarına izin vermeyecek şekilde yapılandırılıp yapılandırılmadığını görebilirsiniz. Bunun 3 profilin de ayarlarını göstereceğini unutmayın: Etki Alanı, Özel ve Genel. Herhangi bir profilde ayarlanırsa, WSL vNIC'ye bu profil atanırsa paketler engellenir (varsayılan değerdir Public). Bu yalnızca PowerShell'de döndürülen ilk Güvenlik Duvarı profilinin bir parçacığıdır:

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

    AllowLocalFirewallRules: False , HNS tarafından olduğu gibi yerel olarak tanımlanmış güvenlik duvarı kurallarının uygulanmayacağı veya kullanılmayacağı anlamına gelir.

  2. Enterprise, tüm gelen kuralları engelleyen Grup İlkesi ve MDM ilkesi ayarlarını aşağı itebilir.

    Bu ayarlar herhangi bir Allow-Inbound Güvenlik Duvarı kuralını geçersiz kılar. Bu ayar, HNS tarafından oluşturulan UDP Güvenlik Duvarı kuralını engeller ve böylece WSL'nin adları çözümlemesini engeller.

    Bu yapılandırmanın çalışması için WSL'nin DNS Tüneli kullanacak şekilde ayarlanması gerekir. Bu ayar her zaman NAT DNS proxy'sini engeller.

    Grup İlkesi'nden :

    Bilgisayar Yapılandırması \ Yönetim Şablonları \ Ağ \ Ağ Bağlantıları \ Windows Defender Güvenlik Duvarı \ Etki Alanı Profili | Standart Profil

    "Windows Defender Güvenlik Duvarı: Özel durumlara izin verme" - Etkin

    MDM İlkesinden:

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

    ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Korumalı

    ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Korumalı

    Bunun gelen Güvenlik Duvarı kurallarına izin vermeyecek şekilde yapılandırılıp yapılandırılmadığını görmek için aşağıdakileri çalıştırabilirsiniz (güvenlik duvarı profillerindeki yukarıdaki uyarılara bakın). Bu yalnızca PowerShell'de döndürülen ilk Güvenlik Duvarı profilinin bir parçacığıdır:

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

    AllowInboundRules: False , gelen Güvenlik Duvarı kurallarının uygulanmayacak olduğu anlamına gelir.

  3. Kullanıcı, Windows Güvenliği ayarı uygulamalarından geçer ve "İzin verilen uygulamalar listesindekiler de dahil olmak üzere tüm gelen bağlantıları engeller" denetimini denetler.

    Windows, yukarıda #2'de değinilen bir Kurum tarafından uygulanabilecek aynı ayar için kullanıcı tercihi desteği sunar. Kullanıcılar "Windows Güvenliği" ayarları sayfasını açabilir, "Güvenlik duvarı ve ağ koruması" seçeneğini belirleyebilir, yapılandırmak istedikleri Güvenlik Duvarı Profilini (Etki Alanı, Özel veya Genel) seçer ve "Gelen bağlantılar" altında "İzin verilen uygulamalar listesindekiler de dahil olmak üzere tüm gelen bağlantıları engeller" etiketli denetimi kontrol edebilir.

    Bu, Genel profil için ayarlanırsa (bu WSL vNIC için varsayılan profildir), HNS tarafından paylaşılan erişime udp paketlerine izin vermek için oluşturulan Güvenlik duvarı kuralı engellenir.

    Bu ayarın NAT DNS proxy yapılandırmasının WSL'den çalışması için işaretlenmemesi gerekir, WSL veya WSL DNS Tüneli kullanacak şekilde ayarlanabilir.

  4. DNS paketlerinin paylaşılan erişime izin vermesine yönelik HNS Güvenlik Duvarı kuralı, önceki bir WSL arabirim tanımlayıcısına başvurarak geçersiz hale gelebilir.

    Bu, en son Windows 11 sürümüyle düzeltilen HNS içindeki bir kusurdur. Önceki sürümlerde, bu oluşursa kolayca bulunamaz, ancak basit bir çözüm vardır:

    • WSL'i durdur

      wsl.exe –shutdown
      
    • Eski HNS Güvenlik Duvarı kuralını silin. Bu PowerShell komutunun çoğu durumda çalışması gerekir:

      Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
      
    • Tüm HNS uç noktalarını kaldırın. Not: MDAG veya Windows Korumalı Alanı gibi diğer kapsayıcıları yönetmek için HNS kullanılıyorsa, bunlar da durdurulmalıdır.

      hnsdiag.exe delete all
      
    • HNS hizmetini yeniden başlatma veya başlatma

      Restart-Service hns
      
    • WSL yeniden başlatıldığında HNS, WSL arabirimini doğru şekilde hedefleyen yeni Güvenlik Duvarı kuralları oluşturur.

Windows'da Ağ Erişimi Sorunlarını Giderme

Ağ erişiminiz yoksa, bunun nedeni yanlış yapılandırma olabilir. Lütfen FSE sürücüsünün çalışıp çalışmadığını denetleyin:

Get-Service FSE

Bu, FSE'nin çalıştığını göstermiyorsa lütfen kayıt defteri değerinin PortTrackerEnabledMode şu kayıt defteri anahtarından çıkıp çıkmadığını denetleyin:

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

FSE çalışmıyorsa veya yüklü değilse ve PortTrackerEnabledMode varsa, lütfen bu kayıt defteri değerini silin ve yeniden başlatın

Hayalet bağdaştırıcıları silmenin manuel yolu

Hayalet bağdaştırıcılarveya hayalet Tak ve Çalıştır (PnP) cihazları, sisteminizde görünen ancak fiziksel olarak bağlı olmayan donanım bileşenlerini ifade eder. Bu "hayalet" cihazlar sistem ayarlarınızda karışıklığa ve karışıklığa neden olabilir. Sanal Makinede (VM) WSL çalıştırırken hayalet bağdaştırıcılar görürseniz, bu sanal PnP cihazlarını bulmak ve silmek için bu elle uygulanan adımları izleyin. Microsoft, el ile müdahale gerektirmeyen otomatik bir çözüm üzerinde çalışmaktadır. Daha fazla bilgi yakında sunulacaktır.

  1. Cihaz Yöneticisi'ni açma

  2. Gizli cihazları göster > görüntüle

    Cihaz Yöneticisi gizli cihazları göster menüsünün ekran görüntüsü

  3. Ağ bağdaştırıcılarını açma

    Ağ bağdaştırıcıları listesi ekran görüntüsü

  4. Hayalet ağ bağdaştırıcısına sağ tıklayın ve Cihazı Kaldır seçin

    Ağ listesinden bir hayalet pnp'ye sağ tıklamanın ve cihazı kaldır'ı seçmenin ekran görüntüsü

WSL'yi başlatma veya dağıtım yükleme bir hata kodu döndürür

GitHub'daki WSL deposunda WSL günlüklerini toplama yönergelerini izleyerek ayrıntılı günlükleri toplayın ve GitHub'ımızda bir sorun açın.

WSL güncelleştiriliyor

Linux için Windows Alt Sistemi'nin güncelleştirilmesini gerektirebilecek iki bileşeni vardır.

  1. Linux için Windows Alt Sistemi'ni güncelleştirmek için lütfen aşağıdaki komutu kullanın.

    wsl.exe --update
    
  2. Belirli Linux dağıtımı kullanıcı ikili dosyalarını güncelleştirmek için lütfen güncelleştirmek istediğiniz Linux dağıtımında aşağıdaki komutu kullanın.

    apt-get update | apt-get upgrade
    

Apt-get yükseltme hataları

Bazı paketler henüz uygulamadığımız özellikleri kullanır. örneğin udevhenüz desteklenmiyor ve çeşitli apt-get upgrade hatalara neden oluyor.

udevile ilgili sorunları düzeltmek için aşağıdaki adımları izleyin:

  1. Önce aşağıdakileri /usr/sbin/policy-rc.d'a yazın ve değişikliklerinizi kaydedin.

    #!/bin/sh
    exit 101
    
  2. /usr/sbin/policy-rc.d'a yürütme izinleri ekleyin.

    chmod +x /usr/sbin/policy-rc.d
    
  3. Aşağıdaki komutları çalıştırın:

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

Yükleme sırasında "Hata: 0x80040306"

Bunun eski konsolu desteklemediğimiz gerçeğiyle ilgili olması gerekir. Eski konsolu kapatmak için:

  1. cmd.exe'ı aç
  2. Başlık çubuğuna sağ tıklayın -> Özellikler -> Eski konsolu kullan seçeneğinin işaretini kaldırın
  3. Tamam'a tıklayın

Windows update sonrasında "Hata: 0x80040154"

Linux için Windows Alt Sistemi özelliği bir Windows güncelleştirmesi sırasında devre dışı bırakılabilir. Böyle bir durumda Windows özelliğinin yeniden etkinleştirilmesi gerekir. Linux için Windows Alt Sistemi'ni etkinleştirme yönergeleri, El ile Yükleme Kılavuzubulunabilir.

Görüntüleme dilini değiştirme

WSL yüklemesi, Ubuntu yerel ayarını Windows yüklemenizin yerel ayarıyla eşleşecek şekilde otomatik olarak değiştirmeye çalışır. Bu davranışı istemiyorsanız, yükleme tamamlandıktan sonra Ubuntu yerel ayarını değiştirmek için bu komutu çalıştırabilirsiniz. Bu değişikliğin geçerli olması için bash.exe yeniden başlatmalısınız.

Aşağıdaki örnekte yerel ayar en-USolarak değiştiriliyor.

sudo update-locale LANG=en_US.UTF8

Windows sistem geri yükleme işleminden sonra yükleme sorunları

  1. %SystemRoot%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux klasörünü silin.

    Uyarı

    İsteğe bağlı özelliğiniz tamamen yüklüyse ve çalışıyorsa bunu yapmayınız.

  2. WSL isteğe bağlı özelliğini etkinleştirme (henüz etkinleştirilmediyse)

  3. Yeniden başlatma

  4. lxrun /uninstall /full

  5. Bash'i yükleme

WSL'de İnternet erişimi yok

Bazı kullanıcılar WSL'de İnternet erişimini engelleyen belirli güvenlik duvarı uygulamalarıyla ilgili sorunlar bildirdi. Bildirilen güvenlik duvarları şunlardır:

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

Bazı durumlarda güvenlik duvarının kapatılması erişime izin verir. Bazı durumlarda yalnızca güvenlik duvarının yüklü olması erişimi engeller.

Microsoft Defender Güvenlik Duvarı'nı kullanıyorsanız, "İzin verilen uygulamalar listesindekiler de dahil olmak üzere tüm gelen bağlantıları engeller" seçeneğinin işaretini kaldırmak erişime izin verir.

Ping kullanılırken İzin Reddedildi hatası

Windows Yıldönümü Güncelleştirmesi, sürüm 1607 için Windows'taki yönetici ayrıcalıklarının WSL'de çalıştırılması ping gerekir. komutunu çalıştırmak pingiçin Windows'ta Ubuntu'da yönetici olarak Bash'i veya yönetici ayrıcalıklarıyla bir PowerShell isteminden komutunu çalıştırın bash.exe .

Windows'un sonraki sürümlerinde, Derleme 14926+yönetici ayrıcalıkları artık gerekli değildir.

Bash dondu

Bash ile çalışırken bash'in askıda kaldığını (veya kilitlendiğini) ve girişlere yanıt vermediğini fark ederseniz, bellek dökümünü toplayıp bildirerek sorunu tanılamamıza yardımcı olun. Bu adımların sisteminizi kilitleyeceğini unutmayın. Bu konuda rahat değilseniz bunu yapmayın veya bunu yapmadan önce çalışmanızı kaydedin.

Bellek dökümü toplamak için:

  1. Bellek dökümü türünü "tam bellek dökümü" olarak değiştirin. Döküm türünü değiştirirken mevcut türünüzü not alın.

  2. Klavye denetimini kullanarak kilitlenmeyi yapılandırmak için adımlarını kullanın.

  3. Askıda kalma veya kilitlenmeyi yeniden üretin.

  4. (2) anahtar dizisini kullanarak sistemi çökert.

  5. Sistem kilitlenecek ve bellek dökümünü toplayacak.

  6. Sistem yeniden başlatıldıktan sonra değerini olarak memory.dmpbildirinsecure@microsoft.com. Döküm dosyasının %SystemRoot%\memory.dmp varsayılan konumu veya C:\Windows\memory.dmp sistem sürücüsü olup olmadığını C: gösterir. E-postada dökümün WSL veya Windows'ta Bash ekibiyle ilgili olduğunu unutmayın.

  7. Bellek dökümü türünü özgün ayara geri yükleyin.

Derleme numaranızı kontrol edin

Bilgisayarınızın mimarisini ve Windows derleme numarasını bulmak için Ayarlar>Sistem>Hakkında'yı açın

İşletim Sistemi Derlemesi ve Sistem Türü alanlarını bulun. Derleme ve Sistem Türü alanlarının ekran görüntüsü

Windows Server derleme numaranızı bulmak için PowerShell'de aşağıdakileri çalıştırın:

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

WSL'nin etkinleştirildiğini onaylayın

Yükseltilmiş bir PowerShell penceresinde aşağıdakileri çalıştırarak Linux için Windows Alt Sistemi'nin etkinleştirildiğini onaylayabilirsiniz:

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

OpenSSH-Server bağlantı sorunları

SSH sunucunuzu bağlamaya çalışırken şu hatayla başarısız oldu: "Bağlantı 127.0.0.1 bağlantı noktası 22 tarafından kapatıldı".

  1. OpenSSH Sunucunuzun çalıştığından emin olun:

    sudo service ssh status
    

    ve şu öğreticiyi izlediniz: https://ubuntu.com/server/docs/service-openssh

  2. Sshd hizmetini durdurun ve hata ayıklama modunda sshd'yi başlatın:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Başlangıç günlüklerini denetleyin ve HostKeys'in kullanılabilir olduğundan ve aşağıdaki gibi günlük iletilerini görmediğinize emin olun:

    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
    

Eğer bu tür iletiler görürseniz ve /etc/ssh/altında anahtarlar eksikse, anahtarları yeniden oluşturmanız veya openssh-server'ı yüklemek için&'i temizlemeniz gerekir.

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

WSL isteğe bağlı özelliği etkinleştirilirken "Başvurulan derleme bulunamadı."

Bu hata, hatalı yükleme durumunda olmakla ilgilidir. Bu sorunu çözmek için lütfen aşağıdaki adımları tamamlayın:

  • PowerShell'den WSL özelliğini etkinleştir komutunu çalıştırıyorsanız, başlat menüsünü açıp 'Windows özelliklerini aç veya kapat' araması yaparak GUI kullanmayı deneyin ve listeden isteğe bağlı bileşeni yükleyecek 'Linux için Windows Alt Sistemi'ni seçin.

  • Ayarlar, Güncelleştirmeler'e gidip 'Güncelleştirmeleri Denetle' seçeneğine tıklayarak Windows sürümünüzü güncelleştirin

  • Her ikisi de başarısız olursa ve WSL'ye erişmeniz gerekiyorsa, uygulamalarınızın ve dosyalarınızın korunmasını sağlamak için yükleme medyasını kullanarak Windows'u yeniden yükleyip 'Her Şeyi Koru' seçeneğini belirleyerek yükseltmeyi göz önünde bulundurun. Bunun nasıl yapılacağını öğrenmek için Windows 10'u yeniden yükle sayfasındabulabilirsiniz.

Bu hatayı görüyorsanız:

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

Bunu düzeltmek için /etc/wsl.conf dosyasına aşağıdakileri ekleyin:

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

Bu komutun eklenmesi meta verileri içerir ve WSL'den görülen Windows dosyalarındaki dosya izinlerini değiştirir. Daha fazla bilgi için lütfen Dosya Sistemi İzinleri bakın.

Windows üzerinde OpenSSH kullanarak WSL'yi uzaktan kullanamıyor

Windows'da openssh-server kullanıyor ve WSL'ye uzaktan erişmeye çalışıyorsanız, şu hatayı görürsünüz: Dosyaya sistem tarafından erişilemiyor.

WSL'nin Store sürümünü kullanırken bilinen bir sorun 'dir. WSL 1'i veya WSL'nin Windows içi sürümünü kullanarak bu sorunu bugün aşabilirsiniz. Daha fazla bilgi için bkz. Microsoft Store'da WSL .

Windows komutlarını çalıştırmak bir dağıtım içinde başarısız oluyor

Microsoft Store 'daki bazı dağıtımlar, Windows komutlarını kutudan çıktığı gibi çalıştırmak için henüz tam uyumlu değildir. çalışırken veya başka bir Windows komutunda powershell.exe /c start . "-bash: powershell.exe: komut bulunamadı" hatası alırsanız, bu sorunu şu adımları izleyerek çözebilirsiniz:

  1. WSL dağıtımınızda echo $PATHçalıştırın. Şunları içermiyorsa: /mnt/c/Windows/system32 standart PATH değişkenini yeniden tanımlayan bir şey var.
  2. cat /etc/profileile profil ayarlarını denetleyin. PATH değişkeninin atamasını içeriyorsa, path atama bloğunu # karakteriyle açıklama satırı yapmak için dosyayı düzenleyin.
  3. cat /etc/wsl.conf wsl.conf dosyasının mevcut olup olmadığını denetleyin ve appendWindowsPath=falseiçermediğinden emin olun, aksi takdirde açıklama satırı yapın.
  4. Ardından dağıtım adı yazarak wsl -t <Distro> dağıtımı yeniden başlatın veya PowerShell'de komutunu çalıştırın wsl --shutdown .

WSL 2 yüklendikten sonra önyükleme yapılamıyor

WSL 2'yi yükledikten sonra önyükleme yapamayan kullanıcıları etkileyen bir sorunun farkındayız. Bu sorunları tamamen teşhis ederken, kullanıcılar arabellek boyutunu değiştirmenin veya doğru sürücüleri yüklemenin bu sorunu gidermeye yardımcı olabileceğini bildirdi. GitHub'daki numaralı sorunu bu sorunla ilgili en son güncelleştirmeleri görmek için inceleyin.

ICS devre dışı bırakıldığında WSL 2 hataları

İnternet Bağlantısı Paylaşımı (ICS), WSL 2'nin gerekli bir bileşenidir. ICS hizmeti, Ana Bilgisayar Ağ Hizmeti (HNS) tarafından WSL 2'nin NAT, DNS, DHCP ve konak bağlantı paylaşımı için dayandığı temel sanal ağı oluşturmak için kullanılır.

ICS hizmetini (SharedAccess) devre dışı bırakmak veya grup ilkesi aracılığıyla ICS'yi devre dışı bırakmak WSL HNS ağının oluşturulmasını engeller. Bu, yeni bir WSL sürüm 2 görüntüsü oluşturulurken hatalara ve sürüm 1 görüntüsünü sürüm 2'ye dönüştürmeye çalışırken aşağıdaki hataya neden olur: Uç nokta eşleyicisinden başka uç nokta yok.

WSL 2 gerektiren sistemlerin ICS hizmetini (SharedAccess) varsayılan başlangıç durumunda, El ile (Tetikleyici Başlangıç) bırakması ve ICS'yi devre dışı bırakan tüm ilkelerin üzerine yazılması veya kaldırılması gerekir. ICS hizmetinin devre dışı bırakılması WSL 2'yi bozar ve ICS'nin devre dışı bırakılması önerilmez, ancak ICS'nin bazı bölümleri bu yönergeler kullanılarak devre dışı bırakılabilir

Windows ve WSL'nin eski sürümlerini kullanma

Windows ve WSL'nin Windows 10 Creators Update (Ekim 2017, Derleme 16299) veya Yıldönümü Güncelleştirmesi (Ağustos 2016, Derleme 14393) gibi eski bir sürümünü çalıştırıyorsanız dikkate almak için birkaç fark vardır. En son Windows sürümüne güncelleştirmenizi öneririz, ancak bu mümkün değilse, aşağıdaki farklardan bazılarını özetledik.

Birlikte çalışabilirlik komutu farklılıkları:

  • bash.exe wsl.exeile değiştirildi. Linux komutları PowerShell'den çalıştırılabilir, ancak önceki Windows sürümleri için komutunu kullanmanız bash gerekebilir. Örneğin: C:\temp> bash -c "ls -la". WSL komutları bash -c'a geçirilir ve değişiklik yapılmadan WSL işlemine aktarılır. Dosya yolları WSL biçiminde belirtilmeli ve ilgili karakterlerden kaçmak için dikkatli olunmalıdır. Örneğin: C:\temp> bash -c "ls -la /proc/cpuinfo" veya C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Belirli bir dağıtımda hangi komutların kullanılabilir olduğunu görmek için [distro.exe] /?çalıştırın. Örneğin, Ubuntu ile: C:\> ubuntu.exe /?.
  • Windows yolu WSL $PATH'de bulunur.
  • Windows 10'un önceki bir sürümünde WSL dağıtımından bir Windows aracı çağırırken, dizin yolunu belirtmeniz gerekir. Örneğin, WSL komut satırınızdan Windows Not Defteri uygulamasını çağırmak için şunu girin: /mnt/c/Windows/System32/notepad.exe
  • Varsayılan kullanıcıyı root olarak değiştirmek için PowerShell'de şu komutu kullanın: C:\> lxrun /setdefaultuser root ve ardından oturum açmak için Bash.exe çalıştırın: C:\> bash.exe. distributions password komutunu kullanarak parolanızı sıfırlayın: $ passwd username ve ardından Linux komut satırını kapatın: $ exit. Windows komut isteminden veya PowerShell'den varsayılan kullanıcınızı normal Linux kullanıcı hesabınıza geri sıfırlayın: C:\> lxrun.exe /setdefaultuser username.

WSL'nin eski sürümünü kaldırma

WSL'yi başlangıçta Creators güncelleştirmesinden (Ekim 2017, Derleme 16299) önceki bir Windows 10 sürümüne yüklediyseniz, yüklediğiniz eski Linux dağıtımından Microsoft Store aracılığıyla yüklenen daha yeni bir dağıtıma gerekli dosyaları, verileri vb. geçirmenizi öneririz. Eski dağıtımı makinenizden kaldırmak için, komut satırından veya PowerShell örneğinden aşağıdakileri çalıştırın: wsl --unregister Legacy. Ayrıca Windows Dosya Gezgini'ni veya PowerShell: %LocalAppData%\lxss\kullanarak Remove-Item -Recurse $env:localappdata/lxss/ klasörünü (ve tüm alt içeriğini) silerek eski eski dağıtımı el ile kaldırma seçeneğiniz de vardır.

Hata kodu 0x8000FFFF beklenmeyen hata

Bu hata kodu genellikle WSL ile linux dağıtımını (Ubuntu gibi) yüklemeye veya kullanmaya çalışırken sistem işlemleri sırasında beklenmeyen veya "yıkıcı" bir hata olduğu anlamına gelir. Bu hataya yol açabilecek birçok neden vardır. Aşağıdakileri denetleyerek başlayın:

  • Bu bir izin sorunu mu? Komut satırınızda beklenen kullanıcı olarak oturum açtığınızı ve WSL ile Linux dağıtımı yüklerken gerekli Yönetici ayrıcalıklarına sahip olup olmadığınızı denetleyin. ("Yönetici Olarak Çalıştır"ı seçmek için Terminal veya Komut Satırı görev çubuğu simgesine sağ tıklayın.)
  • WSL'yi en son sürüme güncelleştirdiniz mi? En son sürüme güncelleştirmek için komutunu kullanın: wsl --update Windows'un en son sürümüne de güncelleştirmek isteyebilirsiniz.
  • komutunu doğru kullandığınızdan wsl --install ve yüklemeyi hedeflediğiniz Linux dağıtımını belirttiğinizden emin olun.
  • şu komutu kullanarak WSL'yi kapatıp yeniden başlatmayı deneyin: wsl --shutdown.
  • Windows Server kullanıyorsanız, sürümünüzün güncel olduğundan emin olun ve Windows Server Yükleme Kılavuzu'nu izleyin.
  • Bunun eksik veya bozuk sistem dosyalarıyla ilgili olabileceğinden şüpheleniyorsanız, yükseltilmiş bir komut isteminden (Yönetici Olarak Çalıştır) sistem dosyalarını tarayabilir ve onarabilir ve/veya Windows işletim sistemi görüntüsünü onarabilirsiniz. Bozuk veya eksik Windows sistem dosyalarını taramak ve onarmak için komutunu kullanın: SFC /SCANNOW. Windows görüntüsünü onarmak için komutunu kullanın: DISM /Online /Cleanup-Image /RestoreHealth.
  • İlgili WSL ürün deposu sorunu 9420'ye bakın.