Microsoft onthult hoe zijn Windows 10 Linux-subsysteem werkt

De Bash op Ubuntu op Windows stelt native Linux ELF64 binaries in staat om op Windows te draaien via het Windows Subsystem for Linux (WSL). Hoewel veel mensen geschokt waren door de aankondiging van Bash on Ubuntu, is het vermeldenswaard dat het nieuwe deuren opent voor de compatibiliteit tussen verschillende besturingssystemen. Microsoft zet nog een stap voorwaarts en onthult hoe zijn WSL werkt, zodat we beter kunnen begrijpen hoe de twee systemen met elkaar communiceren.

WSL is gemaakt door het Microsoft Windows Kernel-team en bevat componenten voor zowel de gebruikersmodus als de kernelmodus. Meer specifiek bestaat het systeem uit:

  • een sessiebeheerservice in de gebruikersmodus die de levenscyclus van de Linux-instantie afhandelt
  • Pico-providerstuurprogramma's (lxss.sys, lxcore.sys) wiens rol het is om een ​​Linux-kernel te emuleren door Linux-syscalls te vertalen
  • Pico-processen die de ongewijzigde gebruikersmodus Linux hosten (bijv. /bin/bash).

De verbinding tussen de drie componenten wordt als volgt beschreven:

Het is de ruimte tussen de Linux-binaries in de gebruikersmodus en de Windows-kernelcomponenten waar de magie gebeurt. Door ongewijzigde Linux-binaire bestanden in Pico-processen te plaatsen, kunnen Linux-systeemaanroepen naar de Windows-kernel worden geleid. De stuurprogramma's lxss.sys en lxcore.sys vertalen de Linux-systeemaanroepen naar NT-API's en emuleren de Linux-kernel.

De belangrijkste uitdaging in het proces is om de twee systemen samen te laten werken:

WSL voert ongewijzigde Linux ELF64-binaries uit door een Linux-kernelinterface bovenop de Windows NT-kernel te virtualiseren. Een van de kernelinterfaces die het blootlegt, zijn systeemaanroepen (syscalls). Een syscall is een service die door de kernel wordt geleverd en die vanuit de gebruikersmodus kan worden aangeroepen. Zowel de Linux-kernel als de Windows NT-kernel stellen honderden syscalls bloot aan de gebruikersmodus, maar ze hebben een verschillende semantiek en zijn over het algemeen niet direct compatibel. De Linux-kernel bevat bijvoorbeeld dingen als fork, open en kill, terwijl de Windows NT-kernel de vergelijkbare NtCreateProcess, NtOpenFile en NtTerminateProcess heeft.

Het Windows-subsysteem voor Linux bevat stuurprogramma's voor de kernelmodus (lxss.sys en lxcore.sys) die verantwoordelijk zijn voor het afhandelen van Linux-systeemaanroepverzoeken in coördinatie met de Windows NT-kernel. De stuurprogramma's bevatten geen code van de Linux-kernel, maar zijn in plaats daarvan een cleanroom-implementatie van Linux-compatibele kernelinterfaces. Op native Linux, wanneer een syscall wordt gemaakt vanuit een uitvoerbaar gebruikersmodus, wordt dit afgehandeld door de Linux-kernel. Op WSL stuurt de Windows NT-kernel het verzoek door naar lxcore.sys wanneer een syscall wordt gemaakt vanuit hetzelfde uitvoerbare bestand. Waar mogelijk vertaalt lxcore.sys de Linux-syscall naar de equivalente Windows NT-aanroep die op zijn beurt het zware werk doet.

Rekening houdend met de interesse van Microsoft in open-sourceplatforms, vroegen veel mensen zich af of: de techgigant zou grote op Linux gerichte bedrijven zoals Canonical moeten overnemen, het bedrijf achter het Ubuntu-besturingssysteem. Hoewel Microsoft en Canonical samenwerkten aan open-sourcesoftware, gaven geen van beiden commentaar op deze mogelijkheid.

Als je geïnteresseerd bent in hoe de interactie tussen Linux en Windows evolueert, ga naar de blog van Microsoft. Het team beloofde dat er meer blogposts over dit onderwerp zouden volgen.

VERWANTE VERHALEN DIE JE MOET BEKIJKEN:

  • Linux-gebruikers melden problemen met "hoofdtelefoon werkt niet meer in Windows 8.1"
  • Microsoft en Canonical brengen Bash naar Windows 10 bij Build 2016
  • München begint gratis Ubuntu-cd's te distribueren naar Windows XP-gebruikers
EXT4 mounten, lezen of formatteren op Windows 11

EXT4 mounten, lezen of formatteren op Windows 11LinuxWindows Linux Subsysteem

Zorg er eerst voor dat WSL2 is geïnstalleerd en bijgewerktMet WSL2 kunt u EXT4 op Windows 11 koppelen en lezen met slechts een paar opdrachtregels in PowerShell.Voordat u iets start, moet u ervoor ...

Lees verder
EXT4 mounten, lezen of formatteren op Windows 11

EXT4 mounten, lezen of formatteren op Windows 11LinuxWindows Linux Subsysteem

Zorg er eerst voor dat WSL2 is geïnstalleerd en bijgewerktMet WSL2 kunt u EXT4 op Windows 11 koppelen en lezen met slechts een paar opdrachtregels in PowerShell.Voordat u iets start, moet u ervoor ...

Lees verder