Einstieg in das  (WSL): Version 1 und 2 auf Windows 10 und 11: Das solltest du zum Windows Subsystem für Linux wissen

Als Video ansehen
Bereitgestellt über YouTube

Einstieg in das (WSL): Version 1 und 2 auf Windows 10 und 11: Das solltest du zum Windows Subsystem für Linux wissen

Das Windows Subsystem für Linux ist Microsofts Antwort auf die hohe Nachfrage nach GNU/Linux. Während diese auf dem Desktop vor allem unter Privatnutzern noch nicht angekommen ist, sieht das bei Entwicklern ganz anders aus: Die Stackoverflow-Umfrage wird jährlich unter zehntausenden IT-Affinen Personen durchgeführt. Mehrheitlich handelt es sich dabei um Softwareentwickler, doch es sind auch andere Berufsgruppen wie Administratoren oder Studenten dabei. Und die nutzen weit weniger Windows als der Durchschnitt: Professionell sind es mit 48,8 % fast nur die Hälfte. Auf Linux basierte Betriebssysteme kommen dagegen auf stolze 39,9 %. Apples MacOS landet lediglich auf Platz 3.

Warum Linux?

Die Gründe dafür sind vielseitig. Ein wichtiger, der zur steigenden Verbreitung beiträgt, ist die seit Jahren zunehmende Verbreitung von Containertechnologie. Docker und Kubernetes sind dabei führend: Beides ist Linux-Technologie, die erst Jahre später und teilweise bis heute nicht gleichwertig auf Windows portiert wurde. Außerdem sind mächtige Werkzeuge wie grep, awk oder sed dort seit Jahrzehnten Standard. Windows kann deren Funktionsumfang nur zu Teilen mit der PowerShell bieten, oft mit längeren, komplexeren Befehlen. Microsoft sah die Dominanz von Windows wieder einmal bedroht. Statt mit schmutzigen Tricks wie zu Gates Zeiten im ersten Browserkrieg entschloss man sich jedoch diesmal für eine sauberere Methode.

Darüber hinaus respektieren GNU/Linux Distributionen in der Regel den Datenschutz und sammeln höchstens sehr wenige Daten, die Meisten telefonieren überhaupt nicht nach hause. Da es sich um freie Software handelt, kann der Nutzer das System zudem nach belieben verändern. Upgrade- oder Kontozwang wie bei Windows wird man in der Linux-Welt mit der Lupe suchen müssen. Auch entfällt die Lizenzierung, welche bei proprietärer Software nicht nur finanziell beachtliche Ausmaße annehmen kann. Sie ist gerade bei Windows sehr kompliziert, sodass man trotz hoher Zahlungen möglicherweise unwissend unterlizenziert ist.

Das Windows Subsystem for Linux (WSL) erblickt die Welt

In der breiten Masse scheuen viele einen Wechsel aufgrund des Aufwandes. Gerade aufgrund der Dominanz von Windows ist eine komplette Migration auf dem Desktop ggf. gar nicht möglich, da Teile der eingesetzten Software keine Unterstützung für Linux bieten. In diesen Fall müssen beide Systeme parallel eingesetzt werden. Microsoft hat daran natürlich kein Interesse und hat mit dem WSL versucht, Linux in die Windows-Welt zu bringen.

Es existieren bis heute zwei Versionen des WSL: 2016 sollte WSL Version 1 die Entwickler bei Windows halten. Im Rahmen einer Partnerschaft mit Canonical, dem Unternehmen hinter der bekannten GNU/Linux-Distribution Ubuntu, konnte man Ubuntu in einem Konsolenfenster unter Windows ausführen – ohne Virtuelle Maschine, wie es bisher für Windows-Nutzer üblich war. Hierzu entwickelte der Konzern eine Kompatibilitätsschicht, quasi das Gegenstück zu Wine – oder anders ausgedrückt: Sie haben Teile des Linux-Kernels nativ unter Windows nachgebaut. Die Distributionen müssen dafür von Microsoft verändert werden, deswegen läuft nicht jede davon mit WSL, wie bei einer normalen (VM) Installation.

So konnte man eine Bash-Shell mit grundlegenden Linux-Befehlen direkt unter Windows verwenden. Das war auch vergleichsweise Ressourcensparsam – aber man konnte damit mangels echtem Linux-Kernel bei weitem nicht alle Linux-Binaries ausführen, z.B. keine Docker-Container oder gar grafischen Anwendungen. Kurzum: WSL in seiner ersten Version brachte ein paar grundlegende Werkzeuge aus der GNU/Linux Welt, war aber ziemlich weit davon entfernt, es zu ersetzen.

V2

In der komplett überarbeiteten Version 2 (ab Version 1903 von Windows 10 verfügbar) gab Microsoft Mitte 2019 auf, Linux durch eine eigene Kompatibilitätsschicht zu emulieren. Stattdessen wird nun der echte Linux-Kernel genutzt. Vereinfacht kann man es sich wie eine kleine Linux-VM vorstellen, die im Hintergrund läuft. Dadurch laufen nahezu jegliche Linux-Anwendungen unter WSL V2. Die Performance ist für eine VM gut, doch damit kommen auch die üblichen Nachteile durch Virtualisierung: Die Prozessorfunktionen müssen z.B. zunächst im BIOS/UEFI aktiviert werden.

Welche Version sollte ich nutzen: WSL 1 oder 2?

Mittlerweile ist WSL 2 zum Standard geworden, da der echte Linux-Kernel weit mehr Vorteile bietet. Er wird über Windows Updates aktuell gehalten. In den meisten Fällen dürfte dies auch die bessere Wahl sein. Derzeit werden beide Versionen parallel angeboten, da es ein paar Szenarien gibt, in denen WSL 1 Vorteile bietet:

  • Dateizugriffe über die Betriebssysteme hinweg sind bei WSL 2 langsamer. Wenn man z.B. mit Linux auf Daten zugreifen möchte, die unter Windows (meist NFS) gespeichert sind, ist WSL 1 performanter. Vor allem bei größeren Dateimengen macht sich dies bemerkbar.
  • WSL 2 benötigt im Vergleich mehr Arbeitsspeicher. Dies kann Ressourcenprobleme verursachen, vor allem wenn komplexere Aufgaben in der VM laufen.
  • Netzwerktechnisch nutzt WSL 1 eine Netzwerkbrücke. Bei WSL 2 kommt ein virtuelles Netzwerk mit NAT zum Einsatz: Die WSL 2 Instanz erhält also eine zusätzliche IP-Adresse per DHCL, die nur vom Windows-Host aus erreichbar ist. Dies schafft Komplexität, je nach Anwendungsfall ist zusätzliche Konfiguration notwendig.
  • Da WSL 2 intern eine mit Hyper-V virtualisierte GNU/Linux-VM erzeugt, sind die Latenzzeiten höher. Außerdem kann es zu Problemen kommen, wenn parallel andere Virtualisierungsplattformen wie z.B. VirtualBox oder VMWare eingesetzt werden. In neueren Versionen gibt es teils Lösungen bzw. Workarounds, mit älteren funktioniert der Parallelbetrieb eine Weile gar nicht.
  • Ist Windows selbst virtualisiert, funktioniert WSL 2 nur, wenn verschachtelte Virtualisierung auf dem Host aktiviert wurde. Dies ist generell nicht zur produktiven Nutzung empfehlenswert.

Version ist nicht gleich Version bei WSL

WSL 1 und 2 sind allerdings keine klassischen Hauptversionen im Stil von Ubuntu 21 und 22, wo ich entweder auf der einen oder der anderen bin. Sie sind mehr als Ausführungsformate zu verstehen, die von der Softwareversion unabhängig sind: Ein Office 2016 kann beispielsweise das alte .doc-Format sowie dessen Nachfolger .docx öffnen. Bei WSL haben wir die WSL-Release-Version von der GitHub Seite (etwa 1.1.2) als übergeordnete Plattform. Ihre Version gibt Auskunft über die generellen Funktionen der Plattform. Sie kann sowohl WSL 1 als auch 2 Instanzen starten. Eine Vermischung ist ebenfalls möglich, sodass z.B. eine Ubuntu-Instanz unter V2 läuft, Debian aber unter 1.

Die gleiche Distributionsversion (z.B. Ubuntu 20.04) kann aber nicht zweimal gestartet werden. Dies ist nur mit einer anderen Hauptversion möglich. Hier läuft beispielsweise Ubuntu in der aktuellsten Standard-Version (derzeit 22) in WSL 2, während Ubuntu 20 als WSL 1 erzeugt wurde. Anhand der WSL-Release-Version hängen anscheinend auch die verfügbaren Distributionen bzw. deren Versionen.

Praxiseinstieg: WSL installieren und einrichten

Voraussetzungen

WSL 2 benötigt die gleichen Voraussetzungen wie jede andere Virtuelle Maschine: Der Prozessor muss die Virtualisierungsfunktionen der jeweiligen Architektur unterstützen, was lediglich bei sehr alten CPUs nicht der Fall ist. Bei vielen Mainboards sind diese jedoch nicht ab Werk aktiv und müssen zunächst im BIOS/UEFI aktiviert werden. Wie das funktioniert, variiert stark je nach Hersteller und Modell. Meist kommt man mit [ENTF], [F1], [F2], [F10] oder [ESC] während des Boot-Vorganges hinein oder es wird eine Taste genannt. Die Einstellung ist teils etwas versteckt. Oft unter den Erweiterten Funktionen, Systemeinstellungen oder auch Einstellungen zur Übertaktung. Auch die Bezeichnungen sind teils verschieden: Vor allem unter älteren Boards wird sie z.B. Virtualization Technology genannt. Bei den neueren Meist entsprechend den Technologien der jeweiligen Hersteller: VTx und VTd bei Intel, AMD-V im Falle eines AMD-Prozessors. Im Zweifel kann man die folgende Installation auch einfach ausprobieren: Falls die Funktionen nicht aktiv sind, wird sie fehlschlagen.

Was funktioniert wo?

Fangen wir mit den positiven Nachrichten an: Entgegen Microsofts Trend wird keine besondere Edition gefordert – man kann WSL also auch mit Home vollumfänglich nutzen, obwohl hier fast alle weiteren Virtualisierungsfunktionen fehlen. Bei Version 2 könnte man erwarten, eine vollwertige GNU/Linux-Distribution vor sich zu haben, die sich eben so verhält. Das dem im Detail nicht so ist, wird man relativ schnell bemerken: So funktioniert Systemd nicht, ein sehr verbreitetes Init-System. Bereits beispielsweise die Installation eines Webservers oder anderen Programmes, das im Hintergrund als Dienst läuft, wird daher Fehlschlagen. Hierfür gibt es zwei Workarounds, welche ich in diesem vorherigen Beitrag gezeigt habe.

Installation und Erste Nutzung

Unter neueren Windows-Versionen (Windows 11 oder Windows 10 ab Version 2004 Build 19041) ist das Kommandozeilenwerkzeug von WSL ab Werk installiert, WSL selbst jedoch nicht eingerichtet. Da sich die Installation über verschiedene Updates hinweg verändert hat, solltet ihr zunächst alle verfügbaren Windows Updates einspielen. In diesem Falle kann man sich mit folgendem Befehl eine Liste aller GNU/Linux-Distributionen auflisten lassen, die Microsoft zu Windows portiert hat. Denn auch wenn in WSL V2 ein vollwertiger Linux-Kernel läuft, hat Microsoft einige Anpassungen vorgenommen. Daher müssen die Distributionen ebenfalls eigens angepasst werden – es läuft nicht jedes GNU/Linux, wie in einer vollwertigen VM.

PS C:\Users\U-Labs> wsl --list --online
  NAME               FRIENDLY NAME
* Ubuntu             Ubuntu
  Debian             Debian GNU/Linux
  kali-linux         Kali Linux Rolling
  SLES-12            SUSE Linux Enterprise Server v12
  SLES-15            SUSE Linux Enterprise Server v15
  Ubuntu-18.04       Ubuntu 18.04 LTS
  Ubuntu-20.04       Ubuntu 20.04 LTS
  OracleLinux_8_5    Oracle Linux 8.5
  OracleLinux_7_9    Oracle Linux 7.9

Zur Installation führen wir folgenden Befehl aus (getestet mit Windows 11 22H2, Windows 10 22H2 & 21H2):

wsl --install -d <Distributionsname>
# Oder um die Standard-Distribution zu installieren
wsl --install

Mit wsl –install -d Debian wird z.B. Debian installiert. Die Standard-Distribution ist derzeit Ubuntu (mit * markiert). Microsoft gibt hier keine explizite Version an, es scheint sich wohl immer um die aktuellste LTS zu handeln. Wer damit zufrieden ist, dem reicht auch wsl –install ohne den -d Parameter. Windows lädt die angepasste Distribution nun herunter und es ist ein Neustart fällig. Es empfiehlt sich, spätestens jetzt das neue quelloffene Windows Terminal zu nutzen: Hier integriert sich WSL nämlich über den kleinen Pfeil neben dem Plus-Knopf. Dort werden installierte GNU/Linux Distributionen automatisch aufgelistet, hier im Beispiel Ubuntu. Beim ersten Start muss die VM noch komplett installiert werden, bis man zur Eingabe eines Benutzers mit Passwort aufgefordert wird. Anschließend kann man die WSL 2 Instanz nutzen:

Aus Nutzersicht hat man auf den ersten Blick eine fast vollwertige minimale Ubuntu-VM, die jederzeit mit dem Befehl wsl gestartet bzw. aufgerufen werden kann. Der beim ersten Start eingerichtete Nutzer hat – wie unter Ubuntu gewohnt – Rechte zur Nutzung von sudo erhalten, sodass ihr darüber auch Befehle als root Ausführen könnt. Beispielsweise einen Apache-Webserver installieren. Der ist dann allerdings nicht über localhost/127.0.0.1 eures Windows-Host-PCs erreichbar, sondern über die NAT-IP der VM – die findet man z.B. mit ip a heraus.

Zukünftig wird die VM mit dem WSL-Befehl erstmalig gestartet, dies dauert ungefähr 10 Sekunden wie bei einer schnellen herkömmlichen VM. Wer den Microsoft Store meiden oder die Installation automatisieren möchte, kann sich die für Windows angepassten Pakete der GNU/Linux-Distributionen alternativ auch händisch im APPX-Format herunterladen.

Mehrere Umgebungen nutzen

Über den gleichen Befehl unterstützt WSL die Installation mehrerer Umgebungen. Im Beispiel installieren wir zusätzlich eine Debian-Instanz und schauen uns mit -l (list) und -v (verbose) für zusätzliche Infos die vorhandenen Instanzen an:

wsl --install -d Debian
wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
  Debian    Stopped         2

Auch hier steht der Stern (*) für die Standard-Instanz: Wenn man nur wsl eingibt, wird Ubuntu gestartet. Mit wsl -d Debian könnte man stattdessen die zweite öffnen. Bequemer ist jedoch die Verwendung des neuen Windows Terminal: Hier erscheinen neue Instanzen nach dem nächsten Neustart der Anwendung in einer Liste, die per Klick auf den nach unten zeigenden Pfeil geöffnet werden kann:

Wie in einer vollwertigen GNU/Linux-Distribution ist es möglich, mehrere Konsolenfenster zu starten. Einschränkungen gibt es nur im Parallelbetrieb: Eine spezifische Distribution wie z.B. Ubuntu 22 LTS kann nur einmal ausgeführt werden. Wer zwei voneinander getrennte Instanzen benötigt, kann dies mit WSL 2 nur umsetzen, in dem man sich für verschiedene Versionen entscheidet: Etwa eine Instanz mit Ubuntu 22 LTS, die andere mit Ubuntu 20 LTS.

Grafische Programme funktionieren mit leichten Detail-Schwächen

Eine Neuerung von WSL 2 ist die Unterstützung von grafischen Anwendungen. Das kann man in einem ersten Beispiel recht einfach testen, in dem z.B. unter Ubuntu der Standard-Texteditor gedit über die Paketverwaltung nachinstalliert wird:

sudo apt update
sudo apt install gedit
gedit

Gedit startet, sieht auf den ersten Blick recht original aus und lässt sich auch weitgehend vernünftig Bedienen. Bei einzelnen Funktionen klemmt es noch, so kann man den Text nicht größer zoomen. Und der Mauszeiger sieht über eine RDP-Sitzung mehr als schräg aus: Drei Zeiger liegen nebeneinander mit schwer beschreibbaren Linien darunter und daneben. Dieser Fehler scheint jedoch nur in Kombination mit RDP aufzutreten, nativ sieht man einen einzelnen schwarzen Mauszeiger und auch Screenshot-Programme zeichnen diesen so auf.

Firefox lässt sich per Snap installieren, sofern man die Systemd-Integration in WSL gefixt hat. Teilweise ist die Darstellung im Detail etwas unschön und es erscheinen Fehler auf der Konsole. Das Surfen funktionierte im ersten Test dagegen reibungslos und fühlte sich auch nicht langsamer an, als auf einem vollwertigen GNU/Linux. Organisatorisch öffnet Windows das per WSL gestartete grafische Fenster wie eine Windows-Anwendung in der Taskleiste.

Der Lebenszyklus von WSL-Instanzen

WSL 1 startet Anwendungen über die Emulationsschicht direkt aus Windows heraus. Bei WSL 2 wird die Virtuelle Maschine gestartet, sobald ihr wsl (bzw. eine spezifische Distribution mit -d) zum ersten Mal aufruft. Nach einem Neustart des PCs dauert der erste Aufruf von wsl daher deutlich länger, weil zuerst die VM gebootet wird – alle weiteren Aufrufe sind deutlich schneller, zumindest wenn sie zur gleichen Distribution gehören.

Das verlassen mit exit oder dem schließen des Konsolenfensters beendet allerdings nicht zwingend sofort die dazugehörige VM! Stattdessen greift Windows ein und beendet die VM nach einigen Sekunden. Erst ab Windows 11 kann dies über die Einstellung vmIdleTimeout (Standard: 60000 ms = 60 s) angepasst werden. Dadurch laufen auch die dort gestarteten Hintergrunddienste nicht mehr, wie beispielsweise ein Webserver. Sie bleiben nur aktiv, so lange mindestens ein Konsolenfenster geöffnet ist. Dies ist ein Beispiel, an dem sich zeigt: WSL ist nicht dafür gedacht, um (produktive) Serverdienste dauerhaft zu betreiben. Sondern eher für Test- und Entwicklungszwecke.

Kurz nachdem man die WSL-Konsole schließt, ist ein darauf installierter Apache2 Webserver nicht mehr erreichbar

Ob die zu WSL gehörenden VMs laufen und welche Ressourcen sie belegen, ist im Task-Manager anhand des Prozesses WmmemWSL ersichtlich:

Den Timeout und einige andere erweiterte Einstellungen lassen sich in zwei Konfigurationsdateien (wsl.conf und .wslconfig) wahlweise systemweit oder pro Instanz (VM) anpassen.

Manuelle Installation (für ältere Windows-Versionen)

Mittlerweile hat Microsoft die Installation vereinfacht. Bei älteren Versionen sollte an dieser Stelle aber vorerst die Möglichkeit eines Upgrades geprüft werden: Windows 10 2004 ist immerhin bereits seit Ende 2021 aus dem Support. Auf älteren Versionen oder wenn die vorherigen Varianten Probleme bereiten, kann man die von Microsoft mittlerweile ein Stück weit automatisierte und damit vereinfachte Installation auch händisch durchführen. WSL ist eine Windows-Funktion und kann wahlweise über die GUI oder den ersten Befehl (als Administrator). Der Zweite aktiviert die bereitgestellte Virtualisierungsfunktionalität, welche ausschließlich für WSL 2 notwendig ist.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# Nur fuer WSL V2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Alternativ kann die PowerShell genutzt werden, wobei der DISM-Aufruf auch dort funktionieren sollte:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Erste GNU/Linux Distribution installieren

Man sollte sich zunächst für eine der beiden Versionen entscheiden, für viele dürfte WSL 2 mehr Sinn machen – sie ist mittlerweile auch Standard. Da dies je nach der Windows-Version variiert, macht es Sinn, diese explizit zu setzen.

wsl --set-default-version 2

Während man in WSL V1 eher von einer Umgebung sprechen kann, die einer GNU/Linux Distribution wie Ubuntu ähnelt, bekommt man in V2 zwar eine Echte. Doch durch die starken Anpassungen läuft nicht jedes GNU/Linux, wie man es von vollwertigen VMs her kennt: Microsoft muss auch die Distribution anpassen.

Bei der obigen Einstellung geht es nur um den Standard. Eine Möglichkeit, die Version beim Erzeugen anzulegen, fehlt jedoch bislang. Die den Umständen entsprechend beste Möglichkeit für einen Versionswechsel ist daher, die neue Version als Standard zu setzen. Anschließend die Instanz zu erzeugen und dann den Standard wieder zurück auf die vorherige. Bereits erstellte Instanzen lassen sich bei Bedarf zwischen V1 und V2 konvertieren:

Weiterführende Infos

  • WSL Änderungsprotokoll: https://learn.microsoft.com/de-de/windows/wsl/release-notes
  • Erweiterte WSL-Konfiguration: https://learn.microsoft.com/de-de/windows/wsl/wsl-config
  • Microsofts Ende des Lebenszyklus für Windows
    Windows 10: https://learn.microsoft.com/en-us/lifecycle/products/windows-10-home-and-pro
    Windows 11: https://learn.microsoft.com/en-us/lifecycle/products/windows-11-home-and-pro

Leave a Reply