Leserartikel WSL2: Eine Brücke zwischen Windows und Linux – Einblick aus der Perspektive eines Linux-Nutzers

kim88

Lt. Commander
Registriert
Sep. 2016
Beiträge
1.851
An die Moderation. Ich habe lange hin- und her überlegt in welchem Forum ich diesen Leseartikel veröffentliche. Entweder unter Windows oder unter Linux oder sonst irgendwo. Wenn ihr einen besseren Platz wisst dürft ihr den Artikel gerne verschieben.



Warum hat Microsoft Linux in Windows integriert? Wozu braucht man das? Ist es sinnvoll? Wie richtet man es ein? Und noch ein bisschen Geschichte dazu 😊

Historischer Abriss über das Windows Subsystem für Linux (WSL)​

Das WSL, dass ich euch hier vorstellen werde, ist das Windows Subsystem für Linux in der Version 2. Das bedeutet logischerweise das es auch schon eine Version 1 gab. Das erste WSL wurde am 1. August 2016 für Windows 10 in Partnerschaft mit Canonical veröffentlicht.

Die Idee war es das man damals Ubuntu 14.04 unter Windows laufen lassen konnte. WSL ist im Grunde ein Windows Programm in dem Ubuntu installiert ist.

Das Programm selbst funktioniert (sehr stark vereinfacht) wie ein Dolmetscher. Wenn du ein Linux Programm in diesem Ubuntu ausführst, übersetzt WSL die Linux Befehle in Windows kompatible Befehle. Danach wird das übersetzte Programm an Windows überreicht, dort ausgeführt und die Antwort von Windows quasi wieder übersetzt – damit das Linux Programm etwas damit anfangen kann.

Das hört sich sehr vertraut an?

Du bist Linux Nutzer und denkst du hast das schon mal irgendwas Ähnliches gehört? Dann liegst du richtig. Wir kennen unter Linux etwas sehr Vergleichbares – nämlich WINE. WINE ist eine Linux Software die im Grunde genau das gleiche macht wie WSL unter Windows. Nur das WINE Windows Programme ausführt – die in Linux Befehle übersetzt und an den Linux Kernel weitergibt.

Steamdeck, bzw Steam unter Linux basiert im Grunde auf dieser Technologie.

Daher vereinfacht gesagt. WSL in Version 1 ist im Grunde das was WINE in Linux ist. Und WSL1 hat auch sehr ähnliche Probleme wie WINE. Es ist langsam und viele Dinge funktionieren nicht. Daher die Begeisterung für WSL hielt sich in Grenzen.

Microsoft versucht dann noch eine Weile WSL zu optimieren – und hat gerade in Bezug auf Geschwindigkeit einige Fortschritte gemacht. Die Grundprobleme sind aber geblieben – dass viele Programme nicht funktionierten.

Neue Idee! Gleicher Name.

Im Frühling 2019 stellte Microsoft dann WSL in der Version 2 vor. Und änderte damit so ziemlich alles. WSL2 war nun kein Dolmetscher mehr, sondern ein echtes Linux mit echtem Linux-Kernel das neben Windows parallel ausgeführt wird.

Die Technologie basiert auf Hyper-V. Nutzern von Linux erkläre ich gerne immer wieder das man unter Linux kein VirtualBox oder sowas braucht – sondern Virtualisierung problemlos über QEMU/KVM machen kann. Virtualisierungsmodule die direkt im Linux-Kernel integriert sind und auch um einiges performanter laufen als VirtualBox und Co.

Die Wahrheit ist – auch der Windows Kernel hat, wie Linux ein direkt eingebautes Virtualisierungsmodul das auf den schönen Namen Hyper-V trägt. Hyper-V existiert seit Windows 8 und wird hauptsächlich im Windows Server Bereich eingesetzt. Und genau diese Technologie wird nun auch mit WSL2 benutzt.

Daher mit WSL2 wird ein (oder mehrere) komplettes Linux virtualisiert und neben Windows laufen gelassen. Das spannende ist die Integration von Linux in Windows. Man kann mit dem Datei Manager von Windows (Explorer) direkt auf das Linux Dateisystem zugreifen. Ebenfalls kann man innerhalb von Linux direkt auf Windows Dateien zugreifen. Das ist alles ineinander verschachtelt und diese Verschachtelung macht die Lösung so genial.

Nun aber fertig mit Geschichte – lasst uns WSL2 installieren.​

Bevor ihr das ausprobiert, solltet ihr prüfen, ob ihr alle Voraussetzungen erfüllt. Folgendes brauchen wir damit das alles funktioniert:

  • Einen Rechner mit Windows 10 oder Windows 11 – auf dem alle verfügbaren Updates installiert sind
  • Eine funktionierende Internetverbindung 😝
  • Das Windows Terminal (braucht es nicht zwingend – empfehle ich euch aber grundsätzlich, ist neben der Konsole vom KDE Projekt wohl eines der besten Terminals auf der Welt)
  • Einen Prozessor der Virtualisierung unterstützt (Im Grunde machen das alle modernen Prozessoren teilweise muss es aber im UEFI/BIOS aktiviert werden)
Ob euer Prozessor Virtualisierung unterstützt und die Funktion aktiviert ist, könnt ihr im Windows Terminal mit folgendem PowerShell Befehl prüfen:

PowerShell:
systeminfo | Select-String hyper-v

Wenn die Info erscheint «Es wurde ein Hypervisor erkannt» können wir loslegen.

01prufen_hypervisor.png


Installation von WSL2​

Wenn wir WSL2 standardmässig installieren, wird direkt die aktuelle Ubuntu LTS Version (zurzeit 22.04) installiert. Das ist auch der Weg, den ich in diesem Blogbeitrag gehen werde. Dennoch ist möglich auch andere Distributionen zu installieren.

Um zu sehen welche Distributionen für WSL2 verfügbar sind gibt es folgendes Kommando für die PowerShell, damit bekommt ihr eine Liste mit allen Distributionen, die für WSL2 verfügbar sind.

PowerShell:
wsl --list –online

02_list_distros.png


Der Stern vor «Ubuntu» markiert die Standarddistribution, die bei der Installation von WSL installiert wird. Wenn ihr also lieber z.B. Oracle Linux 9.1 installieren wollt, müsst ihr diese Distribution mit folgendem PowerShell Befehl als Standard setzen.

PowerShell:
wsl --set-default OracleLinux_9_1

Achtet darauf das ihr den Namen genau so schreibt wie er in der Liste angegeben ist. Ich selbst bleibe wie gesagt bei Ubuntu. Wenn ihr eure Distribution ausgewählt habt, installieren wir nun WSL mit folgendem Befehl:

PowerShell:
wsl --install

Die Installation dauert einen Moment und man muss mehrmals mit Adminrechte die Installation bestätigen. Der Befehl löst nun aus das Hyper-V erst mal von dem Server von Microsoft heruntergeladen und installiert wird.

03_1wsl_install.png


Nach der Installation müssen wir den Computer neustarten.

Nach dem Neustart finden wir im Windows-Startmenü das Ubuntu Icon (oder das Icon deiner installierten Distribution). Das können wir nun öffnen.

Ein Klick auf das Icon sollte erneut das Windows Terminal öffnen, wo wir einen Benutzernamen und ein Passwort für unsere Linux Installation vergeben können. Das Passwort dient auch als Passwort für «sudo» Befehle.

Wenn alles funktioniert hat, befinden wir uns mit dem Windows Terminal in einem voll funktionsfähigen Ubuntu und können ab hier alles tun, was ein Ubuntu so tun kann.

Bevor wir nun mit unserem Terminal arbeiten, öffnen wir den Windows Explorer und sehen dort in der Seitenleiste ganz unten den Eintrag «Linux» mit einem kleinen Tux Icon. Innerhalb dieses Linux werden alle Distributionen aufgelistet, die unter WSL installiert sind.

Wenn wir nun den Ordner unserer Distribution öffnen, sind wir im Root-Dateisystem unserer Linux-Installation. Und können so direkt mit z.B. mit dem Windows Editor einige Windows Dateien bearbeiten.

04explorer.png


Nun wechseln wir wieder in unseren Ubuntu Terminal zurück und machen das, was man nach einer Linux Installation immer tun sollte. Erst mal alle Updates.

Dazu benötigen wir folgende Befehle:

Bash:
sudo apt update
sudo apt upgrade

Ich mache hier einen weiteren Neustart, da relativ viele Systempakete installiert wurden. Nach den Updates und dem Neustart können wir uns z.B. mal «neofetch» installieren, damit wir ein schönes Bildschirmfoto von Ubuntu auf Windows erstellen können.

Dazu einfach folgendes Eingeben:

Bash:
sudo apt install neofetch

Und danach neofetch ausführen.

05-neofetch.png


Was an unserem neofetch Bildschirmfoto auffällt, ist das wir nicht den Standard-Ubuntu Kernel installiert haben. Unabhängig davon welche Distribution wir mit WSL installieren – wir bekommen immer einen von Microsoft angepassten Linux Kernel.

Dies ist erforderlich da Microsoft ein paar Patches in den Kernel einpflegt, die dafür sorgen, dass das Zusammenspiel zwischen Windows und Linux so reibungslos funktioniert.

Dieser Kernel wird auch nicht über die Paketverwaltung deiner Distribution aktualisiert, sondern über Windows Update. Man kann nun also wirklich sagen, dass Windows Update das Linux auf deinem Windows aktuell hält 😉

Wir haben vorher gelernt, wie man unter Windows auf das Linux Dateisystem zugreifen kann. Natürlich funktioniert das aber auch umgekehrt. Die WSL-Installation mountet das C: Dateisystem von Windows automatisch unter /mnt/c

Daher wenn wir im Terminal mit cd /mt/c/ eingeben sind wir direkt im Windows Dateisystem und können nun auch mit Linux direkt Windows Dateien bearbeiten.

Cool – und was bringt das jetzt?​

Das Setup an sich – ist definitiv sehr cool. Doch die berechtigte Frage ist was bringt mir nun diese Linux Installation. Naja, das Offensichtlichste ist, dass wir nun Linux-Anwendungen unter Windows benutzen können.

Z.B. musste ich kürzlich eine externe Festplatte mit FAT32 formatieren – und merkte dann, dass das Windows 11 mit Boardmitteln gar nicht mehr kann (die haben einfach die FAT32 Option beim Formatieren entfernt). Gut, dass ich ein WSL-Installiert hatte.

Also kurz in mein Linux rein und dort mit sudo apt install gparted das Linux Programm gparted installieren.

Nach der Installation gparted befindet sich das Programm im Windows Startmenü. Neben dem normalen Programmicon hat es noch ein kleines Tux-Icon ❤️ so weiss man sofort, dass es sich um eine Anwendung handelt, die über WSL läuft.

06-startmenu.png


Nun können wir die App öffnen – die sich nun direkt auf dem Windows Desktop wie eine native Windows App öffnet.

07gparted.png


Falls man als Distribution Ubuntu installiert hat, kann man auch beliebige Snap-Programme installieren. Wenn wir nun z.B. den KDE-Dateimanager Dolphin installieren wollen können wir das mit sudo snap install dolphin tun.

Nach der Installation befindet sich Dolphin ebenfalls im Startmenü und kann von dort geöffnet werden. Und so können wir uns mit Dolphin z.B. unseren «system32» Windows Ordner anschauen.

08-dolphin-snap.png


Wozu? Nun wirklich?​

Fairerweise sind das nette Bilder und lustige Ideen, aber nichts, was wir im Alltagseinsatz wirklich brauchen. Wozu gibt es WSL2 nun wirklich?

Die Antwort auf diese Frage ist simpel. Bei WSL2 geht es um Entwickler. Es geht z.B. um Web-Entwickler (wie ich es bin). Vor WSL war es unter Windows beinahe unmöglich moderne Webseiten zu entwickeln. Dafür braucht man heute viele Kommandozeilentools, die es unter Windows nicht gibt.

Wenn ich arbeite, brauche ich dauernd Tools wie NodeJS, NPM, Composer, Docker, Gulp, Grunt, Sass, etc alle dieses Tools laufen problemlos auf Linux und auch auf dem Mac. Microsoft bemerkte, wie der Marktanteil von Macs Jahr für Jahr höher wird – und es waren nicht nur «Casual» - Nutzer, die den Mac einfach schön finden die zu Apple gewechselt sind, sondern auch immer mehr Entwickler (aller Art) die abgewandert sind – weil sie Ihre Arbeit auf dem Mac schneller, effizienter bzw. überhaupt erledigen konnten. Ich kenne kaum ein Web-Entwickler, der heute noch mit Windows arbeitet.

Microsoft hat mit WSL ein Tool geschaffen, womit Entwickler wie auf dem Mac arbeiten können, um zu verhindern das noch mehr Entwickler von der Plattform Windows abwandern bzw. um bereits abgewanderte Entwickler wieder zurückzuholen.

Meine abschliessenden Gedanken​

Als langjähriger Linux-Nutzer blicke ich auf das Windows Subsystem für Linux (WSL) mit einer Mischung aus Neugier und Anerkennung. Microsofts Integration von Linux in Windows zeigt eine bemerkenswerte Wende in der Firmenphilosophie und bietet interessante Möglichkeiten für Entwickler und Technikbegeisterte.

Historisch gesehen war das erste WSL eher ein ambitioniertes Experiment, das Linux-Befehle in Windows-Befehle übersetzte. Diese Umsetzung war jedoch langsam und hatte ihre Grenzen. Mit WSL2 hat sich das Blatt gewendet. Durch die Verwendung eines echten Linux-Kernels und die Nutzung von Hyper-V für die Virtualisierung hat Microsoft eine effizientere und nahtlosere Integration geschaffen. Dies ermöglicht es, Linux neben Windows auszuführen, wobei beide Systeme direkt miteinander interagieren können.

Die Installation und Einrichtung von WSL2 ist unkompliziert und ermöglicht den Zugriff auf eine breite Palette von Linux-Distributionen. Dieser Ansatz ist besonders für Entwickler reizvoll, da er das Beste aus beiden Welten bietet: die Vielseitigkeit von Linux innerhalb der vertrauten Windows-Umgebung. Als Web-Entwickler weiss ich die Möglichkeit, Tools wie NodeJS, NPM oder Composer direkt in Windows nutzen zu können, sehr zu schätzen.

Es ist jedoch wichtig, sich bewusst zu sein, dass WSL2 nicht für jeden Linux-Enthusiasten geeignet ist. Für Nutzer, die eine vollständige Linux-Erfahrung suchen, bleibt eine native Installation die bessere Wahl. Aber für diejenigen, die in einer Windows-Umgebung arbeiten und dennoch auf Linux-Tools und -Funktionalitäten nicht verzichten wollen, ist WSL2 eine beeindruckende Lösung.

Insgesamt ist WSL2 ein starkes Symbol für die Öffnung und Flexibilität von Microsoft gegenüber der Open-Source-Welt. Es zeigt, dass das Unternehmen bereit ist, sich anzupassen und die Bedürfnisse einer vielfältigen Nutzerbasis zu berücksichtigen. Als Linux-Nutzer freue ich mich über diese Entwicklung und bin gespannt, welche weiteren Innovationen Microsoft in dieser Richtung vornehmen wird.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Pokernikus, 0815burner, morb und 18 andere
Hier
Code:
wsl --list --online
sind zwei Bindestriche.
 
Schöne Zusammenfassung.
 
  • Gefällt mir
Reaktionen: kim88
Netter Artikel, habe WSL erst kürzlich für mich entdeckt, da ich für einige Open Source Anwendungen einen Linux Untersatz gebraucht habe und ich (noch nicht) komplett von Windows 10 als Daily Driver weg bin.

Nett ist auch, dass man beliebige EXT4 filesystems via

Code:
wsl --mount

ohne Treiberfrickelei in einen WSL Container mounten kann und somit Zugriff über den normalen Dateiexplorer hat.
So kann ich auch unter Windows Daten problemlos mit meinem separaten Ubuntu Dualboot Drive austauschen.

Edit: Aufgrund des Interesses eine kurze Ergänzung für mögliche Suchende in der Zukunft:
Code:
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
Listet die physikalischen Adressen aller erkannten Platten auf (ähnlich der Dateiträgerverwaltung).
Code:
wsl --mount \\.\#PHYSICAL-ADDRESS# [--partition ##]
Mittels des zusätzlichen Partition-Arguments lässt sich eine einzelne Partition als Ziel nehmen, falls sonstige irrelevante Partitionen auf dem Drive (z.B. UEFI, SWAP etc.) liegen.

Das gemountete Filesystem taucht dann unter /mnt/ des aktiven WSL Containers auf. Falls mehrere Container parallel existieren muss man vorher den richtigen aktivieren oder suchen gehen ;)

Alle Angaben aus der Feder eines Laien und ohne Gewähr. Mehr dazu von offizieller Seite: hier.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Pokernikus, Teckler, FCK_PTN und 3 andere
Danke @kim88 für den interessanten und lesenswerten Leserartikel.

Liebe Grüße Sven
 
  • Gefällt mir
Reaktionen: h2f, coasterblog und kim88
kim88 schrieb:
Aber für diejenigen, die in einer Windows-Umgebung arbeiten und dennoch auf Linux-Tools und -Funktionalitäten nicht verzichten wollen, ist WSL2 eine beeindruckende Lösung
Absolut richtig, ich baue damit meine OpenWRT Builds. Deutlich schneller als mit VMWare.
 
kim88 schrieb:
Z.B. musste ich kürzlich eine externe Festplatte mit FAT32 formatieren – und merkte dann, dass das Windows 11 mit Boardmitteln gar nicht mehr kann (die haben einfach die FAT32 Option beim Formatieren entfernt). Gut, dass ich ein WSL-Installiert hatte.
Tatsache. Das ist mir bisher echt noch nie aufgefallen. FAT und exFAT haben bisher immer gereicht und für BIOS-Updates habe ich bisher immer den gleichen Stick verwendet.
 
  • Gefällt mir
Reaktionen: kim88
@kim88
Danke für den tollen Artikel.
Für mich in erster Linie mal eine Übersicht über den aktuellen Stand. Und das "wozu".
Hat ein bisschen was geklärt.
 
Gefaellt mir der Artikel. 👍

kim88 schrieb:
und merkte dann, dass das Windows 11 mit Boardmitteln gar nicht mehr kann (die haben einfach die FAT32 Option beim Formatieren entfernt)

Das ist schon lange so. Seit W7?
Windows verweigert das FAT32-Formatieren fuer alle Datentraeger groesser 32 GByte.
Fuer Kleinere wird es noch angeboten.

1701622552496.png


Anyway.
WSL2 hab ich im Moment am rennen unter W10. Werde aber nach Weihnachten umziehen auf vermutlich Linux Mint. Das womit ich rumspiele ist eh in virtuellen Maschinen und denen ist der Host ja sowas egal und die Tools die ich verwende um anderen zu helfen sind eh Linuxbasiert.
 
  • Gefällt mir
Reaktionen: kim88
BFF schrieb:
Windows verweigert das FAT32-Formatieren fuer alle Datentraeger groesser 32 GByte.
Das erklärt warum ich teilweise das Gefühl hatte das es die Option gibt und teilweise nicht. Danke für die Aufklärung.

Viel Spass mit Linux Mimt 🙂
 
  • Gefällt mir
Reaktionen: BFF
Ach der Spass ist da schon. Mint, neben anderen Distries aka Suse, Ubuntu, Debian..., hab ich seit Ewigkeiten und zur Zeit halt als VM. Hab nur noch nicht wirklich den finalen Endkampf gegen den inneren Schweinehund gewonnen wer am Ende den Host spielt. 😂
 
Danke für den Artikel und hier noch ein Anwendungsfall aus einer ganz anderen Ecke (sicher krasse Nische 😅 ): Ich benutze WSL auch bereits seit und immernoch in v1, denn für mich spielt die Performance tatsächlich eine untergeordnete Rolle.
Ich bin Netzwerktechniker und da kommt es vor das man zur Übertragung von Firmware TFTP/SFTP benutzt. Nun gibt es natürlich einige Programme auch dafür unter Windows, allerdings hatten die damals von mir genutzten ein Problem mit den Switches eines Herstellers. Daraufhin hatte ich WSL probiert und ich bin bei dieser Lösung geblieben, denn es funktioniert einfach zuverlässig und ich kann den Server mit einem einfachen Kommando ab und anschalten wie ich ihn brauche. 👍
 
  • Gefällt mir
Reaktionen: Pokernikus, BFF und kim88
Ich benutze jeden Tag wsl2 + VS Code auf der Arbeit. Die Integration ist wirklich gut
 
  • Gefällt mir
Reaktionen: Pokernikus und kim88
Neugierig wie ich bin, habe ich das ganze glich auf 2 Win 11 pro Systemen ausprobiert. Auf beiden startet Dolphin aus dem Snap wie erwartet auf dem Windows Desktop.
Aber gparted will bei beiden nicht als Fenster erscheinen. Ich bekomme die App im Startmenue angezeigt, auf eine Klick scheint es als ob eien Programm aufgerufen wird (blauer Kreis neben der Maus) aber dann passiert nichts.

Wenn ich im Terminal von WSL Ubuntu gparted eingeben kommt
Code:
 [Error executing command as another user: No authentication agent found]

Muss ich in Ubuntu den selben Usernamen wählen wie in Windows? Wo würde ich hier ab besten Ansetzen um Fehler in den Aufrufen zu Analysieren?
 
  • Gefällt mir
Reaktionen: Pokernikus
ich wäre u.U. aus folgenden Gründen an WSL interessiert:
derzeit beteilige ich mich mit Windows 10 an diversen Grid Computing Projekten, wobei die Rechenarbeit dafür tw. mit der CPU und tw. mit der GPU durchgeführt wird. Man kann das individuell auswählen.
Nun gibt es unter den wissenschaftlichen Grid-Computing Projekten einige, deren GPU-Aufgaben ausschließlich auf Linux laufen.
In einem meiner PCs befinden sich daher zwei Nvidia Grafikkarten RTX3070. Meine Frage daher: bringt WSL die entsprechenden Linux-Treiber für diese Grafikkarten mit, bzw. kann ich diese nachträglich installieren, um damit GPU-Aufgaben für Linux rechnen zu können?
Mit einer von mir kürzlich versuchten Installation von Linux via Oracle Virtual Box auf dem Windows10 System ist dies NICHT möglich. Daher eben nun die Frage, ob dies beim WSL möglich wäre?
 
Wieder ein super interessanter Artikel von @kim88. Da ist der Menschheit ein guter Journalist entgangen. Viele Infos in einen kurzen Artikel zu packen, der sich dann auch noch so einfach lesen lässt, da ziehe ich meinen Hut vor!

Ich war sofort angefixt, in meiner Win11 VM wiederum WSL zu betreiben (es wäre so herrlich sinnlos) und legte direkt los. Dann las ich aber den verhängnisvollen Satz, das man VirtualBox nicht braucht, da es QEMU/KVM gäbe.
Dann begann der Zeitfresser zu arbeiten..
QEMU/KVM installieren, inklusive Virt-Manager war kein Akt. Auch die Win11.vdi in eine img wandeln lief erschreckend gut.
Copy&Paste will hier so gar nicht. Ich lernte, das ich Spice brauche (dabei hasse ich es schon in VirtualBox ständig die Gasterweiterungen nachzuziehen). Doch da hänge ich zur Zeit.
Auch läuft Win11 genauso träge wie unter VirtualBox. Auch hier muss ich nochmal ran. Unter KVM soll es ja viel flotter sein, aber das geht nach meinem jetzigen Verständnis ja nicht mit der GUI. Ich werde noch einige Wintertage brauchen.

Also nochmal vielen Dank für den bisherigen und zukünftigen Zeitfresser! (Ist ganz ohne Ironie gemeint)
 
  • Gefällt mir
Reaktionen: Pokernikus und kim88
Zurück
Oben