The Bash na Ubuntuju v sistemu Windows omogoča, da se domači binarni elementi ELF64 za Linux izvajajo v sistemu Windows prek podsistema Windows za Linux (WSL). Čeprav je bil marsikdo šokiran zaradi napovedi Bash on Ubuntu, je treba omeniti, da odpira nova vrata za združljivost med različnimi operacijskimi sistemi. Microsoft naredi še en korak naprej in razkrije, kako deluje njegov WSL, da bomo lahko bolje razumeli, kako oba sistema komunicirata med seboj.
WSL je ustvarila ekipa jedra Microsoft Windows in vsebuje tako uporabniški način kot tudi jedrski način. Natančneje, sistem je sestavljen iz:
- storitev upravitelja sej v uporabniškem načinu, ki obravnava življenjski cikel primerka Linux
- Gonilniki ponudnikov Pico (lxss.sys, lxcore.sys), katerih vloga je posnemati jedro Linuxa s prevajanjem syscalls Linuxa
- Pico procesi, ki gostijo nespremenjeni uporabniški način Linux (npr. / Bin / bash).
Povezava med tremi komponentami je opisana na naslednji način:
To je prostor med binarnimi datotekami v uporabniškem načinu Linux in komponentami jedra sistema Windows, kjer se zgodi čarovnija. Z namestitvijo nespremenjenih binarnih datotek Linuxa v procese Pico omogočamo usmerjanje sistemskih klicev Linuxa v jedro sistema Windows. Gonilnika lxss.sys in lxcore.sys prevajata sistemske klice Linuxa v API-je NT in posnemata jedro Linuxa.
Glavni izziv v procesu je združiti oba sistema:
WSL izvaja nespremenjene binarne datoteke ELF64 za Linux z virtualizacijo vmesnika jedra Linuxa na vrhu jedra Windows NT. Eden od vmesnikov jedra, ki ga izpostavi, so sistemski klici (syscalls). Syscall je storitev, ki jo omogoča jedro in jo lahko prikličete iz uporabniškega načina. Tako jedro Linuxa kot jedro Windows NT izpostavi več sto syscalls uporabniškemu načinu, vendar ima različno semantiko in na splošno ni neposredno združljivo. Na primer, jedro Linuxa vključuje stvari, kot so fork, open in kill, medtem ko ima jedro Windows NT primerljive NtCreateProcess, NtOpenFile in NtTerminateProcess.
Podsistem Windows za Linux vključuje gonilnike načina jedra (lxss.sys in lxcore.sys), ki so odgovorni za obdelavo zahtev sistemskih klicev Linux v koordinaciji z jedrom Windows NT. Gonilniki ne vsebujejo kode iz jedra Linuxa, ampak so namesto tega uvedba vmesnikov jedra, združljivih z Linuxom. V izvornem Linuxu, ko je syscall izdelan iz uporabniškega načina, ga obdela jedro Linuxa. Na WSL, ko je syscall narejen iz iste izvršljive datoteke, jedro sistema Windows NT posreduje zahtevo na lxcore.sys. Kjer je to mogoče, lxcore.sys prevede sistemski klic v sistem Linux v enakovreden klic Windows NT, ki nato težko dvigne.
Ob upoštevanju zanimanja Microsofta za odprtokodne platforme se je marsikdo vprašal, ali tehnološki velikan bi moral pridobiti glavna podjetja, usmerjena v Linux, kot je Canonical, podjetje, ki stoji za operacijskim sistemom Ubuntu. Čeprav sta Microsoft in Canonical sodelovala pri odprtokodni programski opremi, nobena od teh možnosti ni objavila nobenega komentarja.
Če vas zanima, kako se razvija interakcija Linux - Windows, pojdite na Microsoftov spletni dnevnik. Ekipa je obljubila, da bo sledilo še več objav na to temo.
POVEZANE ZGODBE, KI JIH MORATE OGLEDATI:
- Uporabniki Linuxa poročajo o težavah »Slušalke so prenehale delovati v sistemu Windows 8.1«
- Microsoft in Canonical prinašata Bash v Windows 10 na Build 2016
- München začne distribuirati brezplačne CD-je Ubuntu uporabnikom sistema Windows XP