WSLg: de kracht van Linux in je vertrouwde Windows-omgeving
Via allerlei kunst- en vliegwerk kun je al langere tijd Linux op je Windows-pc draaien. Opdrachtregelcommando’s zijn natuurlijk één ding, maar het plaatje wordt pas compleet als je ook toepassingen met een grafische gebruikersinterface kunt uitvoeren. Met het grafische deel van het Windows-subsysteem voor Linux kan dit perfect.
In dit artikel laten we zien hoe je op een Windows-pc Linux kunt draaien, met WSL(g):
- Check de systeemeisen
- Installeer WSL met één commando
- Installeer een extra Linux-distributie
- Beheer de geïnstalleerde distributies
Toch liever een dualboot-installatie? Windows én Linux: zo zet je twee besturingssystemen op één pc
Code downloaden
In dit artikel worden voorbeelden van diverse commando’s gegeven. Omdat het overtikken van dergelijke opdrachten erg foutgevoelig is, kun je ze beter downloaden en daarna bekijken of kopiëren. Zie het bestand codewinlin.txt.
Linux onder Windows draaien? Het idee wringt misschien wat – vooral bij Linux-puristen – maar het is zeker mogelijk. We kunnen zelfs zonder moeite diverse manieren bedenken om dit te doen: met halve Linux-emulators als Cygwin of Git for Windows, dualboot, virtuele machines, containers, x-server-forwarden, remote desktop en zelfs standaard in Windows met het grafische deel van het Windows-subsysteem voor Linux ofwel WSL(g).
1 Waarom?
Wellicht vraag je je af waarom je Linux onder Windows zou willen draaien? Bijvoorbeeld omdat je Linux beter wilt leren kennen zonder een aparte fysieke machine of een complexe dualboot-opstelling te configureren. Je behoudt bovendien je vertrouwde Windows-omgeving, terwijl je kennismaakt met de mogelijkheden van Linux – vooral voor ontwikkelaars en IT-professionals biedt Linux een bredere set tools en applicaties.
Het werkt ook comfortabel wanneer je binnen dezelfde machine snel tussen Linux- en Windows-taken kunt schakelen. Als je Linux in een sandbox-omgeving op Windows draait, biedt dit extra isolatie en veiligheid, wat nuttig kan zijn bij het testen van potentieel onveilige software. Dit geldt met name voor WSL(g). Maar wat moet je je hierbij precies voorstellen en hoe zit dit technisch in elkaar?
Een dualboot-configuratie (hier met Ubuntu) is altijd wel een complexe operatie.
2 Wat is WSL?
WSL staat voor Windows-subsysteem voor Linux, een compatibiliteitslaag ontwikkeld door Microsoft die het mogelijk maakt Linux-opdrachtregelcommando’s en -applicaties native op Windows te draaien. Er zijn inmiddels twee hoofdversies van WSL uitgebracht.
WSL 1 kwam in 2016 op de markt en gebruikt een compatibiliteitslaag die Linux-systeemoproepen naar Windows-systeemoproepen vertaalt, zodat Linux-binary’s rechtstreeks op de Windows-kernel kunnen worden uitgevoerd. Dit kan soms leiden tot compatibiliteitsproblemen met bepaalde applicaties of tools, omdat er geen echte Linux-kernel is.
Drie jaar later kwam WSL 2 uit, met als belangrijkste verschil dat die wel een echte Linux-kernel gebruikt. De kernel draait in een lichtgewicht virtuele machine (VM), beheerd door (een in Windows Home uitgeklede versie van) Hyper-V, waardoor een sandbox-omgeving wordt gecreëerd. WSL 2 maakt gebruik van een virtueel bestandssysteem: toegang tot Windows-bestanden is mogelijk, maar Linux-bestanden blijven geïsoleerd binnen de VM, overigens net als Linux-processen. Ook de netwerkstack van de VM kan van het hostnetwerk worden geïsoleerd, of door netwerkconfiguraties of firewallregels binnen Windows worden beperkt. Precies doordat een Linux-kernel wordt gebruikt, biedt WSL 2 over het algemeen betere bestandsinvoer/uitvoer- en netwerkoperaties evenals een hogere mate van compatibiliteit.
SL 2: dankzij Hyper-V kunnen zowel de Windows NT- als Linux-kernel parallel aan elkaar draaien.
3 WSLg: wat?
WSLg (g staat voor GUI ofwel Graphical User Interface) is een uitbreiding van WSL 2 en werd in 2021 algemeen beschikbaar. WSLg gebruikt het Wayland-protocol, een modern alternatief voor het oudere X11-systeem, om grafische Linux-applicaties weer te geven. De grafische uitvoer van Wayland wordt vervolgens via FreeRDP, een opensource-implementatie van RDP (Remote Desktop Protocol), doorgegeven aan de ingebouwde RDP-client in Windows, zodat deze netjes in het Windows-bureaublad kan worden geïntegreerd. Hierdoor blijven deze toepassingen veilig binnen de sandbox-omgeving van Linux, terwijl ze toch op je Windows-bureaublad verschijnen.
WSLg maakt gebruik van FreeRDP om ‘op afstand’ de Linux-GUI te kunnen bedienen.
4 Systeemeisen
WSL 2 is dus erg handig, maar heeft wel enkele specifieke hardware- en software-eisen.
Wat hardware betreft, heb je een 64bit-processor met ondersteuning voor virtualisatie nodig, omdat WSL 2 gebruikmaakt van de VM van Hyper-V. Controleer of hardware-virtualisatie in het UEFI/BIOS is ingeschakeld, doorgaans aangeduid als AMD-V of Intel VT-x.
Dit kun je ook vanuit Windows controleren: open Taakbeheer met Ctrl+Shift+Esc, ga naar Prestaties, kies Processor en controleer of de status van Virtualisatie op Ingeschakeld staat.
Verder heb je een up-to-date stuurprogramma voor je grafische kaart met ondersteuning voor WSLg nodig en voldoende vrije schijfruimte. En je hebt minimaal Windows 10 versie 19044 (21H2) nodig of Windows 11. Je controleert dit via Instellingen / Systeem, bij Info.
Je hebt hardware-virtualisatie nodig om met WSL 2 (en WSLg) aan de slag te kunnen.
5 Automatische installatie
De periode dat deelname aan het Windows Insider Programma vereist was om toegang tot WSLg te krijgen, ligt gelukkig achter ons. Als je systeem aan de vermelde systeemeisen voldoet, kun je meteen aan de slag.
Je kunt WSL met één commando installeren. Dit doe je vanuit Opdrachtprompt of de Windows Terminal, die je als administrator opstart. We gaan uit van de Terminal: klik met de rechtermuisknop op de Windows-startknop, kies Terminal (beheerder) en bevestig met Ja. In Windows 10 kies je in plaats van Terminal voor de optie Windows PowerShell (Admin). Voer het volgende commando uit: wsl --install. Windows zal nu vragen je pc te herstarten.
Hiermee activeer je niet alleen de nodige componenten voor WSL 2, maar je zet tegelijk al een Linux-distributie klaar. Standaard is dit Ubuntu, maar in paragraaf 7 zie je hoe je ook andere Linux-distributies kunt installeren.
Je kunt WSL en Ubuntu met één commando activeren en installeren.
6 Handmatige installatie
Microsoft heeft het dus zeer eenvoudig gemaakt om WSL te activeren, maar wellicht ben je geïnteresseerd in het onderliggende installatieproces. In plaats van het installatiecommando op de Terminal te gebruiken, kun je het proces ook ‘handmatig’ sturen, zodat je meer inzicht krijgt in wat er precies gebeurt.
Dit kan als volgt. Druk op Windows-toets+R en voer optionalfeatures uit. In het venster Windows-onderdelen scrol je naar Windows-subsysteem voor Linux en zorg je dat dit is aangevinkt. Schakel ook het onderdeel Platform voor virtuele machine in. Bevestig je keuzes met OK en herstart Windows.
Lukt dit om een of andere reden niet, dan kan het ook via PowerShell als administrator. Voer achtereenvolgens de volgende commando’s uit:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Nadat telkens de melding van een succesvolle uitvoering is verschenen, herstart je ook nu je pc.
Om er zeker van te zijn dat je over de recentste Linux-kernel beschikt, download en installeer je het WSL 2 Linux-kernel-updatepakket via https://aka.ms/wsl2kernel, waar je op WSL 2 Linux kernel update for x64 machines klikt. Dubbelklik vervolgens op het gedownloade msi-bestand. Een installatiewizard verschijnt. Klik hier op Next en bevestig met Ja en Finish.
Je hebt hardware-virtualisatie nodig om met WSL 2 (en WSLg) aan de slag te kunnen.
Virtualisatie-onderdelen
Om WSL te activeren, moet je bepaalde Windows-onderdelen inschakelen die met virtualisatie te maken hebben. Het gaat om Platform voor virtuele machine en Windows-subsysteem voor Linux, beide nodig voor een gevirtualiseerde Linux-kernel.
In Windows Home vind je tevens het onderdeel Windows Hypervisor-platform. Dit moet je inschakelen als je met een externe hypervisor oftewel VM-manager wilt werken, zoals Oracle VirtualBox.
In Windows Pro is er ook nog het onderdeel Hyper-V, waarmee je een volwaardige hypervisor inschakelt om zelf virtuele machines te creëren en beheren. Daarnaast biedt Windows Pro nog de onderdelen Windows-Sandbox voor een virtuele Windows-testmachine, Microsoft Defender Application Guard voor het openen van sites en documenten in afgeschermde browser- en Office-instanties, en Containers voor het gebruik van Windows-containers.
Windows Pro nog wat meer onderdelen die met virtualisatie te maken hebben.
7 Zelf een Linux-distributie installeren
Bij de geautomatiseerde installatie (zie paragraaf 5) wordt Ubuntu standaard mee geïnstalleerd. Hoe je hiermee aan de slag gaat, lees je vanaf de volgende paragraaf. Eerst vertellen we je hoe je zelf een (extra) Linux-distributie installeert via WSL.
We gaan ervan uit dat je met grafische Linux-applicaties wilt werken en dus WSL 2 (met uitbreiding WSLg) nodig hebt. Stel daarom WSL 2 in als standaardversie. Klik in het startmenu met rechts op Opdrachtprompt of PowerShell, kies Als Administrator uitvoeren en voer het volgende commando uit:
wsl --set-default-version 2
Een Linux-distributie ophalen en installeren kan als volgt. Voer eerst het volgende commando uit om te zien welke Linux-distributies al op je systeem zijn geïnstalleerd:
wsl --list -all
Vraag vervolgens een lijst van beschikbare distributies op (op dit moment zijn dat veertien distributieversies):
wsl --list --online
Om een distributie te installeren, voer je dit commando uit:
wsl --install -d <Name>
Bijvoorbeeld:
wsl --install -d Ubuntu24.04
of
wsl --install -d kali-linux
Het kan ook vanuit de Microsoft Store: typ Linux in de zoekbalk rechtsboven, houd de muispijl boven de gewenste distributie en selecteer Downloaden, waarna de installatie kan beginnen.
Je kunt je Linux-distributies vanaf de opdrachtregel installeren en beheren.
8 Distributies beheren
Met het volgende commando krijg je een lijst van alle geïnstalleerde distributies, hun status (Running of Stopped) en de WSL-versie waaronder ze draaien:
wsl --list --verbose
Of korter:
wsl -l -v
Omdat je WSL 2 als standaard hebt ingesteld, zou er normaal gesproken 2 moeten staan in de kolom Version. Je kunt een distributie ook naar een andere versie omzetten met:
wsl --set-version <NAME> <VersieNummer>
Bijvoorbeeld:
wsl --set-version Debian 2
Wanneer je het commando wsl zonder verdere parameters uitvoert, start de standaard Linux-distributie, normaliter Ubuntu. Om een specifieke distributie te starten, gebruik je:
wsl -d <naam>
De distributies vind je trouwens ook terug onder hun volledige naam in het Windows-startmenu, zoals Ubuntu of Kali Linux.
Wil je een andere distributie als standaard instellen, voer dan deze opdracht uit:
wsl --setdefault <naam>
Het is mogelijk een distributie met een specifieke gebruiker op te starten vanuit de Opdrachtprompt met:
wsl --user <gebruikersnaam>
In Ubuntu bijvoorbeeld creëer je een gebruiker met:
sudo adduser <gebruikersnaam>
En whoami vertelt je wie is aangemeld.
Een opgestarte distributie sluit je af met het commando exit vanuit de Linux-terminal of je voert in de Windows Opdrachtprompt wsl --shutdown uit. Dit laatste commando sluit overigens alle draaiende distributies in één keer af.
Je kunt een distributie, inclusief de bijbehorende software, gegevens en instellingen, verwijderen met:
wsl --unregister <naam>
Bijvoorbeeld:
wsl --unregister Ubuntu-22.04
Je kunt een distributie ook meteen met de gewenste gebruiker opstarten.
9 Pakketbeheer in Ubuntu
Wanneer je een Linux-distributie via WSL installeert, word je bij de eerste opstart om een gebruikersnaam (UNIX-name) en wachtwoord gevraagd. Daarna beland je in de terminal, achter een prompt als <gebruikersnaam>@<computernaam>:~$. We nemen hier de standaarddistributie Ubuntu als voorbeeld. Met het commando lsb_release -a ontdek je de exacte Ubuntu-versie en met uname -r de versie van de Linux-kernel (zoals 5.15.133.1-microsoft-standard-WSL2).
Werk de Ubuntu-pakketbronnen bij en update de geïnstalleerde pakketten met de volgende commando’s:
sudo apt update
sudo apt upgrade
Controleer welke pakketten een update nodig hebben met:
sudo apt list --upgradable
Om een specifiek pakket te updaten, gebruik je:
sudo apt --only-upgrade install <pakketnaam>
Zoek naar een exacte pakketnaam met:
apt search <zoekterm>
En installeer deze vervolgens met:
sudo apt install <pakketnaam>
Bijvoorbeeld:
sudo apt install imagemagick
Handig om weten: met het commando clear maak je het terminalvenster leeg.
In een vers geïnstalleerde Ubuntu (22.04) zijn doorgaans heel wat pakketten aan een update toe.
10 Grafische applicaties
We gaan ervan uit dat WSL 2 actief is en dat je probleemloos Linux-distributies kunt installeren en starten. Dit betekent dat WSLg beschikbaar is en je grafische Linux-applicaties kunt draaien. Mocht het opstarten van grafische Linux-applicaties onverhoopt niet werken, kun je ontbrekende onderdelen voor WSLg herstellen met deze commando’s:
wsl --update
wsl --shutdown
Met dit laatste commando stop je alle draaiende WSL-instanties en sluit je de achterliggende virtuele machine af. Om WSL daarna weer op te starten, hoef je alleen een WSL-commando uit te voeren of een Linux-distributie te starten.
We nemen verder Ubuntu als voorbeeld en installeren we de grafische bestandsbrowser Nautilus. Start de Ubuntu-terminal en voer dit commando uit:
sudo apt install nautilus -y
Start de app daarna op met het commando nautilus. Op dezelfde manier kun je andere grafische apps installeren, zoals:
VLC Media Player:
sudo apt install vlc -y
Fotobewerker GIMP:
sudo apt install gimp -y
Gnome Text Editor:
sudo apt install gnome-text-editor -y
Deze drie voorbeelden start je later dan op met respectievelijk vlc, gimp en gnome-text-editor.
WSLg in actie: de grafische bestandsbrowser Nautilus voor Linux, vanuit Windows.
11 X-server
WSLg kan overweg met de meeste grafische Linux-applicaties, maar soms is de weergave gebrekkig. Voor X11-applicaties kun je het dan nog eens met een X-server proberen, zoals het gratis VCXsrv. Download de server via www.sourceforge.net/projects/vcxsrv en installeer deze met de standaardinstellingen. Start daarna XLaunch via het Windows-startmenu. Kies achtereenvolgens: Multiple Windows (-1) en Start no client, en zet een vinkje bij Disable access control. Geef desgevraagd je firewall toestemming voor de netwerkverbinding van de server. Open vervolgens je Ubuntu-terminal en voer de volgende commando’s uit:
echo export DISPLAY=$(hostname).local:0.0 >> ~/.bashrc
source ~/.bashrc
Controleer deze aanpassing eventueel met:
gnome-text-editor ~/.bashrc
Probeer het uit met:
sudo apt install x11-apps
En start grafische testapplicaties zoals xcalc, xclock of xeyes. Wanneer je in het Windows-systeemvak over het XLaunch-pictogram beweegt, verschijnt als het goed is 1 clients.
Een alternatief voor WSLg: grafische Linux-uitvoer naar Windows via X-server.
12 Wisselwerking
Dankzij WSL(g) kun je (grafische) Linux-applicaties binnen je Windows-omgeving opstarten. De geïnstalleerde distributies vind je bij naam in het startmenu van Windows. Hier tref je ook geïnstalleerde Linux-applicaties aan binnen de map van de distributie en kun je deze zelfs aan je taakbalk of startmenu vastpinnen. Het is mogelijk Linux-commando’s rechtstreeks vanuit de Windows Opdrachtprompt uit te voeren door ze vooraf te laten gaan door wsl. Bijvoorbeeld, om de mapinhoud te bekijken, voer je wsl ls uit. Wanneer je Verkenner opent zie je onderaan in het navigatiepaneel de Linux-mascotte Tux, met aparte mappen voor elke geïnstalleerde Linux-distributie.
Deze integratie werkt ook andersom. Zo kun je diverse commando’s op de Linux-terminal uitvoeren, zoals dir om de mapinhoud op te vragen. Je kunt vanuit Linux bovendien door je Windows-mappenstructuur navigeren. Voer mount uit in de Linux-terminal en je ziet stations zoals /mnt/c, /mnt/d (voor C- en D-stations enzovoort). Navigeer door deze mappen met cd, bijvoorbeeld: cd /mnt/c/windows. Keer terug naar de bovenliggende map met cd ..
Je kunt ook een grafische bestandsbrowser gebruiken, zoals Nautilus. Ga hiervoor naar +Other locations / Computer en navigeer naar het gewenste station, zoals /mnt/c.
Je vindt Linux-applicaties ook terug in het Windows-startmenu en op de taakbalk.