WSL

Linux mit WSL auf Windows installieren

  • dani

dani

4 min read
Photo by Gabriel Heinzer / Unsplash

Als ich zwischenzeitlich ohne einen Mac war, aber immer noch einen Gaming PC hatte, wollte ich auf diesem das Coden weiterführen. Aber Windows kann für Entwickler sehr umständlich sein. Um z.B. node.js oder PHP zu installieren, muss man immer auf eine Website gehen und eine ausführbare Installationsdatei herunterladen. Dann muss man alles irgendwie manuell in die PATH-Variable eintragen. Unter Linux oder Mac hingegen braucht man nur einen Befehl im Terminal abzufeuern, um das benötigte Programm zu installieren, und schon ist es da, bereit zum Ausführen. Als ich schließlich einen Apache-Webserver brauchte, trieb mich der Ärger mit Windows zu dem Gedanken, Linux auf meinem Gaming PC zu installieren.

Die entscheidende Frage bei der Installation von Linux auf einem Windows-PC ist eigentlich immer: Verwendet man eine virtuelle Maschine (VM), bei der das eine Systeme der Host des anderen ist, oder verwendet man Dual-Boot? Zumindest waren das die beiden Optionen, die ich bis dahin kannte (ich Dummkopf). Ich habe sogar eine Ubuntu-VM auf dem PC ausprobiert, die allerdings sehr langsam war und deren Grafik nicht so gut funktionierte. Also hätte ich beinahe das Dual-Boot installiert – bis ich von Windows Subsystem for Linux (WSL) gehört habe.

WSL ermöglicht es, ein GNU/Linux-System in einem bestehenden Windows-System zu installieren – ohne Virtualisierung oder Dual-Boot-Setup. Es integriert den jeweiligen Kernel in das Windows-System und führt alle Linux-Anwendungen und (vor allem) alle Befehlszeilen-Tools direkt in Windows aus. Über das Window Forwarding lassen sich auch Linux-Anwendungen mit grafischen Oberflächen ausführen. Klingt nach dunkler Magie, oder? Für Entwickler ist das ein großer Gewinn an Lebensqualität. Und das lässt mich die Frage stellen: Wie gut ist Windows, wenn man Linux integrieren muss, um es besser zu machen? 😉

Installation von Linux unter WSL

Die Dokumentation für die Installation von WSL ist ungelogen sehr gut. Und die Installation ist sehr einfach. Alles was man braucht ist Windows 10 Version 2004 und höher oder Windows 11. Starte eine PowerShell oder eine Windows-Eingabeaufforderung als Administrator aus und führe den folgenden Befehl aus:

wsl --install

Der Befehl installiert die Standard-Linux-Distribution, nämlich Ubuntu. Es kann jede beliebige, benutzerdefinierte Distribution durch Import einer TAR-Datei installiert werden. Es gibt eine Reihe von Distributionen, die aus dem Online-Store installierbar sind und die mit dem Befehl wsl -l -o aufgelistet werden:

C:\Users\Daniel>wsl -l -o
The following is a list of valid distributions that can be installed.
Install using 'wsl --install -d <Distro>'.

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS

Die jeweilige Distribution kann mit dem folgenden Befehl installiert werden:

wsl --install -d <Distro>

Die Installation mehrerer Linux-Versionen auf demselben Windows Computer ist ebenfalls kein Problem. Für mehr Details sei auf die Dokumentation von Microsoft verwiesen.

Das Windows Terminal für den Zugriff auf Linux verwenden

Ich habe das nie zuvor gehört, aber es gibt tatsächlich ein Windows Terminal, eine Terminal-Anwendung für Windows, wie man sie von seinem geliebten Linux- oder Mac-System kennt. Im Grunde ist das Terminal eine Alternative zur Eingabeaufforderung (CMD) und der PowerShell. Das Windows Terminal verwenden wir um auf die Linux-Distribution zuzugreifen und sie zu steuern.

Man kann das Terminal aus dem Microsoft Store mit dem Link https://aka.ms/terminal oder manuell aus ebendiesem installieren, oder man baut es selbst aus dem GitHub Repository. Für mehr Installations-Optionen siehe die Microsoft Dokumentation.

Nach der Installation und dem Starten des Windows Terminals, kann man auf den "Pfeil runter" in der Menüleiste klicken um auf die Linux-Instanz zuzugreifen (in meinem Fall Ubuntu).

Öffnen eines neuen Tabs im Windows Terminal durch Klicken auf den "Pfeil runter"
Öffnen eines neuen Tabs im Windows Terminal durch Klicken auf den "Pfeil runter"

Man kann dort auch zu den Einstellungen (Settings) navigieren und das Default-Profil auf die Linux-Instanz setzen (bei mir wie gesagt Ubuntu). Dadurch wird bei jedem Start des Terminals automatisch ein neues Tab für die Linux-Instanz geöffnet und falls diese noch nicht gestartet ist, wird sie gestartet.

Setzen des Default-Profils auf die Linux-Instanz in den Einstellungen
Setzen des Default-Profils auf die Linux-Instanz in den Einstellungen

In dem Terminal lassen sich Linux-Befehszeilen ausführen. Das erste was du tun solltest ist den Paket-Manager selbst und alle durch ihn installierten Applikationen zu aktualisieren. Im Fall einer Ubuntu-Instanz benutze dafür den Befehl:

sudo apt update && sudo apt upgrade

Starten des Linux-Systems

Das Linux-System sollte starten, sobald das Windows-Terminal mit dem entsprechenden Profil startet. Bei mir dauert es einige Sekunden, nachdem ich das Terminal gestartet habe, und dann ist das Linux-System recht schnell bereit. Nach dem Starten zeigt das System eine Meldung mit einigen Statusinformationen an.

Starten von WSL in dem Windows Terminal
Starten von WSL in dem Windows Terminal

Zugriff auf das Linux-Dateisystem

Auf alle Dateien der Linux-Instanz kannst du mit dem Windows Explorer zugreifen. Führe nnerhalb des Terminals den folgenden Befehl aus:

explorer.exe .

Der Punkt . nach explorer.exe ist sehr wichtig, weil er dem Explorer befehlt das aktuelle Verzeichnis zu öffnen, also das Linux Home-Verzeichnis des Benutzers. Lässt man den Punkt weg, öffnet sich der Explorer mit dem Windows Home-Verzeichnis, nicht dem von Linux.

Starten des Windows Explorers mit dem Linux Home-Verzeichnis
Starten des Windows Explorers mit dem Linux Home-Verzeichnis

Klickt man nun auf den wsl$ Teil in der Adress-Leiste des Windows Explorers, macht einen Rechtsklick auf den Ubuntu-Ordner und wählt Netzlaufwerk verbinden... (das öffnet ein Dialog-Fenster in dem man einen Buchstaben auswählen muss), dann kann man dem Verzeichnis einen Laufwerks-Buchstaben zuweisen (z.B. Z:) und so einfacher aus dem Windows Explorer darauf zugreifen.

WSL-Verzeichnis als Netzlaufwerk verbinden
WSL-Verzeichnis als Netzlaufwerk verbinden

In zukünftigen Artikeln erkläre ich, wie man idealerweise lokale Entwicklungsumgebungen unter der WSL Linux-Instanz und Windows zusammen einrichtet.