Det Bash på Ubuntu på Windows gør det muligt for native Linux ELF64-binære filer at køre på Windows via Windows Subsystem til Linux (WSL). Selvom mange mennesker blev chokeret over Bash på Ubuntu-meddelelsen, er det værd at nævne, at det åbner nye døre for kompatibiliteten mellem forskellige operativsystemer. Microsoft tager endnu et skridt fremad og afslører, hvordan dets WSL fungerer, så vi bedre kan forstå, hvordan de to systemer kommunikerer med hinanden.
WSL blev oprettet af Microsoft Windows Kernel-teamet og indeholder både brugertilstand og kernetilstandskomponenter. Mere specifikt er systemet sammensat af:
- en brugertilstands session manager service, der håndterer livscyklussen for Linux-instanser
- Pico-udbyderdrivere (lxss.sys, lxcore.sys), hvis rolle er at efterligne en Linux-kerne ved at oversætte Linux-syscalls
- Pico behandler hosting af den ikke-ændrede brugertilstand Linux (f.eks. / Bin / bash).
Forbindelsen mellem de tre komponenter er beskrevet som følger:
Det er mellemrummet mellem Linux-binærfiler og Windows-kernekomponenter, hvor magien sker. Ved at placere umodificerede Linux-binære filer i Pico-processer muliggør vi, at Linux-systemopkald dirigeres til Windows-kernen. Drivere til lxss.sys og lxcore.sys oversætter Linux-systemopkald til NT API'er og efterligner Linux-kernen.
Hovedudfordringen i processen er at få de to systemer til at arbejde sammen:
WSL udfører umodificerede Linux ELF64-binære filer ved at virtualisere en Linux-kerneinterface oven på Windows NT-kernen. En af kernegrænsefladerne, som den udsætter, er systemopkald (syscalls). Et syscall er en tjeneste, der leveres af kernen, der kan kaldes fra brugertilstand. Både Linux-kernen og Windows NT-kernen udsætter flere hundrede syscalls for brugertilstand, men de har forskellige semantik og er generelt ikke direkte kompatible. For eksempel inkluderer Linux-kernen ting som fork, open og kill, mens Windows NT-kernen har den sammenlignelige NtCreateProcess, NtOpenFile og NtTerminateProcess.
Windows-undersystemet til Linux inkluderer kerne-tilstandsdrivere (lxss.sys og lxcore.sys), der er ansvarlige for håndtering af anmodninger om Linux-systemopkald i koordination med Windows NT-kernen. Driverne indeholder ikke kode fra Linux-kernen, men er i stedet en renrumsimplementering af Linux-kompatible kernel-grænseflader. På native Linux, når et syscall er lavet af en eksekverbar brugertilstand, håndteres det af Linux-kernen. På WSL, når et syscall er lavet af den samme eksekverbare, videresender Windows NT-kernen anmodningen til lxcore.sys. Hvor det er muligt, oversætter lxcore.sys Linux-syscall til det tilsvarende Windows NT-opkald, som igen gør det tunge løft.
I betragtning af Microsofts interesse for open source-platforme spekulerede mange på, om teknologigiganten skulle erhverve større Linux-fokuserede virksomheder som Canonical, firmaet bag Ubuntu-operativsystemet. Selvom Microsoft og Canonical samarbejdede om open source-software, udsendte ingen af dem nogen kommentarer til denne mulighed.
Hvis du er interessant i hvordan Linux - Windows-interaktionen udvikler sig, gå til Microsofts blog. Holdet lovede, at flere blogindlæg om dette emne ville følge.
RELATEREDE HISTORIER, DU SKAL KONTROLLERE:
- Linux-brugere rapporterer "Problemer med hovedtelefoner stoppede med at fungere i Windows 8.1"
- Microsoft og Canonical bringer Bash til Windows 10 på Build 2016
- München begynder at distribuere gratis Ubuntu-cd'er til Windows XP-brugere