Windows Subsystem for Linux – netwerk en bestand delen in WSL

Noud van Kruysbergen
0

Er is een essentieel verschil tussen de manieren waarop WSL 1 en 2 platformoverschrijdende toegang realiseert, een bestand kan delen en omgevingen in een netwerk kan verbinden. Deze serie artikelen laat niet alleen zien wat het betreffende subsysteem doet bij de verschillende Windows-versies, maar ook enkele leuke mechanismen die in alle moderne Windows-versies zitten.


WSL netwerk bestand delen


Bestand delen in WSL

Een essentieel verschil tussen WSL1 en 2, dat Microsoft ook zeer duidelijk heeft gedocumenteerd, is de manier waarop platformoverschrijdende bestands­toegang gerealiseerd wordt. WSL2 slaat alle Linux-­bestanden samen met die van de distributie op in een VHDX-bestand in de gebruikersprofielmap (in C:\Gebruikers\<naam>).

De toegang tot die database vanuit WSL is uiterst snel. Om de Windows-stations toegankelijk te maken onder Linux, koppelt WSL2 ze aan in de Linux bestandsstructuur onder /mnt.

Mounten voor bestand delen in WSL

Om ze te mounten, gebruikt het een speciale toegangstechniek om ervoor te zorgen dat concurrerende toegangen van Windows en Linux het bestandssysteem niet beschadigen (het mounten van een apparaat onder beide systemen tegelijk zou dat bij conflicten kunnen veroorzaken).

Het gaat om de voor het experimen­tele besturingssysteem Plan 9 ontworpen 9P. WSL2 zelf fungeert daarbij als de server, Windows als een client. Benchmarks tonen aan dat toegang tot bestanden van een NTFS-bestandssysteem dat op die manier wordt benaderd vanuit Linux veel trager is. Hoe meer kleine bestanden er worden verwerkt, des te groter het effect.

De conclusie die daaruit kan worden getrokken is heel duidelijk:

  • Als gezamenlijke toegang door Windows en Linux tot een grote voorraad kleine bestanden nodig is, dan is WSL1 aan te bevelen.
  • Bestanden die hoofdzakelijk onder Windows worden bewerkt, moeten worden opgeslagen op een NTFS-volume met WSL2,
  • Bestanden die hoofdzakelijk onder Linux worden bewerkt, moeten idealiter worden opge­slagen in het Linux-bestandssysteem (niet onder /mnt), oftewel in het VHDX-bestand.

Zelfs als Windows die bestanden standaard niet mount, kan toegang worden gerealiseerd. Ook daar komt 9P om de hoek kijken: Microsoft heeft een module toegevoegd aan Visual Studio Code die op die manier bestanden in het Linux-­bestandssysteem kan benaderen.


Ontvang gratis meer workshops over Windows en Linux!

Schrijf je in voor de nieuwsbrief:

Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.


Netwerk verbinding in WSL

De netwerkverbinding van de Linux-omgevingen verschilt afhankelijk van de WSL-versie. WSL1 voegt die omgevingen samen bij de netwerkkaart van de pc – oftewel Linux en Windows delen de IPv4- en IPv6-adressen. Daardoor is het hardware-ethernetadres (MAC) dat in de Linux-omgevingen wordt weergegeven identiek aan dat in Windows.

Dat maakt diensten die binnen WSL draaien toegankelijk, bijvoorbeeld een webserver. Als een Linux-toepassing een poort opent, vraagt Windows onmiddellijk of het een firewall-poort moet openen.

WSL2 geeft ook alle draaiende omgevingen een identiek IPv4-adres, maar leidt dat niet af van dat van de pc. In plaats daarvan komt het uit de adrespool van een virtuele schakelaar genaamd WSL. Die is ook zichtbaar wanneer WSL2-omgevingen worden uitgevoerd nadat de Hyper-V-beheertools en -services geïnstalleerd zijn.

IPv4 netwerk delen in WSL 2

Alle WSL2-omgevingen delen dan een ip-adres van een particulier IPv4-netwerk. Ze krijgen geen IPv6-adressen. Het Windows-onderdeel voor het delen van een internetverbinding (Internet Connection Sharing, ICS) is actief op de virtuele switch.
Netwerktoegang van buitenaf tot diensten die in een WSL2-omgeving draaien is daarom moeilijker.

Daarover zijn lange discussies gaande in de WSL-bugtracker, die allerlei problemen aan het licht brengen (zie de link onderaan deze pagina).

Aangezien een omgeving bij elke Windows- en WSL-herstart een ander ip-adres krijgt toegewezen, zijn statische portforwarding via netsh (met netsh interface portproxy add) en uitzonderingen bij de Windows-firewall niet voldoende om services in de Linux-omgevingen permanent toegankelijk te maken. Maar zoals gezegd, dat was het doel van Microsoft ook niet.

De voordelen van WSL

WSL laat zijn voordelen zien op de plekken waar Windows-gebruikers in contact komen met Linux-omgevingen. Dat geldt vooral voor ontwikkelaars die Visual Studio Code gebruiken om bijvoorbeeld Docker-­containers te bouwen. Zolang ze niet te veel afhankelijkheden bevatten, is een laptop voldoende om het hele lab dat nodig is voor het testen mee te slepen. Na een tijdje merk je niet eens meer op welk besturingssysteem je werkt.

Dat is wat de WSL-aanpak onderscheidt van conventionele virtualisatietechnologie. Theoretisch kan dit alles ook met virtuele machines, maar de benodigde inspanning is daarbij veel groter. Je moet de virtuele machines aanmaken, nadenken over de te verdelen resources en zelf opruimen. Dat kun je alleen doen met de Pro-versie van Windows. WSL is ook beschikbaar bij Windows Home en zelfs in de ARM-versie (op voorwaarde dat de hardware virtualisatie toelaat, wat niet voor elk ARM-apparaat geldt).

Meer over Windows Subsystem for Linux – WSL 1 en 2 – vind je in:


(Deze informatie is afkomstig uit het artikel van Peter Siering en Noud van Kruysbergen, en verscheen eerder in c’t 3, 2022, p120)


 

Ontdekkingsreis door WSL

Grafische Linux-applicatie onder Windows: WSLg broncode, bugreports, architectuur

Bugreport, dat zich bezig houdt met het toegankelijk maken van diensten in WSL buiten localhost

WSL-beheertool voor de Linux-omgevingen

Veel tips rondom WSL, ook voor andere, niet officiële distributies

 

Voor meer praktische instructies over Linux en Windows: c't 05/2024

Meer over

Netwerken

Deel dit artikel

Noud van Kruysbergen
Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

Lees ook

Windows Subsystem for Linux installeren met commandline

Tijdens de ontwikkeling varieerden de tips om Windows Subsystem for Linux (2) te installeren. Nu is de commandline de handigste manier. We beschrijven...

Windows Subsystem for Linux – een kijkje in de virtuele machine

De Linux-omgevingen in Windows Subsystem for Linux (WSL), zijn anders dan met een gewone distributie zoals die op pc of een virtuele machine. Met enke...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er