Zo draai je Linux direct in Windows

Door: Toon van Daele | 20 augustus 2021 13:14

How To

Je wilt af en toe met Linux aan de slag, maar om daar nou telkens een dualboot-installatie voor aan te spreken … Het is veel comfortabeler om Linux-commando’s en zelfs Linux-applicaties direct vanuit je vertrouwde Windows-omgeving te gebruiken. Dat kan met WSL (Windows Subsysteem voor Linux). Linux dat direct onder Windows draait, wie had dat ten tijde van Windows XP en Windows 7 kunnen denken?

WSL is een compatibiliteitslaag voor Windows 10 waarmee je een Linux-omgeving rechtstreeks in Windows draait, zonder verdere modificaties en zonder (aanvullende) hypervisor of dualboot-configuraties. WSL biedt een volwaardige Linux-omgeving en integreert zich naadloos in Windows.

De eerste versie van WSL kwam in 2016 uit (Windows 10 1709 64 bit), maar dat bleek weinig meer dan een Linux-compatibele kernelinterface waarin Linux-commando’s simpelweg naar de overeenkomstige systeemfuncties van Windows werden omgezet. WSL 1 leek dus wel op Linux, maar was het niet.

Sinds medio 2019 bracht Microsoft daarom opvolger WSL 2 uit en deze bevat wel degelijk een heuse Linux-kernel. WSL 2 maakt complexere Linux-commando’s mogelijk en zorgt voor een snellere bestandsafhandeling. Met deze opzet mikt Microsoft vooral op de grote schare Linux-ontwikkelaars die Windows als desktop-OS willen blijven gebruiken.

01 Installatie WSL

In het kader ‘Insider Preview’ lees je hoe je WSL 2 in principe met nauwelijks meer dan een commando kunt installeren, maar die methode is vooralsnog voorbehouden voor Windows Insider Preview build 20262 en hoger. We gaan ervan uit dat je met een ‘reguliere’ Windows 10-versie werkt. De WSL 2-installatie vergt dan net iets meer inspanning. Controleer voor alle zekerheid of je wel met Windows 10 64 bit versie 1903 (build 18362) of hoger werkt – dat vertelt het commando ver in de opdrachtprompt je wel.

Voor je Linux-distributies kunt installeren in Windows, moet je eerst WSL zelf inschakelen. Dat kan als volgt. Klik in het Windows-startmenu met rechts op Windows PowerShell en kies Als administrator uitvoeren. Na je bevestiging voer je het volgende uit in het PowerShell-venster:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Als het goed is, verschijnt even later de melding “The operation completed successfully”, waarna je Windows herstart. In feite is WSL 1 nu al geïnstalleerd, maar je hebt natuurlijk liever de échte Linux en dat vergt nog enkele extra installatiestappen.

Mocht je WSL naderhand weer willen verwijderen, dan kan dat met het commando:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Het inschakelen van WSL is zo gebeurd.

Alternatieven

Naast WSL zijn er nog wel andere manieren om Linux-commando’s uit te kunnen voeren zonder je vertrouwde Windows-omgeving te verlaten. De meest complete Linux-ervaring, inclusief een heuse desktopomgeving, verkrijg je met behulp van virtualisatiesoftware, zoals het gratis VirtualBox of VMware Workstation Player.

Een andere optie is Cygwin. Deze gratis tool creëert een POSIX-compatibele omgeving die native in Windows draait en die je toegang geeft tot een bash-shell met een uitgebreide collectie van GNU- en opensource-tools, waarvan de functionaliteit vergelijkbaar is met die van een Linux-distributie.

Verder is er nog Git for Windows, een gratis toolset waarmee je Git zowel in een CLI- als GUI-interface kunt gebruiken. Een van deze tools is Git Bash, een emulatielaag voor de Git-opdrachtregel, met ondersteuning van diverse bash-tools zoals cat, find, scp en ssh.

Ook Git for Windows geeft je toegang tot een aantal gebruikelijke Linux/Bash-commando’s.

02 Installatie VM-platform

Wat we je nog niet verteld hebben (maar wat wel al uit de eerste afbeelding valt af te leiden), is dat de Linux-kernel van WSL2 de installatie vereist van een hypervisor, een virtuele machinebeheerder. WSL 2 gebruikt daarvoor een lichtgewicht VM op basis van Hyper-V en die zit al in Windows ingebouwd, ook in Windows Home.

Maak je overigens niet te veel zorgen: je hoeft weinig meer te doen dan die in te schakelen, verder heb je eigenlijk geen omkijken meer naar deze virtuele omgeving. Ook dit VM-platform kun je inschakelen vanuit een PowerShell-venster dat je als administrator hebt opgestart:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Als het goed is, verschijnt ook deze keer heel snel de melding dat de operatie succesvol verlopen is, waarna je Windows nogmaals herstart.

WSL 2 kan niet zonder het (op Hyper-V gebaseerde) platform voor virtuele machines.

03 Update Linux-kernel

Om er zeker van te zijn dat je met de nieuwste Linux-kernel aan de slag gaat, download je die via de link www.tiny.cc/wslx64. We gaan er wel van uit dat je met een x64-systeem werkt. Mocht je over een ARM64-systeem beschikken, dan heb je de kernel nodig via www.tiny.cc/arm64.

Met een dubbelklik op het msi-bestand start je de installatie: druk op Next, bevestig met Ja en rond af met Finish. Je wilt met WSL 2 aan de slag, dus stel je die in als standaardversie van WSL. Dat doe je vanuit een PowerShell-venster dat je als administrator opstart, met het commando:

wsl --set-default-version 2

De installatie van de Linux-kernelupdate vergt maar enkele muisklikken.

04 Installatie Linux-distro

Nu is alles gereed voor de installatie van een heuse Linux-distributie. Immers, wanneer je het commando wsl --list --all uitvoert, zie je dat er voor WSL momenteel nog geen distributies zijn geïnstalleerd. Zo’n installatie vergt een bezoekje aan www.aka.ms/wslstore, of je opent zelf de Microsoft Store vanuit het Windows-startmenu en tikt in de zoekbalk rechtsboven Linux in. Er verschijnen verschillende opties, maar wij gaan voor de installatie van Ubuntu 20.04 LTS. In het kader ‘Insider Preview’ lees je dat er nog andere distro’s zijn voor WSL, maar op het moment van schrijven was Ubuntu 21.04 (LTS) nog niet beschikbaar.

Klik dus maar op Ubuntu 20.04 LTS en druk op de knop Downloaden en vervolgens Installeren (ca. 450 MB). Na afloop druk je op de knop Starten, of je start Ubuntu 20.04 LTS op vanuit het Windows-startmenu. De eerste keer dat je een pas geïnstalleerde Linux-distro start, opent een consolevenster en moet je even wachten tot alle benodigde bestanden zijn uitgepakt op je systeem. Vervolgens wordt je om een new UNIX username gevraagd. Die hoeft niet dezelfde te zijn als je Windows-account, maar je gebruikt het best alleen kleine letters zonder spaties. Geef ook een wachtwoord op.

Na de installatie vraagt Ubuntu om een gebruikersnaam en wachtwoord.

Insider Preview

Microsoft heeft onder de naam Windows Insider een programma opgezet voor gebruikers die willen deelnemen aan het uittesten van bèta Windows-builds. Je kunt je hiervoor inschrijven met je Microsoft-account via Windows Instellingen / Bijwerken en beveiliging / Windows Insider-programma. Je kunt uit een paar kanalen kiezen, maar als je (althans op het moment van schrijven) van enkele nieuwe WSL-functies gebruik wilt maken, zoals een vereenvoudigde installatie en ondersteuning van Linux GUI-applicaties, dan kies je het best voor het Dev-kanaal. We raden je wel af om dit op een productiemachine te doen.

Beschik je over Insider Preview build 20246 of hoger, dan kun je WSL en de noodzakelijke componenten normaliter met één commando installeren vanuit PowerShell (uitvoeren als administrator): wsl --install. Hiermee installeer je zowel WSL, het VM-platform als Ubuntu. Wil je (ook) een andere distributie, voer dan eerst wsl --list --online uit. Je krijgt dan een overzicht van de beschikbare distro’s, die je dan als volgt installeert: wsl --install -d <NAME>, bijvoorbeeld wsl --install -d kali-linux. Of je installeert zo’n distro vanuit de Microsoft Store.

Op dit moment kun je kiezen uit een handvol Linux-distributies voor WSL.

05 Installatie Windows Terminal

Toegegeven, deze stap is optioneel, maar biedt wel een handig en veelzijdiger alternatief voor de standaard Ubuntu-terminal: de installatie van de nieuwe Windows Terminal. Ook dit kan vanuit de Microsoft Store. Zoek hier naar Terminal, klik op Windows Terminal en volg de verdere installatie-instructies.

Standaard opent deze Terminal een PowerShell-console, maar via het pijlknopje komen andere opties beschikbaar, waaronder Command Prompt en Ubuntu-20.04. Klik deze laatste aan om een Ubuntu-shell in een nieuw tabblad te openen. Klik nogmaals op het pijlknopje en kies Settings. Hier kun je eventueel Ubuntu-20.04 als Default profile instellen en het standaard aantal rijen en kolommen vastleggen.

De vernieuwde Windows Terminal maakt het schakelen tussen verschillende consoles erg makkelijk.

GUI-installatie

Vind je die lastige dism-commando’s uit stappen 01 en 02 maar niks, weet dan dat je zowel WLS als het virtuele platform ook vanuit een grafische Windows-omgeving kunt inschakelen (en weer uitschakelen). Druk op Windows-toets+R en voer optionalfeatures uit. In het venster Windows-onderdelen plaats je een vinkje bij Windows-subsysteem voor Linux. Bevestig met OK en herstart Windows. Om WSL 2 te installeren, open je dit venster nogmaals en plaats je deze keer een vinkje bij Platform voor virtuele machine. Bevestig en start Windows nog eens opnieuw op.

Houd er rekening mee dat andere hypervisors, zoals VirtualBox, wellicht niet meer zullen werken zolang Platform voor virtuele machine (en dus onderliggend Hyper-V) is ingeschakeld. Dit geldt trouwens ook voor de werkwijze met de dism-commando’s.

06 Basiscommando’s

Vanuit deze console kun je ook nagaan of je wel de juiste Ubuntu-versie hebt geïnstalleerd, met uname -a of lsb_release -a.

Verder doe je er goed aan om na de installatie van een distro bronpakketinformatie te downloaden via sudo apt update. Het extra commando sudo staat voor ‘superuser do’ en geeft je de nodige machtigingen om systeemcommando’s op rootniveau te gebruiken. Wanneer je vervolgens apt list –upgradable uitvoert, krijg je een overzicht van de pakketten die in aanmerking komen voor een upgrade. De upgrade zelf voer je dan uit met sudo apt --only-upgrade install <pakketnaam>, bijvoorbeeld sudo apt --only-upgrade install. Om alle pakketten in één keer te upgraden, gebruik je sudo apt upgrade waarna je met y bevestigt.

Een van de standaard geïnstalleerde pakketten is bijvoorbeeld een simpele webserver die je met één commando activeert: python3 -m http.server. Door vervolgens op die pc naar http://localhost:8000 te surfen, krijg je de inhoud van de servermap te zien.

Een compleet nieuw pakket installeren kan ook, met sudo apt install <pakketnaam>. Een leuk voorbeeld is sudo apt install imagemagick. Twijfel je over de juiste naam, dan helpt apt search <zoekterm> je wel op weg. ImageMagick is een krachtige functiebibliotheek voor fotomanipulatie (zie ook www.imagemagick.org/index.php). We houden het hier bij één voorbeeldje:

convert foto1.jpg -crop 800x600+0+0 -rotate 45 foto2.jpg

Dit commando snijdt een foto uit volgens de opgegeven afmetingen en offset, en roteert die vervolgens 45 graden, waarna het resultaat in een ander fotobestand wordt bewaard.

Ook in Linux kun je met heel wat interessante en leuke tools aan de slag, zoals hier ImageMagick.

07 Configuratie

We hebben tot nu toe maar één Linux-distributie onder WSL geïnstalleerd (Ubuntu), maar je kunt er op vergelijkbare manier nog andere installeren. Een distro verwijderen is ook altijd mogelijk, met wsl –-unregister <distributienaam>. Je moet dan wel beseffen dat je langs deze weg alle instellingen, data en software verwijdert die rechtstreeks aan die distro zijn gekoppeld. Een ‘verse’ (her)installatie is uiteraard nog altijd mogelijk.

Heb je meerdere gebruikers gecreëerd in een distributie (met sudo adduser <gebruikersnaam>), dan start je die met wsl –-user <gebruikersnaam> voor die gebruiker op. Gebruik het commando <distributienaam> config -default-user <gebruikersnaam> om die distro standaard met een bepaalde gebruiker op te laten starten.

Voor meer geavanceerde configuratie-instellingen kun je nog terecht op www.tiny.cc/wslcfg, onder meer voor het standaard koppelen van stations, waarbij je het configuratiebestand /etcs/wls.conf desnoods zelf creëert (vanuit Ubuntu) met bijvoorbeeld nano /etc/wsl.conf. Of je creëert een globaal configuratiebestand .wslconfig in de map %userprofile%, bijvoorbeeld om de optimale hoeveelheid swapruimte, geheugen en processorkernen toe te kennen aan WSL 2. Meer feedback hierover vind je op www.tiny.cc/wslglob.

Je kunt een distributie ook altijd verwijderen (en weer vers installeren).

08 Wisselwerking

We zeiden al dat Linux via WSL mooi geïntegreerd is in Windows. Dat zie je vanaf Windows 10 build 19603 ook terug in de Verkenner: het navigatievenster heeft er namelijk een herkenbaar icoontje (pinguïn) bijgekregen, waar je in de mappenstructuur van de geïnstalleerde Linux-distro’s kunt navigeren.

Verder kun je de inhoud van het klembord tussen Linux en Windows delen, en Windows-tools rechtstreeks vanuit de WSL-opdrachtregel opstarten: probeer het maar eens met notepad.exe of explorer.exe. Deze Windows-tools worden trouwens op dezelfde manier als native Linux-tools behandeld, zoals uit het volgende voorbeeld blijkt:

ipconfig.exe | grep IPv4 | cut -d: -f2

Hierbij wordt de uitvoer van het Windows-commando beperkt (grep) tot de regels met 'IPv4' en vervolgens worden de ongewenste kolommen weggeknipt (cut).

Ook in de omgekeerde richting zet deze wisselwerking zich door. Je kunt namelijk ook Linux-binary’s vanaf de opdrachtprompt of vanuit PowerShell uitvoeren, via het commando wsl. Om de actuele mapinhoud op te vragen, kun je bijvoorbeeld wsl ls -la uitvoeren, en om je standaard Linux-distributie te updaten hoef je maar wsl sudo apt-get update in te tikken. En ook hier kun je commando’s mixen, bijvoorbeeld:

dir | wsl grep <tekstdeel> of wsl ls -la > mapinhoud.txt.

Linux- en Windows-commando’s en parameters gezellig gemixt.

09 Docker (installatie)

Omdat in WSL 2 een volwaardige Linux-kernel actief is, kun je het gerust ook wat ambitieuzer aanpakken. Wat dacht je van het draaien van heuse Docker-containers?

Download en installeer eerst Docker Desktop for Windows. Zorg dat je het vinkje laat staan bij Install required Windows components for WSL 2 en bevestig met OK. Herstart Windows na de installatie.

Er zijn nu verschillende manieren om na te gaan of Docker Desktop wel degelijk WSL 2 gebruikt. Je kunt hiervoor Docker Desktop opstarten vanuit het Windows-startmenu. Klik vervolgens op het tandwielpictogram en open de rubriek General. Hier zou een vinkje moeten staan bij Use the WSL 2 based engine. In de rubriek Resources / WSL Integration hoort er een vinkje te staan bij Enable integration with my default WSL distro en eventueel ook bij specifieke distro’s (onder additional distros).

Het is overigens geen slecht idee om via de knop Start de tutorial te volgen. Die leidt je in vier stappen door het proces van het klonen van een repository, het bouwen van een image, het opstarten van een container en, na je aanmelding bij Docker Hub, het bewaren en delen van je image.

De ingebouwde Docker-tutorial helpt je bij je eerste Docker-stappen.

10 Docker (gebruik)

Laten we nu bij wijze van experiment ook zelf een container-image downloaden van de officiële Docker Hub. We hebben ons oog laten vallen op NGINX, een opensource-tool die uiteenlopende services kan hosten, zoals een webserver of een mediastreamer.

We zetten daarvoor Windows PowerShell in. Hier voer je het commando docker pull nginx uit. Na afloop tik je docker images in voor een lijst met images die op je pc beschikbaar zijn. Vervolgens creëer je een nieuwe container, gebaseerd op het gedownloade NGINX-Docker-image:

docker run –-name docker-nginx -p 80:80 -d nignx

Je krijgt nu de unieke ID van de zonet gecreëerde container te zien en zou de NGINX-webinterface moeten kunnen benaderen via http://localhost[:<poortnummer>]. Om een Docker-container te stoppen, voer je docker stop docker-nginx uit (of docker stop <minimaal-12-eerste-tekens-van-het-id>).

Een nieuwe container op basis van het NGINX-image: poort 80 bleek al bezet op ons systeem.

11 WSLg (introductie)

Microsoft heeft duidelijk nog meer in petto voor WSL. Zo kunnen Windows Insider-gebruikers met Windows Preview build 21364 en hoger Linux GUI-apps (graphical user interface) direct in Windows gebruiken. Dit project kreeg de naam WSLg mee; voor een korte introductievideo kun je terecht op www.tiny.cc/tubewsl.

WSLg beschikt trouwens ook al over ingebouwde ondersteuning voor gpu-versnelde 3D-graphics. Het is dan wel verstandig om vGPU (virtual GPU) voor WSL ingeschakeld te hebben. Je vindt hiervoor de nodige instructies en drivers voor zowel AMD, Intel als NVIDIA op www.bit.ly/miwslg.

WSLg zit standaard al in WSL 2 als je wsl --install hebt uitgevoerd (zie kadertekst ‘Insider Preview’), bij voorkeur gevolgd door wsl –update (en wsl –shutdown, voor een herstart).

WSlg blijkt al behoorlijk goed geïntegreerd in Windows. Zo is het mogelijk om Linux-apps vanuit het Windows-startmenu op te starten. Ook kun je deze apps vastpinnen op de Windows-taakbalk. Met de toetscombinatie Alt+Tab schakel je snel om tussen opgestarte Windows- en Linux-applicaties, en ook het klembord wordt netjes gedeeld.

WSLg integreert zich mooi in Windows (hier in de taakweergave met Alt+Tab).

12 WSLg (voorbeelden)

Voldoet je systeem aan alle voorwaarden en heb je WSL correct geïnstalleerd, dan kun je eigenlijk al meteen aan de slag met Linux GUI-apps. De volgende voorbeelden kunnen je wellicht inspireren.

Laten we beginnen met de installatie van Nautilus, de grafische bestandsmanager voor de GNOME-desktop. De installatie vergt slechts één commando: sudo apt intall nautilus -y. Na afloop start je de tool met het commando nautilus.

Met hetzelfde gemak installeer je ook Gedit (de standaard teksteditor van GNOME): sudo apt install gedit -y. Om een tekstbestand te bewerken, typ je gedit <pad_naar_bestand>.

Of wat dacht je van GIMP, de opensource-editor voor rasterafbeeldingen? Ook die installeer je via sudo apt install gimp -y en start je simpelweg op met gimp. Hetzelfde geldt voor de VLC media player (sudo apt install vlc -y en vlc) en voor X11 apps, het venstersysteem inclusief een leuke app-collectie (sudo apt install x11-apps y), waarna je de diverse apps kun opstarten met xclock, xeyes, xcalc enz.

Wist je dat ook Microsoft Edge onder Linux draait? Die installeer je als volgt in WSL:

sudo curl https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_91.0.852.0-1_amd64.deb -o /tmp/edge.deb

Opstarten doe je met microsoft-edge.

Nautilus is opgestart en netjes terug te vinden op de Windows-taakbalk.

0 Reactie(s) op: Zo draai je Linux direct in Windows

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.