De Bash på Ubuntu på Windows gjør det mulig for innfødte Linux ELF64-binærfiler å kjøre på Windows via Windows Subsystem for Linux (WSL). Selv om mange mennesker ble sjokkert over Bash på Ubuntu-kunngjøringen, er det verdt å nevne at det åpner nye dører for kompatibiliteten mellom forskjellige operativsystemer. Microsoft tar et nytt skritt fremover og avslører hvordan WSL fungerer, slik at vi bedre kan forstå hvordan de to systemene kommuniserer med hverandre.
WSL ble opprettet av Microsoft Windows Kernel-teamet og inneholder både brukermodus og kjernemoduskomponenter. Mer spesifikt består systemet av:
- en brukermodus sesjonsbehandlingstjeneste som håndterer livssyklusen for Linux-forekomsten
- Pico-leverandørdrivere (lxss.sys, lxcore.sys) hvis rolle er å etterligne en Linux-kjerne ved å oversette Linux-syscalls
- Pico behandler hosting for den umodifiserte brukermodus Linux (f.eks. / Bin / bash).
Forbindelsen mellom de tre komponentene er beskrevet som følger:
Det er mellomrommet mellom brukermodus Linux-binærfiler og Windows-kjernekomponentene der magien skjer. Ved å plassere umodifiserte Linux-binære filer i Pico-prosesser, gjør vi det mulig å lede Linux-systemanrop til Windows-kjernen. Drivere lxss.sys og lxcore.sys oversetter Linux-systemanropene til NT APIer og etterligner Linux-kjernen.
Hovedutfordringen i prosessen er å få de to systemene til å fungere sammen:
WSL utfører umodifiserte Linux ELF64-binærfiler ved å virtualisere et Linux-kjernegrensesnitt på toppen av Windows NT-kjernen. En av kjernegrensesnittene den avslører, er systemanrop (syscalls). En syscall er en tjeneste fra kjernen som kan ringes fra brukermodus. Både Linux-kjernen og Windows NT-kjernen utsetter flere hundre syscalls for brukermodus, men de har forskjellig semantikk og er generelt ikke direkte kompatible. For eksempel inkluderer Linux-kjernen ting som gaffel, åpen og drep mens Windows NT-kjernen har den sammenlignbare NtCreateProcess, NtOpenFile og NtTerminateProcess.
Windows Subsystem for Linux inkluderer kjernemodusdrivere (lxss.sys og lxcore.sys) som er ansvarlige for å håndtere forespørsler om Linux-systemanrop i koordinering med Windows NT-kjernen. Driverne inneholder ikke kode fra Linux-kjernen, men er i stedet en ren romimplementering av Linux-kompatible kjernegrensesnitt. På native Linux, når en syscall er laget av en kjørbar brukermodus, håndteres den av Linux-kjernen. På WSL videresender Windows NT-kjernen forespørselen til lxcore.sys når en syscall er laget av den samme kjørbare filen. Der det er mulig, oversetter lxcore.sys Linux-syscall til tilsvarende Windows NT-samtale, som igjen løfter tungt.
Tatt i betraktning Microsofts interesse for open source-plattformer, lurte mange på om teknologigiganten skulle kjøpe store Linux-fokuserte selskaper som Canonical, selskapet bak Ubuntu-operativsystemet. Selv om Microsoft og Canonical samarbeidet om programvare med åpen kildekode, ga ingen av dem noen kommentarer til denne muligheten.
Hvis du er interessant i hvordan Linux - Windows-interaksjonen utvikler seg, gå til Microsofts blogg. Teamet lovet at flere blogginnlegg om dette emnet ville følge.
RELATERTE STORIER DU TRENGER Å KONTROLLERE:
- Linux-brukere rapporterer "Problemer med hodetelefoner sluttet å fungere i Windows 8.1."
- Microsoft og Canonical bringer Bash til Windows 10 på Build 2016
- München begynner å distribuere gratis Ubuntu-CDer til brukere av Windows XP