Linux için Windows Alt Sistemi Sorun Giderme Kılavuzu

Bu kılavuzda WSL'deki sorunların nasıl giderileceği ve bunların nereden geldikleri belirlenir.

Mimari hakkında hızlı bir not

Soruna neyin neden olduğunu saptamaya yardımcı olmak için yığının neresinde olduğunu bulmalıyız.

Bir Linux ikili dosyası WSL'de çağrıldığında (yaklaşık olarak) bu katmanlardan geçer ve her biri hatanın geldiği yer olabilir:

graph TD;
    id1["Linux binary in userspace"]-->id2["Linux distro"];
    id2["Linux distro"]-->id3["WSL's stack"];
    id4["WSL's stack"]-->id5["Physical hardware"];

Bu yığını sırayla inceleyeceğiz ve hata kaynağının bu bölümden olup olmadığını belirleme konusunda size yol gösteririz.

kullanıcı alanında Linux ikili dosyası

Öncelikle bunun Linux ikili dosyasının kendisinden kaynaklanan bir hata olup olmadığını denetlememiz gerekir. Bunu yapmanın en kolay yolu, bu hatanın gerçek bir Linux makinesinde meydana gelip gelmediğini görmektir (Tercih edilen, çıplak donanım veya iyi bir karşılaştırma için Hyper-V'de tam Ubuntu sürümü çalıştırmak). Gerçek bir Linux makinesinde de aynı şekilde hata oluşursa bunun Linux ikili dosyası veya dağıtım olduğunu biliyoruz demektir.

Alternatif olarak, neler olduğunu belirlemek için komutunu çalıştırabilirsiniz strace . Bu komut, Linux sisteminin Linux ikili dosyasının yaptığı çağrıları gösterir ve neye erişmeye çalıştığını ve nerede başarısız olabileceğini belirleyebilirsiniz. Bu kılavuz yığınlarda hata ayıklama strace hakkında tam bir kılavuz sunmaz (aksi halde çok uzun olur), bu nedenle bir örneğe göz atalım:

Kullanıcı, WSL komutunun xeyes WSL'de takıldığını, ancak bir Linux makinesinde takılmadığını fark eder. Çalıştırmak strace xeyes, komutun openat sistem çağrısında takıldığını gösterir. Bu, Linux çekirdeğinin openat çağrısını çalıştırmaya çalışırken takılı kaldığını ve bunun da sorunun ikili dosyada olmadığını indike ettiğini belirtir.

Sorun Linux ikili dosyasındaysa yapılması gerekenler

WSL'de bulunan Linux ikili dosyaları ilgili sahipleri tarafından sağlanır ve doğrudan Microsoft'a ait değildir. Linux ikilisinde bir sorun görürseniz lütfen bu ikilinin sahibine doğrudan bildirin.

Linux dağıtımı

Bazı hatalar Linux dağıtımının kendisinden de gelebilir. WSL'deki Linux dağıtımları yalnızca Linux ikili dosyalarının bir koleksiyonu olduğundan yukarıdaki sorun giderme adımları da geçerlidir. Ancak Linux dağıtımı, paket yöneticisi gibi ikili dosyaların birbirleriyle etkileşim kurma şeklini büyük ölçüde etkileyebilecek önemli deneyimlerden sorumludur.

Bu sorun giderme işlemi için, yukarıda belirtilen tekniklerle aynı teknikleri uygular, sorunun Linux'ta yeniden üretilip üretilmediğini test eder ve hataya neden olan faktörü belirlemek için strace (ya da diğer hata kodları) kullanır ve bunun belirli bir Linux binary dosyasından mı kaynaklandığını belirlemeye çalışırsınız. Bu ikili dosya dağıtıma aitse, bu Linux dağıtımının bir sorunudur.

Sorun Linux dağıtımındaysa yapılması gerekenler

Linux ikili dosya hikayesine benzer şekilde, WSL dağıtımları bakımcıları tarafından sağlanmaktadır. Lütfen sorunu doğrudan etkilenen Linux dağıtımıyla dosyalayın.

WSL yığını

Ardından, hata WSL'nin mantığının kendisinden geliyor olabilir. Sorun doğrudan donanımda çalışan Linux'ta yeniden üretilmiyorsa ya da makine seviyesinde bir şey başarısız oluyorsa, bunlar bunun WSL'nin içinden kaynaklandığını gösterir. Yaygın hata yolları ve bunu belirleme ve günlükleri toplama işlemleri aşağıdadır:

WSL başlatma başarısızlıkları veya hataları wsl.exe.

Buradaki en belirgin hata, wsl.exe gibi doğrudan gelen bir hatadır. Bu durumda lütfen sorunu yeniden oluşturan WSL günlüklerini toplayın ve sorunu WSL GitHub deposunda kaydedin.

WSL kilitleniyor

Bir diğer yaygın hata, WSL'nin işlemeyi durdurması ve hiçbir komuta yanıt vermemesidir. Bu durumda lütfen bu prosedürü takip ederek bir WSL süreci çökmesi bildirin. Görev Yöneticisi - İşlemler - Sağ tıklayın - Bellek Dökümü dosyası oluştur yaparak kilitlenmeyi zorlayabilir ve döküm toplayabilirsiniz. Lütfen bu kilitlenme dökümünü ekleyin ve WSL GitHub deposunda sorun bildirimi yapın.

Ağ hataları

Bunun bir Linux ikili sorunu olmadığını doğrulayın. Ayrıca mümkünse, ağ özelliklerinin kısıtlanmış olup olmadığını görmek için bu makinede Hyper-V bir VM deneyerek bunun genel bir sanallaştırma veya VPN sorunu olmadığını doğrulayın. Bu sorun yalnızca WSL'de kalıcıysa lütfen WSL GitHub deposunda bir sorun oluşturun.

Sair Sorunlar

WSL ile ilgili olduğunu düşündüğünüz başka bir WSL hatası alıyorsanız lütfen günlükleri ekleyin ve WSL GitHub deposuna kaydedin.

WSL günlüklerine dalma

Tam hatanın ne olduğunu görmek için WSL günlüklerini açabilirsiniz. Bunu yapmak için lütfen önce Windows Performans Çözümleyicisi'ni yükleyin.

Ardından, WSL günlükleriniz olduğunda (bu yönergelerden toplanmış), oluşturulmuş .zip dosyasını alın ve çıkarın. Sonuçta elde edilen klasörü açın ve adlı logs.etl bir dosya arayın ve dosyayı Windows Performans Çözümleyicisi'nde açmak için bu dosyaya çift tıklayın.

Uygulama açıldıktan sonra şu adımları uygulayın:

  1. Görünümü genişletmek için Sistem Etkinliği'ne tıklayın
  2. Üstteki "Genel Olaylar" kutusunu ana pencereye sürükleyin
  3. "Microsoft.Windows.Lxss.Manager" serisini bulun ve seçmek için oka tıklayın

WinPerfAnalyzer

Buradan, WSL'den yayılan tüm tanılama olaylarını görüntüleyebilirsiniz. En çok ilgi çeken şey "VerboseLog" olarak adlandırılacak ve tam hata konumu ile ilgili daha fazla ayrıntı ve bilgi verecektir.

Ek kaynaklar

Sık karşılaşılan sorunlar ve çözümler WSL sorun giderme belgeleri sayfasında bulunur, bu nedenle lütfen görebileceğiniz sorunlar için oraya bakın. Ayrıca WSL GitHub deposuna veya herhangi bir arama motoruna gidin ve başkalarının aynı sorunla karşılaşıp karşılaşmadığını görmek için sorunu veya hata kodlarını orada arayın.