Hata ayıklayıcıda Windows 10'un Linux alt sistemine bakın

Windows 10, Microsoft'un üçüncü nesil NT ekibinin gelgiti büyük ölçüde dönüştüren ve yeniden biçimlendiren çalışmasıdır ve amaç, Windows'u yeniden keşfetmektir (Windows'u Yeniden Keşfedin)! Pek çok yeni özellik arasında, Linux Environment Subsystem (WSL) şüphesiz en yenilikçi ve popüler olanıdır.

WSL'yi etkinleştir

30 Mart 2016'da açılan Build konferansında Microsoft, geliştiricilere Windows 10'un Linux uygulamalarını destekleyeceğini duyurdu. WSL, 7 Nisan 2016'da ilk kez Windows 10 yapı 14328 hızlı halkasına dahil edildi. Windows 10 Yıl Dönümü Güncellemesinde (Yıldönümü Güncellemesi) nispeten eksiksiz bir Beta sürümü içerir.

Tüm Windows 10 sistemlerinin WSL'yi çalıştıramayacağına dikkat etmek önemlidir.İki temel gereksinimin karşılanması gerekir: 64-bit ve Derleme numarası 14393.0'dan az olmamalıdır (yazar tarafından kullanılan iki sürüm 14393.1198 ve 14393.479'dur).

Yukarıdaki koşulları karşılayan Windows 10'da WSL varsayılan olarak yüklenmez, ancak aşağıdaki iki adımda etkinleştirilmesi gerekir.

İlk adım, Ayarlar'dan geçmektir. > Güncelleme ve Güvenlik- > Geliştiriciler için geliştirici modunu açın (bkz. Şekil 1).

Şekil 1 Açık geliştirici modu

İkinci adım, WSL işlevini "Windows özelliklerini açıp kapatarak" açmaktır (Şekil 2).

Şekil 2 Açık WSL işlevi

Şekil 2'de gösterilen Tamam düğmesine tıkladıktan sonra, Windows 10 WSL bileşenlerini kuracak ve bu biraz zaman alacaktır. Kurulum tamamlandıktan sonra sistemi yeniden başlatın. Yeniden başlattıktan sonra, başlat menüsü alanına bash girin.Şekil 3'te gösterilen menü öğesini görürseniz, WSL'nin başarıyla etkinleştirildiği anlamına gelir. Bash, GNU altında bir komut işlemcisi ve kabuk programıdır. Ubuntu ve Apple macOS dahil birçok Linux dağıtımı, onu varsayılan konsol kabuğu ve komut işlemcisi olarak kullanır. Bash'in Ubuntu sürümü Windows 10'da kullanılmaktadır. Bu nedenle WSL'ye bazen Windows'ta Ubuntu'da Bash adı verilir.

Şekil 3 Windows'ta Ubuntu'da Bash

WSL'yi etkinleştirmenin başarısı, Linux uygulamalarını çalıştırmak için temel ortamın Windows sisteminde oluşturulmuş olduğu anlamına gelir.Bu ortam, Linux için Windows Alt Sistemidir (WSL). Ortam alt sistemi, NT çekirdeğinin doğal bir mekanizmasıdır ve amacı, bir NT çekirdeği üzerinde farklı uygulama türlerini çalıştırmaktır. WSL'yi desteklemeden önce, üç tür alt sistem vardır: Windows alt sistemi, OS / 2 alt sistemi ve POSIX alt sistemi.

Her alt sistemde genellikle bir alt sistem hizmet süreci ve bir çekirdek modu sürücüsü bulunur Windows alt sistemi için bunlar ünlü CSRSS.exe ve Win32K.sys'dir. WSL için, bileşimi esas olarak aşağıdaki bölümlere sahiptir:

  • Bir sistem hizmeti olarak çalışan LxssManager alt sistem hizmet süreci. Servis yöneticisinde bu servisi görebilirsiniz. Hizmetin açıklama bilgileri çok ayrıntılıdır, bu yüzden alıntı yapabilirsiniz: LXSS Manager hizmeti yerel ELF ikili dosyalarının çalıştırılmasını destekler. Bu hizmet, Windows'ta ELF ikili dosyalarını çalıştırmak için gereken altyapıyı sağlar. Hizmeti durdurursanız veya devre dışı bırakırsanız, bu ikili dosyalar artık çalışmayacaktır. LxssManager'ın çekirdek kodu system32 \ lxss alt dizininde bulunan bir DLL'dir. Çalıştırılacak ana bilgisayar olarak svchost.exe'yi kullanır.

Şekil 4 WSL alt sistemi hizmet DLL'si

  • Çekirdek alanında çalışan iki Linux alt sistemi sürücüsü vardır.Bir dosya lxss.sys ve diğeri LxCore.sys'dir, her ikisi de system32 \ drivers dizininde yer alır.Şekil 5, lxss sürücüsünün kayıt defterindeki kurulum seçeneklerini gösterir.

Şekil 5 Linux alt sistem sürücüsünün kayıt defteri girdileri

  • Windows ortamı ile arayüz oluşturmak için kullanılan Bash Launcher programı bash.exe system32 dizininde yer almaktadır.Şekil 3'teki menü maddesi bu programı göstermektedir.

  • WSL'yi yönetmek ve sürdürmek için LxRun.exe adlı bir araç programı.

Ubuntu'yu yükleyin

Linux uygulamalarını yukarıdaki temel işletim ortamı ile çalıştırabilir miyim? Hayır, ayrıca sistem programları, kitaplık dosyaları ve gerekli araçlar ve programlar dahil olmak üzere Linux sistemini kurmanız gerekir. Ancak endişelenmeyin, Microsoft, Ubuntu On Windows (bundan sonra UoW olarak anılacaktır) adlı özel bir Ubuntu sürümü hazırlamak için Canonical (Ubuntu'nun arkasındaki şirket) ile işbirliği yaptı. Bash Başlatıcı ilk kez başlatıldığında, Şekil 6'da gösterildiği gibi UoW'u kurmanız istenecektir.

Şekil 6 Ubuntu'yu Windows'a Kurun

UoW'u yükledikten sonra, Ubuntu'nun çeşitli alt dizinlerini ve dosyalarını geçerli kullanıcının AppData \ Local \ lxss altında görebilirsiniz. Şekil 7, kök dosya sistemi altındaki alt dizinleri ve dosyaları gösterir. Tanıdık birçok dizini görebilirsiniz. Ad: tmp, önyükleme vb., Ev, sbin, bin, usr, var vb.

Şekil 7 Diskteki Ubuntu kök dizini

Diğer uygulamaları yükleyin

UoW, ünlü paket yönetim aracı apt-get dahil olmak üzere, yaygın olarak kullanılan birçok komut ve aracı içerir. Dolayısıyla, UoW'da diğer yazılım paketlerini kurmak kolaydır, sadece aşağıdaki komutları kullanın.

Lao Lei için elbette en çok istenen kurulum GDB'dir ve sadece sudo apt-get install gdb'yi çalıştırması gerekir.Kurulum işlemi Şekil 8'de gösterilmektedir.

Şekil 8 GDB'yi Kurun

Linux örneğinin oluşturulma sürecini gözlemleyin

Yukarıdaki hazırlıkları yaptıktan sonra, bir sonraki hedefimiz hata ayıklayıcıdaki WSL'nin çalışma prensibini anlamaktır. Gözlemlemek istediğimiz ilk şey, WSL'de bir Linux örneğini başlatma sürecidir.

Çekirdek hata ayıklama oturumunda, nt! MmInitializeProcessAddressSpace'de bir kesme noktası ayarlayın, ardından bash.exe'yi başlatın ve ilk isabetten hemen sonra bırakın (bash.exe normal bir Windows işlemidir, ilgilenmez), ikinci vuruşta gördüğünüz şey services.exe, svchost.exe'yi oluşturuyor, bash.exe'ye geçiyor ve yığın izini gözlemliyor, WSL hizmet süreciyle iletişim kurmak için bir SvcComm nesnesi oluşturduğunu görebilirsiniz (Şekil 9). Bu nesnenin kurucusu, WSL hizmet süreci tarafından uygulanan bir işlem dışı COM nesnesi oluşturmak için CoCreateInstance'ı çağırır. Bu, COM nesnesini (svchost.exe) oluşturan ana bilgisayar işlemini tetikler.

Şekil 9 Bash Başlatıcı süreci, WSL hizmet süreci ile iletişim kuruyor

Şekil 10, WSL ekibinin resmi blogundan alınan bir WSL bileşen işbirliği diyagramıdır Sol taraftaki bash.exe ile Linux oturum yönetimi hizmeti arasındaki siyah ok, COM teknolojisi aracılığıyla etkileşim kurduklarını gösterir.

Şekil 10 WSL bileşen işbirliği diyagramı

Kurtarma hedefinin yürütülmesinden sonra, kesme noktası kısa süre sonra tekrar gelir ve yığın izleme Şekil 11'de gösterilir.

Şekil 11 Bir Linux örneği oluşturun

12-17 yığın çerçevelerinden, bu kez kesinti noktasına, I / O kontrolü aracılığıyla çekirdek alanında LxCore ile iletişim kuran WSL hizmet süreci tarafından vurulduğu görülebilir. Çerçeve 9-b'deki Reklamlar, Microsoft'un terk ettiği Astoria projesinin (Windows'ta Android uygulamalarını çalıştırmak için kullanılan) bir izi olan Android alt sistemini temsil ediyor.

Yazarın analizine ve Şekil 10 ve Şekil 11'de gösterilen yığın izine göre, Linux sisteminde init işlemi oluşturulmuştur. Başlatma süreci başladığında, gerçek bir bash süreci yaratacaktır. Şekil 12, bash işlemi oluşturulduktan sonra WSL işlem listesini göstermektedir.

Şekil 12 bash işlemi oluşturulduktan sonra WSL ile ilgili işlem listesi

Şekil 12'de toplam dört işlem bulunmaktadır. Birincisi bash başlatıcı işlemidir, işletim sistemi açısından tipik bir Windows programıdır. İkinci süreç WSL'nin alt sistem hizmet sürecidir, üçüncüsü onun yarattığı init süreci ve dördüncüsü init süreci tarafından yaratılan bash sürecidir. ParentCid (üst işlem kimliği) alanı aracılığıyla, son üç işlemin bir üst-çocuk ilişkisine sahip olduğunu görebilirsiniz. Şekil 13, İşlem Gezgini kullanılarak yapılan gözlemin sonucudur.

Şekil 13 WSL işlem şeması

Minimal süreç ve Pico süreci

WSL'yi derinlemesine anlamak için, önce son yıllarda NT çekirdeği tarafından tanıtılan iki yeni kavramı anlamalısınız: minimal süreç ve Pico süreci. Minimal süreç Windows 8.1'de tanıtıldı ve minimal bir işlem nesnesini temsil ediyor.Ad, belirteç ve koruma seviyesi gibi temel özniteliklere sahip, ancak işlem alanı boş, PEB yok, NTDLL yok ve tutamaç tablosu yok. EPROCESS yapısındaki Minimal 1'dir, bu da sürecin en küçük süreç olduğu anlamına gelir. Örneğin, Şekil 12'deki init sürecini gözlemlerseniz, bunun en küçük süreç olduğunu görebilirsiniz.

WSL tarafından kullanılan en küçük işlemin yanı sıra, Windows 10'daki bellek sıkıştırma işlemi de en küçük işlemdir.

Pico süreci en küçük süreçlerden biridir.Onunla ilişkili bir sürücü ile karakterize edilir.Bu süreçte bir sistem çağrısı meydana geldiğinde, çekirdek sistem çağrısını bu sürücüye aktarır.Bu sürücüye Pico Provider denir. Pico süreci denir. Şekil 14, NT sistemindeki üç işlemi göstermek için resmi WSL blogundan bir çizimdir.

Şekil 14 Üç süreç

Pico küçük anlamına gelir ve genellikle konteyner teknolojisinde görülür. Konteyner teknolojisi perspektifinden bakıldığında, Pico süreci bir sandbox olarak kabul edilebilir. Aslında, Pico süreci Stony Brook Üniversitesi, Cambridge ve Microsoft Research tarafından ortaklaşa geliştirilen Drawbridge projesinden kaynaklandı. Kitaplık İşletim Sistemi fikrini ve Drawbridge projesi tarafından uygulanan teknik prototipi tanıtan Drawbridge: Uygulama Korumalı Alan Oluşturma için Yeni Bir Sanallaştırma Formu başlıklı bir video Channel9'da bulunabilir.

WSL için kullanılan Pico işlem alanı, Linux yerel programlarını çalıştırabilir.Sistem çağrıları gerçekleştiğinde, çekirdek bu çağrıları kendisiyle ilişkili sürücüye (Pico Sağlayıcısı) iletir. Örneğin, Şekil 15'te gösterilen yığın izleme, LxCore'a NT çekirdek yönlendirme sistemi çağrılarının sürecini gösterir.

Şekil 15 Yönlendirme sistem çağrısı

Makalenin sonunda, başka bir hata ayıklama tekniğini tanıtacağım. 20 yıldan fazla bir geçmişe sahip NT çekirdeği için WSL kesinlikle yeni bir şeydir ve pek çok destekleyici tesis mükemmel değildir.Örneğin, WinDBG'de işlemler listelenirken, tüm Pico işlemlerinin adları Sistem İşlemi olarak görüntülenir (Şekil 12'de alttaki ikisi) , Çok uygunsuz. Linux işlem adlarını nasıl öğrenebilirim? Bir yol var. EPROCESS'te, Pico özniteliklerini kaydeden bir yapıya işaret eden PicoContext (şu anda 0x708 ofset) adlı bir alan vardır.Ayrıntılı tanımı açıklanmamıştır.Yazar, demontaj yoluyla 0x180 ofsetinde depolandığını öğrenmiştir. İşlemin yürütülebilir dosya yoludur. Buna bağlı olarak, görüntülemek için aşağıdaki komutu kullanabilirsiniz:

Birisi uname -a çalıştırıldığında ne döneceğini sorarsa, deneyin ve bileceksiniz.

Bu sonucu oluşturma sürecini izlemek için LXCORE! LxpSyscall_NEWUNAME'de bir kesme noktası ayarlayın. Bazıları dize sabitlerinden gelir ve bazıları dinamik olarak birleştirilir. Ayrıntıları önceden gören yazar, okuyucuların bunu elle denemelerini şiddetle tavsiye eder.

Geçmişe dönüp baktığımızda, Microsoft bir zamanlar Linux'a karşı korku ve nefretle doluydu ve emekleme döneminden yararlanmak ve onu bebeklerine katletmek istiyordu. Eylül 2002'de, Windows'un babası olarak bilinen bir Microsoft yöneticisi olan Jim Allchin, birçok müşteriyle iletişim kurduktan ve araştırdıktan sonra Microsoft'un diğer yöneticilerine çok uzun bir e-posta yazdı:

Benim sonucum: Linux'a karşı kazanma yolunda netiz Bazı şeyleri değiştirmeliyiz ve bunu hemen yapmalıyız. Mevcut teknik incelemeler vb. Çok yüksek düzeydedir ve kesmeyecekler, İşte belirli eylemler Almamız gerektiği sonucuna vardım.

Daha sonra, bir dizi görev ayrıntılı olarak dağıtıldı ...

Ama aslında Linux gün geçtikçe büyüdü. O halde müttefik olmanız, yeni çağı birlikte kucaklamanız ve birlikte kadeh kaldırmanız gerekir (belki annenizi arkanızdan azarlarsınız)!

Her halükarda, yeni bir çağ başladı.İkili Linux programları, yerel formda doğrudan NT çekirdeği üzerinde çalışabilir. Ne heyecan verici bir şey. Çığır açan bir önemi vardır ve bir nesil için bir emsal teşkil eder. Kapalı pencere sisteminde, özgürce gelişen küçük penguenin içeri girip yeni bir cennete sahip olduğunu temsil eden bir kapı açtı. Çok fazla hayal gücüne, birçok yeniliğe ilham verecek ve elbette birçok kötü düşünce olabilir (biliyorsunuz, virüsler, şantaj ve güvenlikten bahsediyorum) ...

Bu bez kapaklı defter, doku ve doku bakımından çok sanatsal Bu tasarım harika
önceki
Sanayi ve Bilgi Teknolojileri Bakanlığı yakıt tüketimini 5,9 olarak ölçtü ve araç sahibi bunu 9,3 olarak ölçtü. Aradaki fark neden bu kadar büyük?
Sonraki
Yükselen deniz seviyesi krizine yanıt olarak, BIG yıldız firması yüzen bir şehir tasarladı
Beijing Hyundai, gelecekte 1.6L modelin yerini alacak veya bu yaz satışa çıkacak olan 1.5L modelin casus fotoğraflarına liderlik ediyor.
SAIC Maxus G50 elektrikli versiyonu ortaya çıktı, mavi unsurları tanıtıyor / 2019'un sonunda listelenmesi bekleniyor
Yeni WEY P8 casus fotoğrafları ortaya çıktı, iç mekan elektronik bir vites kolu ile değiştirildi / 2019'un ortasında piyasaya sürülecek
Futbolu tanıtın ve futbol kültürünü geliştirin Pekin Futbol Federasyonu 1V1 futbol deneyimi aktivitelerini başlattı
OnePlus, CCTV tarafından bildirilen T-Mobile ile işbirliği yapıyor, yeni amiral gemisi OnePlus 6T bir Guinness rekoru kırıyor
Yunnan Road Community, Yunnan Road Alt Bölgesi Yeni Yıl Huimin Fuarı Düzenledi
Çin karakteristiklerine sahip ticari bir caddeye terfi ettirilen kutsal basketbol bölgesi Huaxi LIVE · Wukesong, Olimpiyat sahalarını kullanmak için yeni bir model yaratıyor
Yaşam kalitesini tecrübe edin Mercedes-Benz GLE "En güzel aile yanı konaklama" faaliyet raporu
2018 Pekin Futbol Federasyonu Kupası kapalı futsal maçı başladı, yarışmaya 16 takım katıldı
Yeni şişelerde eski şarap? Volkswagen Passat fragmanının ABD versiyonu ortaya çıktı
Pekin Salonu · Pekin'i Ziyaret Edin Yabancı Arkadaşlar Çin Dans Kültürünü Deneyimleyin
To Top