WSL står för Windows Subsystem for Linux och har funnits i Windows 10 sedan 2016. Det är ett system för att köra Linuxdistributioner direkt i Windows. Men med WSL översattes systemanropen i Linuxsystemet till Windows NT-kärnan. WSL byggde alltså i grund och botten på Windows. Detta gjorde att mer avancerade program inte fungerade i WSL, exempelvis Docker.

Men med WSL2 däremot kommer en riktig Linuxkärna som det går att köra i princip allt på. Inklusive Docker. Dessutom har prestandan förbättrats avsevärt.

För att kunna använda WSL2 behöver du uppdatera Windows 10 till minst build 19041. Du ser vilken version av Windows 10 du använder genom att köra programmet winver.

Hos mig fungerade inte Microsofts officiella dokumentation för att installera WSL2. Kommandot wsl installerades aldrig. Istället gjorde jag som i de nedanstående stegen.

Uppdatera först och främst Windows 10 till build 19041. Därefter börjar vi med att aktivera WSL med följande kommandon i Powershell (som administratör).

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

Starta om datorn när blir ombedd att göra så. När datorn startas och du har loggat in igen, kör du:

Enable-WindowsOptionalFeature -FeatureName VirtualMachinePlatform -Online -All

Nu måste vi starta om datorn igen innan vi går vidare. När du väl har loggat in igen sätter vi WSL2 som standard.

wsl --set-default-version 2

När du kört detta kommandot får du med största sannolikhet ett meddelande som säger: WSL 2 måste uppdateras enligt kernelkomponenten. Mer information finns på https://aka.ms/wsl2kernel. Om inte kan du hoppa över detta steget. Annars surfa in på adressen som visas och installera uppdateringen till kärnan. När detta är klart kan du köra kommandot igen för att säkerställa att du är på version 2 av WSL.

wsl --set-default-version 2

När allt är klart kan du installera valfri Linuxdistribution via Windows Store. Sök exempelvis efter Debian och installera det. När det väl är installerat startar du Debian Linux genom att söka på Debian i startmenyn.

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

För att kontrollera att Debian använder version 2 av WSL kan du köra följande kommando i PowerShell.

 wsl --list -v
   NAME      STATE           VERSION
 * Debian    Running         2

Sedan är bara att börja mecka med Linux. Behovet av en virtuell Linuxmaskin försvinner i princip helt, likaså behovet av att dualboota mellan Windows och Linux.

Docker i WSL2

Det går till och med att installera Docker genom att följa Dockers officiella dokumentation för Debian på docs.docker.com/engine/install/debian/ (om du valt Debian som distribution i WSL2 det vill säga). Vi slipper på så sätt att använda Docker Desktop för Windows.

I skrivande stund fungerar dock inte systemctl i WSL2. Istället får man starta Docker-demonen med sudo /etc/init.d/docker start.

Skulle det trots allt inte gå att starta Docker i Debian i WSL2 beror det på att Debian använder en modifierad version av nftables för NAT. Men det går att använda legacy iptables istället, då fungerar Docker. Ändra till legacy iptables med (inuti Debian):

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Vill man fortfarande använda Docker Desktop går att växla så att även det använder WSL2. Prestandan förbättras då avsevärt.

Docker i WSL2


Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.

Kommentarer

Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.

Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.