====== Windows Subsystem for Linux (WSL) ======
* Dokumentation zu WSL: [[https://learn.microsoft.com/windows/wsl/]]
* Installation und Upgrade: [[https://learn.microsoft.com/windows/wsl/install]]
* Vergleich zwischen WSL 1 und 2: [[https://learn.microsoft.com/windows/wsl/compare-versions]]
* WSL 2 nutzt einen **vollständigen Linux-Kernel**
* VirtualBox u.ä. sollten parallel zu WSL 2 funktionieren, müssen aber Hyper-V als Virtualisierung verwenden
Siehe [[windows_terminal|Windows Terminal]] für ein anpassbares und kompatibles Terminal (in Win 11 standardmäßig installiert)
[[https://youtu.be/nVxYFMa1ltM|Erklärvideo zu WSL im MS Store]]
===== WSL Kommandos =====
[[https://learn.microsoft.com/windows/wsl/basic-commands]]
* Status aller Installationen anzeigen: ''%%wsl --status%%''
* Linux Kernel updaten: ''%%wsl --update%%''
* WSL-Version für eine bestimmte Installation festlegen (Up-/Downgrade): ''%%wsl --set-version debian 2%%''
* WSL Standardversion festlegen: ''%%wsl --set-default-version 2%%'' (versionNumber kann ''1'' oder ''2'' sein)
* WSL Standardinstallation festlegen: ''%%wsl -s debian%%'' (Die Installation mit dem Namen Debian wird als Standard festgelegt)
* verfügbare Linux-Distributionen auflisten: ''%%wsl -l -o%%''
* installierte Linux-Distribution und jeweilige WSL-Version auflisten: ''%%wsl -l -v%%''
===== Installation =====
FIXME
**Infos auf dieser Wikiseite sind teilweise veraltet! Hier ein Update:** [[https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-in-the-microsoft-store-is-now-generally-available-on-windows-10-and-11/]]
**TLDR: ''%%wsl --install -d debian%%''** installiert die neuste version
**Wichtig**: WSL kann unter Win 11 auch aus dem [[https://apps.microsoft.com/store/detail/9P9TQF7MRM4R|MS Store]] installiert werden //(empfohlen)//, unterstützt mit ''WSLg'' GUI apps (Wayland & X11) und bekommt darüber schneller Updates
==== CLI ====
**Es wird empfohlen die Distributionen von der [[https://learn.microsoft.com/windows/wsl/install-manual#downloading-distributions|MS Webseite]] herunterzuladen, statt mit ''wsl --install'' zu installieren, da bspw. Debian bei letzterer Methode veraltet ist**
# list available wsl distros
wsl -l -o
# install wsl with distro of choice
wsl --install -d debian
Alternativ Distribution als *.appxbundle herunterladen (siehe oben):
$wsl="debian.appxbundle"
curl -Lo ./$wsl https://aka.ms/wsl-debian-gnulinux
Add-AppxPackage ./$wsl
Invoke-Item ./$wsl # or double click the *.appxbundle
wsl -l -v
==== GUI ====
* Optionale Features aktivieren: ''optionalfeatures'' in Start/Terminal/Win+R eingeben
* ''Windows Subsystem for Linux'' (**wird nur gebraucht wenn man WSL nicht aus dem MS Store installiert hat oder wenn man WSL1 verwenden möchte**)
* ''Virtual Machine Platform'' (**nur für WSL2**)
* Linux Distributionen für WSL aus dem Microsoft Store installieren: [[https://aka.ms/wslstore]]
===== Config =====
[[https://learn.microsoft.com/windows/wsl/wsl-config]]
==== Windows ====
Diese globalen Einstellungen gelten für alle WSL2 Instanzen!
# https://learn.microsoft.com/windows/wsl/wsl-config#configuration-setting-for-wslconfig
[wsl2]
[experimental]
==== Linux ====
Diese Einstellungen gelten nur für die jeweilige WSL1 oder WSL2 Instanz!
# https://learn.microsoft.com/windows/wsl/wsl-config#configuration-settings-for-wslconf
[automount]
options = case = off
[network]
[interop]
[user]
[boot]
systemd = true
===== USB Geräte in WSL verwenden =====
[[https://learn.microsoft.com/windows/wsl/connect-usb]]
**Wichtig:** Dies funktioniert nur mit WSL 2 unter Win 11 (Win 10 u.U. nur mit Zusatzaufwand)
==== Linux (WSL) ====
=== Vorbereitung ===
Debian (für Ubuntu Anweisungen, siehe MS Dokumentation)
sudo apt install usbip hwdata usbutils
=== USB Geräte auflisten ===
lsusb
==== Windows ====
=== Vorbereitung ===
winget install -e dorssel.usbipd-win -i
=== USB Geräte auflisten ===
usbipd wsl list
==== USB Geräte verbinden/trennen ====
=== Attach ===
usbipd wsl attach -b
usbipd wsl attach -i
Mit ''-d'' Distro spezifizieren und/oder mit ''-a'' automatisch neuverbinden
usbipd wsl attach -a -d debian -b
usbipd wsl attach -a -d debian -i
=== Detach ===
usbipd wsl detach -b
usbipd wsl detach -i
Alle Geräte trennen
usbipd wsl detach -a
===== besondere Linux-Kommandos in der WSL =====
wenn die SD-Karte in Windows als Laufwerk "S:" sichtbar ist, dann kann man das Volumen in der WSL-Umgebung so mounten:
> sudo -s
[sudo] password for fritz:
> mkdir /mnt/S
> mount -t drvfs S: /mnt/S
> ls -lha /mnt/S
===== nützliche crons =====
täglich (und beim Systemstart) das Upgrade-Skript ausführen
MAILTO=""
@reboot root /usr/local/sbin/upgrade.sh -y > /var/log/upgrade.log 2>&1
@daily root /usr/local/sbin/upgrade.sh -y > /var/log/upgrade.log 2>&1
für ''upgrade.sh'' siehe [[ubuntu#simple_version_des_upgrade-skripts|hier]]