WSL2 – Installation und Ersteinrichtung

WSL2 ist Microsofts jüngeres Produkt, mit dem Linux Anwendungen auch unter Windows verfügbar gemacht werden können. Die Frage, ob dieses Unterfangen nun als Eingeständnis gewertet werden soll, mit ihrem Betriebssystem nicht die Vollumfängliche Nutzererfahrung abdecken zu können oder lediglich, auf die Nachfrage der Kunden zu reagieren, ist dabei einerlei und soll nicht weiter thematisiert werden.
Dieser Beitrag soll lediglich als grober Leitfaden dienen und die ersten Schritte der Installation und Ersteinrichtung abhandeln sowie, die ersten administrativen Aufgaben skizzieren.

Vorbereitungen

Voraussetzung, um WSL 2 nutzen zu können, ist Windows 10 ab der Version 1903, mit dem Build 18362 oder Windows 11.
Als erstes muss das optionale Feature Windows Subsystem für Linux aktiviert werden. Dies lässt sich bequem über eine, als Administrator ausgeführte, Powershell Sitzung erledigen:

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

Außerdem muss noch das Virtualisierungsfeature aktiviert werden:

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

Damit die Änderungen wirksam werden, ist im Anschluß ein Neustart notwendig.

Installation von WSL 2

Uns stehen nun 3 Wege zur Verfügung, um WSL 2 zu installieren: Über die Kommandozeile, über ein .MSI-Paket und über den Microsoft-Store.

Installation über die Kommandozeile

Auch hier ist die (als Administrator ausgeführte) Powershell unser Freund. Mehr als der folgende Befehl bedarf es nicht:

wsl --install
Installation über das MSI-Paket

Wer es etwas grafischer mag, kann sich über den folgenden Download-Direktlink das MSI-Paket herunterladen …

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

… und es ausführen. Ein Installationsmenü geleitet uns anschließend durch den Prozess.

Über den Microsoft-Store

Als dritte Möglichkeit böte sich noch der Microsoft-Store als Installationsplattform an. Nachdem dieser gestartet wurde, suchen wir nach dem Schlüsselwort WSL und wählen den Eintrag Windows Subsystem for Linux aus. Ein Klick auf Herunterladen installiert diesen.

WSL 2 als Standardversion festlegen

Egal wie WSL nun installiert worden ist, mit dem folgenden Befehl setzen wir die Version 2 als Standard fest (über die Powershell):

wsl --set-default-version 2

WSL Linux installieren

Da wir WSL 2 nun für uns verfügbar gemacht haben, können wir mit der Installation eines Linux beginnen. Über die Powershell listen wir uns mit dem folgendem Befehl unsere Installationsmöglichkeiten auf:

wsl --list --online

Auch hier haben wir wieder unterschiedliche Möglichkeiten, an die Distribution unserer Begierde zu gelangen.

WSL Linux über den Microsoft-Store installieren

Wir zuvor WSL 2, lassen sich auch die dazugehörigen Linux Distributionen über den Microsoft-Store beziehen. Als Suchbegriff genügt dabei der Name der jeweiligen Distribution (beispielsweise Ubuntu, Kali Linux, Debian etc.) oder wahlweise auch WSL.

Haben wir den entsprechenden Eintrag gefunden, genügt ein Klick auf Herunterladen. Nach erfolgtem Download starten wir die Installation mit einem Klick auf Öffnen.

WSL Linux als APPX-Paket installieren

Soll der Microsoft-Store umgangen werden, lassen sich die jeweiligen APPX-Dateien auch mit einem curl-Befehl lokal verfügbar machen. Hierzu führen wir den folgenden Befehl aus.

curl.exe -L -o ubuntu-2204.appx https://aka.ms/wslubuntu2204

Dies würde die Ubuntu in der Version 22.04 herunterladen und als Datei ubuntu-2204.appx speichern.
Nach erfolgtem Download können wir die Datei direkt von der Kommandozeile aus starten oder wir wechseln über den Windows-Explorer in das Download-Verzeichnis und führen sie von dort aus. Über das darauffolgende Fenster können wir das WSL-Linux mit einem Klick auf Installieren installieren:

Ist alles gut verlaufen, werden wir mit einem Eingabeprompt begrüßt, in dem wir einen Benutzername für die angefertigte Installation samt Passwort festlegen sollen:

Anschließend können wir mit der Arbeit direkt loslegen.

WSL Linux verwalten

WSL verfügt über zahlreiche Kommandos zur Verwaltung der WSL-Instanzen. Um einen groben Überblick zu verschaffen, werde ich im folgendem auf einige gängige Befehle eingehen.
Um den derzeitigen Bestand an WSL-Linux-Installationen zu überprüfen, hilft uns folgender Befehl:

wsl -l -v

Der Stern vor den Distributionsnamen gibt an, welcher Eintrag derzeit als Standard gesetzt ist. Dieser lässt sich auch anpassen:

wsl --setdefault Ubuntu

Wir haben auch die Möglichkeit eine laufende WSL-Instanz auszuschalten:

wsl -t Ubuntu

Um die als Standard definierte Maschine wieder zu starten, reicht lediglich ein …

wsl

… aus.

Befehle lassen sich übrigens auch außerhalb der WSL-Shell ausführen. Das ist besonders praktisch, wenn beispielsweise Aufgaben automatisiert über die Windows-Aufgabenplanung ausgeführt werden sollen:

wsl -d Ubuntu -e bash -c "cat /etc/os-release"

Der obige Befehl führt beispielsweise für die WSL-Instanz Ubuntu mit der Bash-Shell das Kommando cat /etc/os-release aus.

SSH-Forwarding einrichten

Die folgende Lösung wurde der GitHub Seite: How to SSH into WSL2 on an external Window · GitHub entnommen. Vielen Dank an den Autoren eastsaon!

Damit wäre die Einrichtung soweit erst einmal abgeschlossen. Möchte man das WSL-Linux jedoch nun noch von außerhalb über SSH verfügbar machen, müssen weitere Anpassungen vorgenommen werden.
Wir beginnen innerhalb der WSL-Linux-Distribution, installieren dort den openssh-server und aktivieren ihn:

sudo apt update
sudo apt install openssh-server
sudo service ssh start
sudo systemctl enable ssh

Außerdem benötigen wir noch das Paket net-tools:

sudo apt install net-tools

Anschließend geht es im Windows Wirtsystem weiter. Dort muss ebenfalls ein OpenSSH-Server installiert werden, diesmal in Form eines optionalen Features. Hierfür navigieren wir über den Punkt Optionale Features -> Features anzeigen und suchen dort nach ssh.

Wir aktivieren das Kontrollkästchen und klicken auf Weiter und installieren.
Lauscht der openSSH-Server der Linux Installation auf einem anderen Port als 22 (beispielsweise auf den Port 2222), muss eine Firewall Regel angelegt werden. Dies wird ebenfalls über eine administrative Powershell erledigt:

netsh advfirewall firewall add rule name='open port 2222 for wsl2 port fowarding' dir=in action=allow protocol=TCP localport=2222

Wie gesagt, das obige Kommando ist nur notwendig, sofern der SSH-Port vom Standard 22 abweicht.
Als nächstes dienen uns die folgenden Befehle zur eigentlichen Portweiterleitung:

$wsl_ip = wsl.exe -d Ubuntu -e sh -c "ifconfig eth0 | grep 'inet '"
$found = $wsl_ip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
$wsl_ip = $matches[0];
iex "netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22"
iex "netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=$wsl_ip connectport=22"

Diese Befehle löschen eine bereits vorhandene Regel zur Portweiterleitung, lesen die derzeitig gesetzte IP-Adresse des Linux aus und erstellen auf Grundlage dieser IP eine neue Regel für die Portweiterleitung auf Port 22 zu der Linux Maschine. Sie können auch in Form eines Powershell-Skriptes abgelegt und ausgeführt werden.

Grafische Tools ausführen

Um grafische Tools zu benutzen, muss das gewünschte Programm lediglich installiert sein und ausgeführt werden:

sudo apt install gimp
gimp

Kommt es unerwarteterweise zu dem Fehler …

Error: Can't open display

… könnte ein Update des WSL hilfreich sein. Über die Powershell wird also ausgeführt:

wsl --update

Nachdem Linux neugestartet wurde, sollte das Problem behoben sein.

Fazit

Die WSL Funktion unter Windows ist nicht nur einfach einzurichten sondern auch einfach zu administrieren. Die einwandfreie Anbindung an das Windows-Dateisystem ist ebenso ein Sahnehäubchen, wie die Möglichkeit, über X11-forwarding grafische Tools auszuführen zu können. Einzig die Erreichbarkeit der WSL-Instanz außerhalb der Windows Maschine ist verbesserungswürdig, kann mit ein wenig Frickelei jedoch auch eingerichtet werden.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen