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).
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.
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.
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.
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.
In zukünftigen Artikeln erkläre ich, wie man idealerweise lokale Entwicklungsumgebungen unter der WSL Linux-Instanz und Windows zusammen einrichtet.