wsl
När man ska köra Linux i Windows så är det WSL 2 som gäller. WSL 2 introducerade viktiga förändringar som en riktig Linuxkärna genom en Hyper-V-funktioner. Man behöver inte ha Hyper-V aktiverat i Windows eftersom WSL använder en slimmad Hyper-V. Här hittar du info om winget.
Installation
Installera stöd för att komma åt USB från värddatorn. Man behöver även installera klient verktygen för USB/IP i Linux (apk add linux-tools-usbip). Sedan så behöver du ha 666 rättigheter i /dev/bus/usb/ för att vanliga användare ska kunna använda usb.
winget install dorssel.usbipd-win
usbipd list
usbipd wsl attach --busid <busid> -d <distribution>
usbipd wsl detach --busid <busid>
Bli administratör i powershell och aktivera Windows funktioner.
dism /norestart /online /enable-feature /all /featurename:microsoft-windows-subsystem-linux
dism /norestart /online /enable-feature /all /featurename:virtualmachineplatform
Starta om datorn för att slutföra installationen. Ladda sedan ner WSL2 Linux kernel genom att bli administratör i powershell och uppdatera till senaste Linux kernel.
wsl --update
wsl --status
Importera ett root-filsystem från den distribution du vill använda. Om du har flera diskar i din dator så kan det vara bra att inte lägga detta på systemdisken med en ssd-disk vill man dock ha för prestanda. Lägg till --vhd om du vill importera från en vhdx fil istället för tar.
wsl --import <namn> <installations plats> <sökväg till tar.gz mini root-filsystem>
Backup och återställning
Det finns flera sätt att ta backup eller återställa din WSL. Man kan både exportera och importera en tar eller vhdx disk fil.
wsl --export <namn> <filnamn för tar>
wsl --export <namn> <filnamn för vhdx> --vhd
wsl --import <namn> <installations plats> <sökväg till tar.gz mini root-filsystem>
wsl --import <namn> <installations plats> <sökväg till vhdx disk fil> --vhd
wsl --import-in-place <namn> <sökväg till vhdx disk fil>
Kommandon
wsl -d <distribution>
wsl -d <distribution> --cd ~
wsl -l
wsl -l -all
wsl --help
wsl --set-default <distribution>
wsl --user root -d <distribution> chmod 666 /dev/bus/usb/*/0*
Måste vara administratör i powershell för att köra
optimize-vhd
wmic diskdrive list brief
wsl --mount DeviceID --partition 3
wsl --update
Man kan köra optimize-vhd för att göra vhdx filen mindre. Gör endast detta när du stoppat den virtuella maskinen.
Kommandon om interop är true
/mnt/c/Windows/System32/Shutdown.exe /r /t 0
/mnt/c/Windows/System32/taskkill.exe /PID <pid> /F
/mnt/c/Windows/System32/tasklist.exe /M
Konfiguration
Man har WSL Settings GUI som man kan göra en del globala inställningar som bryggat nätverk istället för NAT för sina vm.
WSL Settings skriver till filen C:\Users<användarnamn>.wslconfig
[wsl2]
networkingMode=mirrored
För varje Linux distribution du har installerad så kan du göra special konfiguration via /etc/wsl.conf.
[interop]
enabled = false
appendWindowsPath = false
[network]
generateResolvConf = false
hostname = <namn>
[user]
default = <användarnamn>
Lägg sedan in detta i /etc/resolv.conf
nameserver 1.1.1.3
nameserver 1.0.0.3
nameserver 2606:4700:4700::1113
nameserver 2606:4700:4700::1003
Hitta mer konfiguration här.
Nätverk
- Om du startat upp en webbtjänst på tex port 8080 i WSL så kan du komma åt den från http://localhost:8080.
- Här kan du läsa om mer avancerad nätverkskonfiguration.
- WSL-instansens IP-adress kommer inte att ändras även om du startar om din dator om du lämnar dessa registernycklar oförändrade.
Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
Starta automatiskt WSL när Windows startar
Bästa alternativet är att använda schemaläggaren i Windows.
Schemaläggaren är en komponent i Microsoft Windows som ger möjlighet att schemalägga start av program eller skript vid fördefinierade tidpunkter eller efter angivna tidsintervall.
- Öppna Task Scheduler genom att klicka på Start och söka efter "Schemaläggaren".
- Klicka på "Åtgärd" och välj "Skapa en standardaktivitet".
- Fyll i namn och beskrivning för det du vill starta.
- Välj “När jag loggar in".
- Välj "Starta ett program".
- I fältet "Program eller script" skriver du eller väljer C:\Windows\System32\wsl.exe.
- Du kan lägga till argument ifall du behöver detta. Exempel “-d Ubuntu -u root service ssh start” eller "/usr/sbin/sshd". I detta fall så är -d vilken instans du vill använda och -u är för användare. Sedan själva kommandot som sak köras i WSL. Dock så går det att konfigurera detta i wsl.conf istället.
- Sedan är det bara att spara.
Man kan behöva köra vissa program som SYSTEM användaren om men ej vill ha en popup. Dock så funkar inte detta med alla program som tex WSL.
Att lägga på vilkor om nätverk och Vilken anslutning som helst kan hjälpa vissa program.
Nu ska WSL startas när du starar om datorn.
Man kan även lägga genvägar i denna mapp
C:\Users<användare>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup för att starta program.
Rootfs
Tips
- Om man inte will ha något ljud från terminalen i WSL så kan man styra det lätt med att klicka på Volume Control i Windows taskbar och ta bort ljudet för Console Window Host.
Links