Windows Subsystem for Linux (WSL) is nu in Open Source beschikbaar
Microsoft heeft bekendgemaakt dat het Windows Subsystem for Linux (WSL) nu volledig open source is. Deze aankondiging markeert het hoogtepunt van een meerjarige inspanning en beantwoordt de allereerste vraag die ooit op de GitHub-repository van WSL werd gesteld: "Wordt dit Open Source?"

De code die WSL aandrijft, is nu beschikbaar op GitHub via Microsoft/WSL en is opengesteld voor de community. Dit betekent dat gebruikers WSL kunnen downloaden en compileren vanuit de broncode, nieuwe fixes en functies kunnen toevoegen, en actief kunnen deelnemen aan de ontwikkeling van WSL.
Componenten van WSL
WSL bestaat uit verschillende componenten, waarvan sommige in Windows draaien en andere binnen de WSL 2 virtuele machine. De belangrijkste gebieden van de WSL-code zijn:
- Opdrachtregelprogramma's: Dit zijn de toegangspunten om met WSL te interageren, zoals
wsl.exe
,wslconfig.exe
enwslg.exe
. - De WSL-service: Deze service start de WSL VM, initieert Linux-distro's, koppelt bestandstoegangshares en meer (
wslservice.exe
). - Linux init en daemon-processen: Binaire bestanden die in Linux draaien om WSL-functionaliteit te bieden (bijv.
init
voor opstarten,gns
voor netwerken,localhost
voor poort-forwarding). - Bestandsdeling: Implementatie van WSL's plan9-server voor het delen van Linux-bestanden met Windows (
plan9
).
Meer details over elk component zijn te vinden op https://wsl.dev.
De open-source release is een aanvulling op reeds open-source WSL-componenten zoals:
- microsoft/wslg: Voor Wayland- en X-server-gerelateerde scenario's binnen WSL.
- microsoft/WSL2-Linux-Kernel: De broncode voor de Linux-kernel die wordt gebruikt in WSL2.
Enkele componenten blijven onderdeel van de Windows-image en zijn op dit moment niet open source, waaronder Lxcore.sys
(de kernel-driver voor WSL 1) en P9rdr.sys
en p9np.dll
(voor de "\wsl.localhost" bestandssysteemomleiding).
Een korte geschiedenis van WSL
WSL werd voor het eerst aangekondigd op BUILD in 2016 en verscheen met de Windows 10 Anniversary Update. De oorspronkelijke versie, bekend als "WSL 1", was gebaseerd op een pico-procesprovider (lxcore.sys
), waardoor Windows native ELF-uitvoerbare bestanden kon uitvoeren en Linux-syscalls binnen de Windows-kernel kon implementeren.
Na verloop van tijd bleek dat de beste manier om optimale compatibiliteit met native Linux te bieden, het gebruik van de Linux-kernel zelf was. Dit leidde tot de ontwikkeling van WSL 2, voor het eerst aangekondigd in 2019. Met de groei van de community kreeg WSL meer functies, zoals GPU-ondersteuning, grafische applicatie-ondersteuning (via wslg
) en ondersteuning voor systemd.
Om sneller te kunnen inspelen op de groeiende community en functieverzoeken, werd WSL in 2021 gescheiden van de Windows-codebase en overgezet naar een eigen codebase. Dit nieuwe "WSL-pakket" verscheen voor het eerst als versie 0.47.1 in de Microsoft Store in juli 2021. Na verdere ontwikkeling werd WSL 1.0.0 in november 2022 algemeen beschikbaar, met ondersteuning voor Windows 10.
De recente mijlpaal van WSL 2.0.0 introduceerde belangrijke verbeteringen zoals gespiegeld netwerken, DNS-tunneling, sessie 0-ondersteuning, proxy-ondersteuning en firewall-ondersteuning. De meest recente versie op het moment van schrijven is WSL 2.5.7.
WSL-Community
De community heeft vanaf dag één een cruciale rol gespeeld in de ontwikkeling van WSL. Zelfs zonder toegang tot de broncode hebben leden aanzienlijke bijdragen geleverd aan het opsporen van bugs, het vinden van de beste manieren om nieuwe functies te implementeren en het verbeteren van WSL.
"WSL had nooit kunnen worden wat het nu is zonder zijn community," aldus Pierre Boulay van Microsoft. "We hebben gezien hoeveel de community heeft bijgedragen aan WSL zonder toegang tot de broncode, en we kunnen niet wachten om te zien hoe WSL zich zal ontwikkelen nu de community directe codebijdragen kan leveren aan het project."
Deze open-source stap belooft een nog snellere innovatie en diepere integratie van Linux-mogelijkheden binnen het Windows-ecosysteem.