
WSL, Docker, Linux und virtuelle Maschinen… Für Entwickler, die an Windows-Projekten arbeiten, scheint das eine komplexe Welt zu sein. Viele hören viel Gutes darüber… Windows-Subsystem für LinuxDoch wenn sie sich an den PC setzen, ist ihnen nicht klar, welches Problem er tatsächlich lösen soll, welche Risiken damit verbunden sind oder wie man anschließend alles wieder aufräumt.
In diesem Artikel werden wir uns genauer ansehen, was die WSL ist, wofür sie jenseits des Offensichtlichen steht und vor allem, Wie Sie es so verwenden, dass Ihre Windows-Installation möglichst wenig „überladen“ wirdWir werden auch sehen, wann Sie vielleicht daran interessiert sein könnten, die Dinge umzudrehen und Linux als Ihr Hauptsystem zu verwenden, während Windows in einer virtuellen Maschine verbleibt.
Was genau ist WSL und warum reden so viele Leute darüber?
WSL steht für Windows-Subsystem für Linux, das Windows-Subsystem zum Ausführen von Linux-Distributionen Integriert in Windows 10 und 11. Microsofts Idee ist einfach: Ihnen eine "echte" Linux-Umgebung zu bieten, ohne Sie zu zwingen, Dual-Boot zu verwenden oder eine klassische virtuelle Maschine mit VirtualBox oder VMware einzurichten.
In der Praxis ermöglicht WSL die parallele Ausführung einer Distribution wie Ubuntu, Debian oder Kali unter Windows, den Austausch von Dateien zwischen beiden Systemen und Starten typischer Linux-Tools (bash, ssh, apt, Python, Node, Docker…). ohne Ihren gewohnten Desktop zu verlassen. Und das alles mit einem recht hohen Integrationsgrad in das Hostsystem.
Seit seinem Start hat WSL stark polarisierte Meinungen hervorgerufen. Einige Entwickler betrachten es als vollen Erfolg und überzeugenden Grund, weiterhin Windows zu nutzen. Andere, insbesondere aus der eher puristischen Linux-Community, sehen es als einen Schachzug von „Annehmen-Erweitern-Auslöschen“, um die Vorherrschaft von Microsoft auf Desktop-Computern aufrechtzuerhaltenUngeachtet der Kontroverse bleibt festzuhalten, dass WSL die Arbeitsweise vieler Entwickler verändert hat.
Die aktuell empfohlene Version ist WSL 2Es handelt sich nicht mehr nur um eine Kompatibilitätsschicht; es wird eine schlanke virtuelle Maschine mit einem echten Linux-Kernel verwendet. Microsoft betont, dass es sich „nicht um eine herkömmliche VM“ handle, da diese automatisch erstellt, konfiguriert und optimiert werde, doch im Kern basiere sie auf Virtualisierungstechnologien wie Hyper-V.
WSL 1 vs. WSL 2 und die Anforderungen, die Sie beachten sollten
Heute ist es wichtig, den Unterschied zwischen WSL 1 und WSL 2 zu verstehen. Insbesondere im Hinblick auf folgende Probleme: Leistungs-, Kompatibilitäts- und HardwareanforderungenWSL 1 übersetzte Linux-Systemaufrufe in Windows; das funktionierte für vieles gut, scheiterte aber an der Kompatibilität mit fortgeschritteneren Tools.
Mit WSL 2 ändert Microsoft seinen Ansatz: Es führt einen vollständigen Linux-Kernel in einer hochoptimierten virtuellen Maschine aus.Dies verbessert die Kompatibilität erheblich (Docker, typische Linux-Dateisysteme usw.) und die meisten Programme, die auf einem "echten" Linux funktionieren, funktionieren auch unter WSL 2.
Der Nachteil ist, dass WSL 2 mehr Abhängigkeiten hat. Erfordert Unterstützung für CPU-Virtualisierung und SLAT (Second Level Address Translation).Diese Funktion ist in relativ modernen Prozessoren vorhanden (Intel Nehalem und neuer, AMD Opteron und Nachfolger). Ältere CPUs, wie beispielsweise einige Core 2 Duo-Prozessoren, können WSL 2 selbst bei Aktivierung aller Funktionen nicht nutzen.
Um WSL 2 nutzen zu können, benötigen Sie außerdem eine ausreichend aktuelle Version von Windows: Windows 10 Version 1903 (Build 18362) oder höher, oder Windows 11Bei älteren Systemen muss man sich mit WSL 1 und seinen Einschränkungen begnügen. Das bedeutet in gewisser Weise, Sie schleppen immer noch die Anforderungen und Lebenszyklen von Windows mit sich herum.Wenn Ihr Rechner nicht mehr unterstützt wird, wird auch WSL nicht mehr unterstützt.
Schnelle WSL-Einrichtung und erste Entscheidungen
In den aktuellen Windows-Versionen hat Microsoft den Vorgang deutlich vereinfacht. Führen Sie einfach folgenden Befehl in einer PowerShell-Konsole mit Administratorrechten aus: Der Befehl wsl --install installiert WSL und ein Standard-Ubuntu-System.Das System selbst lädt die notwendigen Komponenten und die Distribution aus dem Microsoft Store herunter.
Beim ersten Start der Distribution werden Sie aufgefordert, etwas zu erstellen. ein Benutzername und ein Passwort für das Linux-SystemDieser Benutzer ist Ihr Hauptkonto innerhalb der Distribution und völlig unabhängig von Ihrem Windows-Konto, was dazu beiträgt, ein gewisses Maß an Isolation aufrechtzuerhalten.
Wenn Sie noch einen Schritt weiter gehen möchten, können Sie alle verfügbaren Distributionen auflisten mit wsl-list-online und wählen Sie beispielsweise Debian, Kali, openSUSE oder eine andere Ubuntu-Variante. Die Installation erfolgt mit wsl –install -d DISTRIBUTIONSNAME und jede Distribution lebt in ihrer eigenen isolierten „Box“.
Standardmäßig wird auf neuen Systemen der Befehl wsl –install selbst ausgeführt. Konfigurieren Sie WSL 2 als BasisversionSie können dies jedoch mit `wsl --set-default-version 2` sicherstellen. Falls Sie bereits mit WSL 1 erstellte Distributionen haben, können Sie diese einzeln migrieren. wsl –set-version DISTRIBUTION_NAME 2, allerdings auf Kosten einer kurzen Konvertierungszeit.
Wie sich WSL auf Ihr Windows-System auswirkt und wo es Daten speichert
Eine Ihrer Hauptsorgen ist wahrscheinlich, wie sehr WSL Ihr Windows-System „überfrachtet“ und wo all die Installationen unter Linux letztendlich landen. Das Wesentliche ist jedoch, dass Jede WSL-Distribution wird in einem Benutzerdatenordner innerhalb %LocalAppData%\Packages gespeichert.Und falls Sie Dateien lieber außerhalb des klassischen Explorers verwalten möchten, können Sie Folgendes verwenden: alternative DateimanagerEs verteilt die Dateien nicht wie eine klassische Linux-Installation über die gesamte Festplatte.
In diesem Ordner befindet sich ein LocalState-Verzeichnis mit einer virtuellen Festplatte (VHDX), die Folgendes enthält: das gesamte Linux-Dateisystem: /, /home, /var usw.Anders ausgedrückt: Webserver, Docker, Datenbanken, Projektcode – alles befindet sich innerhalb dieses Containers. Solange Sie nichts außerhalb dieses Containers verändern, sind die Auswirkungen auf typische Windows-Abläufe minimal.
WSL erfordert jedoch die Aktivierung bestimmter Systemfunktionen: „Windows-Subsystem für Linux“ und, für WSL 2, „Plattform für virtuelle Maschinen“Dies kann über PowerShell (Enable-WindowsOptionalFeature) oder über die grafische Benutzeroberfläche „Windows-Funktionen aktivieren oder deaktivieren“ erfolgen. Außerdem wird Folgendes installiert: Linux-Kernel für WSL in %SystemRoot%\System32\lxss\tools.
Diese Komponenten werden nach der Aktivierung Teil von Windows, sodass Sie zu jedem Zeitpunkt Verlassen Sie das System so, als hätten Sie WSL nie benutzt.Sie müssen die Distributionen deinstallieren, optionale Funktionen deaktivieren und gegebenenfalls das Kernel-Paket entfernen. Es ist nicht so einfach wie „einfach einen Ordner löschen und fertig“, aber auch nicht besonders kompliziert.
Beachten Sie außerdem, dass WSL eine virtuelle Netzwerkschnittstelle erstellt, Firewall-Regeln anpasst und im Fall von WSL 2 auf Dienste wie … angewiesen ist. ICS (Internet Connection Sharing) und HNS zur Verwaltung von internem NAT, DNS und DHCP.Im täglichen Betrieb ist all dies transparent, erklärt aber, warum bestimmte Unternehmens-VPNs oder Firewalls manchmal mit WSL in Konflikt geraten.
Verwendung von WSL für die Webentwicklung und weniger offensichtliche Aufgaben
Abgesehen vom typischen „Ich möchte Bash unter Windows haben“, glänzt WSL dann, wenn man … Erstellen Sie produktive Linux-Umgebungen direkt von Ihrem Windows-Desktop aus.Zum Beispiel der von Ihnen erwähnte Fall: ein FOSS-Projekt, das Docker, Flask, ArangoDB und andere Backend-Dienste verwendet.
Anstatt sich mit seltsamen Windows-Versionen oder Docker Desktop unter nativem Windows herumzuschlagen (was in der Vergangenheit recht mühsam war), können Sie den gesamten Stack direkt in Ihrer WSL-Distribution installieren. Docker läuft natürlich auf dem WSL 2-Kernel.Linux-Dienste funktionieren wie auf einem echten Server, und Sie können weiterhin VS Code oder andere grafische Tools von Windows verwenden.
Es gibt auch weniger offensichtliche Vorteile. Man kann laufen Administrationsskripte, Linux-spezifische Kommandozeilentools, aktuelle Versionen von Node und NVM, Paketmanager wie aptund ganz allgemein das gesamte Ökosystem an Hilfsprogrammen, mit denen Serverentwickler vertraut sind.
Dank der Dateisystemintegration bindet WSL Ihre Windows-Festplatten unter /mnt ein (z. B. /mnt/c für Laufwerk C:). Dadurch können Sie Bearbeiten Sie den Code mit Ihrem Windows-Editor und führen Sie ihn unter Linux aus, ohne Projekte zu duplizieren..
Ein weiterer interessanter Aspekt ist die Interoperabilität auf der anderen Seite: Von der Linux-Shell aus kann man aufrufen Windows-Programme wie notepad.exe, powershell.exe oder beliebige System-EXE-Dateien.Wenn Ihre PATH-Variable Win32-Pfade wie /mnt/c/Windows/System32 enthält, reicht es aus, den Namen der ausführbaren Datei einzugeben, um sie zu starten, es sei denn, Ihre Shell hat den PATH versehentlich überschrieben.
Windows Terminal: der perfekte Partner für WSL
Um Ihre WSL-Erfahrung komfortabler zu gestalten, empfiehlt Microsoft die Verwendung von Windows Terminal (Windows Terminal auf Spanisch)Es handelt sich um eine moderne Anwendung, mit der Sie Tabs aus verschiedenen Shells öffnen können: PowerShell, CMD und, ganz wichtig, aus jeder Ihrer WSL-Distributionen.
Mit Windows Terminal können Sie Ubuntu-, Debian- oder Kali-Sitzungen aus einem einzigen Programm erstellen, mit Registerkarten und Bedienfeldern, Tastenkombinationen konfigurieren und Schriftarten, Farben und Profile anpassen Ohne tausend separate cmd.exe-Fenster verwalten zu müssen. Außerdem entfällt die Abhängigkeit von veralteten Tools wie PuTTY für SSH-Verbindungen, da man sich direkt von einer WSL-Distribution aus mit Remote-Servern verbinden kann.
Der typische Arbeitsablauf vieler Entwickler unter Windows sieht heutzutage so aus: Programmierung in VS Code, Hauptterminal im Windows Terminal und Backend und Tools innerhalb von WSLDiese Kombination bietet ein Benutzererlebnis, das dem Arbeiten unter macOS oder direkt auf einer Desktop-Linux-Distribution sehr nahe kommt.
Netzwerk, DNS, VPN und andere Probleme in WSL
Die meisten Probleme, die WSL 2 verursacht, treten üblicherweise im Netzwerk auf: Bei Verwendung einer schlanken VM ist diese von einer virtueller Adapter, Firewall-Regeln und ein kleines internes NAT die manchmal mit Unternehmenskonfigurationen, VPNs, Antivirenprogrammen mit Firewalls oder strengen Sicherheitsrichtlinien kollidieren.
Ein häufiges Problem ist, dass WSL hat keinen Internetzugang auf den Firmencomputern.In vielen Active Directory-Domänen blockieren organisationsdefinierte Firewallregeln lokale Regeln. Da die von HNS erstellte Ausnahme zur Zulassung von DNS-Datenverkehr über die WSL-vNIC lokal ist, wird sie überschrieben. Wenn `AllowLocalFirewallRules` oder `AllowInboundRules` im entsprechenden Profil (mittels `Get-NetFirewallProfile`) auf `False` gesetzt sind, kann WSL keine Namen auflösen.
Die Lösung liegt darin, dass der Administrator eine geeignete Unternehmensregel festlegt. Oder alternativ Aktivieren Sie WSL-DNS-Tunneling mithilfe der experimentellen Option dnsTunneling. in der .wslconfig-Datei. Diese Funktion bewirkt, dass interne Linux-DNS-Anfragen direkt über die Virtualisierungsschicht an den Windows-Resolver weitergeleitet werden, ohne dass klassische Netzwerkpakete benötigt werden, die mit der Firewall in Konflikt geraten könnten.
Manche VPNs verursachen auch Probleme. Es sind Fälle bekannt, in denen… Cisco AnyConnect, OpenVPN-Clients, Lösungen wie ZScaler, McAfee Safe Connect oder Bitdefender Diese können Routen, NRPT oder Proxys so manipulieren, dass NAT unterbrochen oder der WSL-Datenverkehr gestört wird. Manchmal hilft es, networkingMode=mirrored zu aktivieren, manchmal DNS-Tunneling zu deaktivieren oder die AutoProxy-Einstellungen so anzupassen, dass die HTTP_PROXY/HTTPS_PROXY-Spiegelung unter Linux den jeweiligen Anforderungen entspricht.
Im klassischen NAT-Modus gibt es Einschränkungen wie zum Beispiel In der Datei /etc/resolv.conf können nur drei DNS-Server definiert werden.Auch hier hilft dnsTunneling: Linux verwendet alle von Windows konfigurierten DNS-Server. Darüber hinaus werden DNS-Suffixe je nach verwendetem Modus (reines NAT, NAT mit DNS-Tunneling oder Spiegelungsmodus) unterschiedlich behandelt. Im Spiegelungsmodus werden alle Windows-DNS-Suffixe in der resolv.conf-Suche berücksichtigt und automatisch aktualisiert, sobald sie sich auf dem Host ändern.
Docker- und Containerkompatibilität innerhalb von WSL
Einer der Hauptgründe für die Einführung von WSL 2 war die drastische Verbesserung der Docker-Benutzererfahrung. Die offizielle Auffassung von Microsoft und Docker ist, dass Docker Desktop verwendet WSL 2 als Backend., anstatt direkt Hyper-V oder dessen alter Engine zu verwenden.
Dennoch ist nicht alles perfekt. Es wurden beispielsweise Probleme festgestellt, wenn Sie verwenden den gespiegelten Netzwerkmodus (networkingMode=mirrored) und führen Container mit veröffentlichten Ports aus.In diesen Fällen kann Docker Desktop die Container möglicherweise nicht erstellen, wenn Sie den Standard-Netzwerk-Namespace verwenden. Als temporäre Lösung können Sie die Container mit `--network host` starten oder die problematischen Ports in der Datei `.wslconfig` zu `ignoredPorts` hinzufügen.
Es gab auch Vorfälle mit Containern, die … Netzwerkmanager oder andere aktive komplexe Netzwerkdienste Sie können die korrekte Funktion der Netzwerkkonfiguration von WSL beeinträchtigen, insbesondere bei Rückverbindungen zum Host. Microsoft empfiehlt, diese Daemons zu deaktivieren, wenn sie nicht unbedingt erforderlich sind.
Wenn Ihre Unternehmensumgebung zusätzlich einen HTTP/S-Proxy einsetzt und Sie AutoProxy in WSL aktivieren, werden Variablen wie z. B. HTTP_PROXY, HTTPS_PROXY, NO_PROXY und WSL_PAC_URLBeachten Sie, dass benutzerdefinierte Variablen Vorrang vor automatisch generierten haben. Linux unterstützt PAC nicht nativ, daher müssen Sie möglicherweise Skripte anpassen oder die Funktion deaktivieren.
Häufige Fehler in Linux-Distributionen und wie man sie behebt
Sobald man sich in der Distribution befindet, können auch typische Linux-Probleme auftreten, die teilweise durch die Eigenheiten von WSL noch verschärft werden. Ein klassisches Beispiel dafür ist, dass Windows-Befehle wie powershell.exe oder notepad.exe wurden nicht gefunden. indem man sie von der Bash aus mit der Fehlermeldung „Befehl nicht gefunden“ aufruft.
In den meisten Fällen liegt dies an einem Startskript (wie z. B. /etc/profile in Debian). PATH neu definieren, ohne den von WSL übergebenen Wert zu berücksichtigenDies kann zum Verlust von Pfaden wie /mnt/c/Windows und ähnlichen Verzeichnissen führen. Die korrekte Vorgehensweise besteht darin, die PATH-Variable nicht zu überschreiben, sondern sie zu erweitern oder die problematischen Zeilen einfach zu entfernen. Es empfiehlt sich außerdem, in der Datei `/etc/wsl.conf` zu prüfen, ob `appendWindowsPath=false` gesetzt ist.
Ein weiteres wiederkehrendes Problem ist apt-get-Upgrade-Fehler im Zusammenhang mit udev und Systemdiensten Diese werden unter WSL nicht unterstützt, da es sich nicht um ein vollständiges System mit herkömmlichem Init-System handelt. Die übliche Lösung besteht darin, ein policy-rc.d-Skript in /usr/sbin zu installieren, das den Exit-Code 101 zurückgibt, um das Starten von Diensten zu verhindern, Ausführungsberechtigungen hinzuzufügen und dpkg-divert zu verwenden, um /sbin/initctl nach /bin/true umzuleiten.
Auch SSH hat seine Eigenheiten. Wenn beim Verbindungsversuch zu einem Remote-Server Warnungen wie „UNGESCHÜTZTE PRIVATE SCHLÜSSELDATEI!“ und Berechtigungen 0777 angezeigt werden, liegt das höchstwahrscheinlich daran, dass Sie speichern Schlüssel in einem von Windows eingebundenen Verzeichnis. mit zu laxen Berechtigungen. Damit WSL die POSIX-Berechtigungen für Windows-Dateien korrekt verwaltet, wird empfohlen, einen Abschnitt in die Datei `/etc/wsl.conf` mit Optionen wie `metadata,uid=1000,gid=1000,umask=0022` einzufügen.
Umgekehrt, wenn Sie einen OpenSSH-Server innerhalb Ihrer WSL-Distribution eingerichtet haben und beim Verbindungsversuch von Windows aus die Meldung „Verbindung von 127.0.0.1 Port 22 geschlossen“ angezeigt wird, überprüfen Sie die Protokolle, indem Sie sshd im Debug-Modus starten und sicherstellen, dass Es gibt Host-Schlüssel in /etc/ssh, die nicht gelöscht wurden.Falls sie fehlen, können sie neu generiert werden, oder, einfacher, das openssh-server-Paket kann entfernt und neu installiert werden.
Verwendung von WSL in älteren Windows-Versionen und der Legacy-Variante
In Teams mit Sehr alte Versionen von Windows 10 (Creators Update, Anniversary Update) Die WSL-Unterstützung ist deutlich eingeschränkter. Sie nutzte bash.exe, lxrun und eine weniger ausgereifte Implementierung. Befehle und Pfade unterscheiden sich. Linux-Befehle wurden mit bash -c übergeben, Distributionen wurden in %LocalAppData%\lxss gespeichert, und die Interoperabilität mit Windows war rudimentärer.
Wenn Sie von dieser Stufe kommen und noch die „ältere Version“ von WSL verwenden, empfiehlt Microsoft Folgendes: Migrieren Sie Ihre Daten aus dem Store zu einer modernen Distribution. und deinstallieren Sie die alte Version. Dies können Sie mit dem Befehl `wsl --unregister Legacy` oder durch manuelles Löschen des Ordners `%LocalAppData%\lxss` tun (Vorsicht, dadurch werden alle alten Linux-Inhalte gelöscht).
In diesen Systemen sind Funktionen wie WSL 2, offizielle Unterstützung für grafische Linux-Anwendungen, Integration mit Docker Desktop und die Vereinfachung von wsl --install Sie sind nicht verfügbar. Falls Ihre Hardware dies zulässt, empfiehlt sich ein Upgrade auf eine aktuellere Version. Alternativ können Sie direkt auf Windows 11 umsteigen, um die aktuelle Version des Subsystems zu nutzen.
Falls Sie vor allem die Auswirkungen auf Windows minimieren möchten oder Ihr Computer den Anforderungen nicht mehr genügt, gibt es eine zunehmend solide Alternative: Verwenden Sie Linux als Hauptsystem und verbannen Sie Windows in eine virtuelle Maschine. (Zum Beispiel mit VirtualBox, VMware oder GNOME Boxes). So vermeiden Sie die Abhängigkeit von den steigenden Anforderungen von Windows 11 und verlängern die Lebensdauer Ihrer Hardware.


