Die Windows-Subsystem für Linux (WSL) ist ein Feature des Windows-Betriebssystems, mit dem Sie ein Linux-Dateisystem zusammen mit Linux-Befehlszeilentools und GUI-Apps direkt unter Windows ausführen können.
Ausführlichere Informationen finden Sie auf der Seite Informationen.
Dies ist in erster Linie ein Tool für Entwickler, insbesondere für Webentwickler, die an Open Source Projekten arbeiten oder in Linux-Serverumgebungen bereitstellen. WSL richtet sich an alle, die Bash, gängige Linux-Tools (sed
, awk
usw.) und Linux-first-Frameworks (Ruby, Python usw.) verwenden, aber auch gerne Windows-Produktivitätstools verwenden.
WSL ermöglicht ihnen die Ausführung von Linux in einer Bash-Shell mit der von Ihnen gewählten Distribution (Ubuntu, Debian, OpenSUSE, Kali, Alpine usw.). Mithilfe von Bash können Sie Linux-Befehlszeilentools und -Apps ausführen. Geben Sie z.B. lsb_release -a
ein, und drücken Sie die EINGABETASTE. Es werden Details zu der derzeit ausgeführten Linux-Distribution angezeigt:
Sie können auch über die Linux Bash-Shell auf das Dateisystem Ihres lokalen Computers zugreifen. Ihre lokalen Laufwerke finden Sie unter dem /mnt
Ordner. Das Laufwerk C:
wird beispielsweise unter /mnt/c
eingebunden:
Die WSL richtet sich an ein Entwicklerpublikum mit der Absicht, als Teil einer inneren Entwicklungsschleife verwendet zu werden. Nehmen wir an, Sam erstellt eine CI/CD-Pipeline (Continuous Integration & Continuous Delivery) und möchte diese zunächst auf einem lokalen Computer (Laptop) testen, bevor er sie in der Cloud bereitstellt. Sam kann WSL (& WSL 2 zur Verbesserung von Geschwindigkeit und Leistung) aktivieren und dann lokal (auf dem Laptop) eine Linux-Ubuntu-Originalinstanz mit den von jeweiligen bevorzugten Bash-Befehlen und Tools verwenden. Sobald die Entwicklungspipeline lokal überprüft wurde, kann Sam diese CI/CD-Pipeline in die Cloud pushen, indem er sie in einen Dockercontainer umwandelt, und den Container in eine Cloudinstanz pushen, wo er auf einer produktionsbereiten Ubuntu-VM ausgeführt wird.
Bash ist eine beliebte, textbasierte Shell und Befehlssprache. Dies ist die Standardshell, die in Ubuntu und anderen Linux-Distributionen enthalten ist. Benutzer geben Befehle in eine Shell ein, um Skripts und/oder Befehle und Tools auszuführen, um zahlreiche Aufgaben zu erledigen.
Lesen Sie diesen Artikel im Windows-Befehlszeilenblog: A Deep Dive Into How WSL Ermöglicht Windows den Zugriff auf Linux-Dateien , in dem ausführliche Informationen zur zugrunde liegenden Technologie beschrieben werden.
WSL erfordert weniger Ressourcen (CPU, Arbeitsspeicher und Speicher) als ein vollständiger virtueller Computer. WSL ermöglicht es Ihnen auch, Linux-Befehlszeilentools und -Apps neben Ihren Windows Befehlszeilen-, Desktop- und Store-Apps auszuführen und von Linux aus auf Ihre Windows-Dateien zuzugreifen. Auf diese Weise können Sie Windows-Apps und Linux-Befehlszeilentools für denselben Satz von Dateien verwenden, wenn Sie möchten.
Einige plattformübergreifende Tools wurden unter der Annahme erstellt, dass sich die Umgebung, in der sie ausgeführt werden, wie Linux verhält. Einige Tools gehen beispielsweise davon aus, dass auf sehr lange Dateipfade zugegriffen werden kann oder dass bestimmte Dateien/Ordner vorhanden sind. Dies verursacht unter Windows häufig Probleme, da sich dieses Betriebssystem meistens anders als Linux verhält.
Viele Sprachen wie Ruby und Node.js werden häufig auf Windows portiert und laufen hervorragend. Allerdings portieren nicht alle Besitzer von Ruby Gem- oder node/NPM-Bibliotheken ihre Bibliotheken, um Windows zu unterstützen, und viele von ihnen verfügen über Linux-spezifische Abhängigkeiten. Dies kann häufig dazu führen, dass Systeme, die mit solchen Tools und Bibliotheken erstellt wurden, unter Windows unter Build- und manchmal unter Laufzeitfehlern leiden oder unerwünschtes Verhalten aufweisen.
Dies sind nur einige der Probleme, die viele Benutzer veranlasst haben, Microsoft zu bitten, die Befehlszeilentools von Windows zu verbessern. Dies hat uns auch dazu veranlasst, eine Partnerschaft mit Canonical einzugehen, damit native Bash- und Linux-Befehlszeilentools unter Windows ausgeführt werden können.
Während der Arbeit mit OSS-Projekten gibt es zahlreiche Szenarien, in denen es äußerst nützlich ist, aus einer PowerShell-Eingabeaufforderung zu Bash zu wechseln. Die Bash-Unterstützung ist ergänzend und stärkt den Wert der Befehlszeile unter Windows, sodass PowerShell und die PowerShell-Community andere gängige Technologien nutzen können.
Weitere Informationen finden Sie im Blog des PowerShell-Teams: Bash for Windows: Why it’s awesome and what it means for PowerShell.
WSL unterstützt x64- und Arm-CPUs.
Bereitstellungspunkte für Festplatten auf dem lokalen Computer werden automatisch erstellt und ermöglichen einen einfachen Zugriff auf das Windows-Dateisystem.
/mnt/<drive letter>/
Beispielsyntax für den Zugriff auf „C:\“: cd /mnt/c
Wie richte ich die Git-Anmeldeinformationsverwaltung ein? (Wie verwende ich meine Windows Git-Berechtigungen in WSL?)
Weitere Informationen finden Sie im Tutorial Erste Schritte mit Git auf Windows-Subsystem für Linux, das einen Abschnitt zum Einrichten von Git Credential Manager und zum Speichern von Authentifizierungstoken im Windows-Anmeldeinformations-Manager enthält.
Einer der Vorteile von WSL besteht darin, dass Sie über Windows- und Linux-Apps oder -Tools auf Ihre Dateien zugreifen können.
WSL bindet die Festplattenlaufwerke Ihres Computers unter dem Ordner /mnt/<drive>
in Ihre Linux-Distributionen ein. Das Laufwerk C:
wird beispielsweise unter /mnt/c/
eingebunden.
Mit den eingebundenen Laufwerken können Sie beispielsweise Code in C:\dev\myproj\
mit Visual Studio oder VS Code bearbeiten und diesen Code in Linux erstellen und testen, indem Sie über /mnt/c/dev/myproj
auf die gleichen Dateien zugreifen.
Weitere Informationen finden Sie im Artikel Arbeiten zwischen Windows- und Linux-Dateisystemen .
Dateien unter dem Linux-Stamm (d. h.
/
) werden von WSL gesteuert, die am Linux-Verhalten ausgerichtet sind, einschließlich, aber nicht beschränkt auf:- Dateien, die ungültige Zeichen für Windows-Dateinamen enthalten
- Für Benutzer ohne Administratorrechte erstellte symbolische Verknüpfungen
- Ändern von Dateiattributen über chmod und chown
- Unterscheidung von Groß-/Kleinschreibung für Dateien/Ordner
Dateien in eingebundenen Laufwerken werden von Windows gesteuert und weisen das folgende Verhalten auf:
- Unterstützung von Unterscheidung zwischen Groß-/Kleinschreibung
- Alle Berechtigungen sind so festgelegt, dass Sie die Windows-Berechtigungen bestmöglich widerspiegeln
Um eine Distribution aus WSL zu entfernen und alle Daten zu löschen, die dieser Linux-Distribution zugeordnet sind, führen Sie wsl --unregister <distroName>
aus, wo <distroName>
der Name Ihrer Linux-Distribution ist, was aus der Liste im wsl -l
Befehl ersichtlich ist.
Darüber hinaus können Sie dann die Linux-Distributions-App auf Ihrem Computer wie jede andere Storeanwendung deinstallieren.
Weitere Informationen zu wsl-Befehlen finden Sie im Artikel Grundlegende Befehle für WSL.
OpenSSH wird mit Windows als optionale Funktion ausgeliefert. Weitere Informationen finden Sie in der Dokumentation Zum Installieren von OpenSSH . Administratorrechte in Windows sind erforderlich, um OpenSSH in WSL auszuführen. Um einen OpenSSH-Server auszuführen, führen Sie Ihre WSL-Verteilung (z. B. Ubuntu) oder Windows Terminal als Administrator aus. Es gibt mehrere Ressourcen, die SSH-Szenarien mit WSL abdecken. Sehen Sie sich scott Hanselmans Blogartikel an: How to SSH into a Windows 10 Machine from Linux OR Windows OR anywhere, How to SSH into WSL2 on Windows 10 from an external machine, THE EASY WAY how to SSH into Bash and WSL2 on Windows 10 from a external machine, and How to use Windows 10In OpenSSH integriert, um automatisch eine SSH-Verbindung zu einem Linux-Remotecomputer herzustellen.
Die WSL-Installation versucht, das Ubuntu-Gebietsschema automatisch so zu ändern, dass es dem Gebietsschema Ihrer Windows-Installation entspricht. Wenn Sie dieses Verhalten nicht wünschen, können Sie diesen Befehl ausführen, um das Ubuntu-Gebietsschema zu ändern, nachdem die Installation abgeschlossen wurde. Sie müssen Ihre WSL-Verteilung neu starten, damit diese Änderung wirksam wird.
Im folgenden Beispiel wird das Gebietsschema in „en-US“ geändert:
sudo update-locale LANG=en_US.UTF8
Einige Benutzer haben Probleme mit bestimmten Firewallanwendungen gemeldet, die den Internetzugriff in WSL blockieren. Die gemeldeten Firewalls sind:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
In einigen Fällen ermöglicht das Deaktivieren der Firewall den Zugriff. In einigen Fällen sieht es so aus, als ob bereits die Installation der Firewall den Zugriff blockiert.
WSL nutzt die IP-Adresse von Windows, da es unter Windows ausgeführt wird. Daher können Sie auf alle Ports auf localhost zugreifen. Wenn Sie z.B. Webinhalte an Port 1234 verwenden, können Sie https://localhost:1234 in Ihren Windows-Browser eingeben. Weitere Informationen finden Sie unter Zugreifen auf Netzwerkanwendungen.
Die beste Möglichkeit zum Sichern oder Verschieben Ihrer Distributionen sind die Export-/Importbefehle , die in Windows Version 1809 und höher verfügbar sind. Sie können die gesamte Distribution mithilfe des Befehls wsl --export
in einen Tarball exportieren. Anschließend können Sie diese Verteilung wieder in WSL importieren, indem Sie den Befehl verwenden, der wsl --import
einen neuen Laufwerkspeicherort für den Import benennen kann, sodass Sie den Status Ihrer WSL-Verteilungen sichern und speichern (oder verschieben) können.
Beachten Sie, dass herkömmliche Sicherungsdienste, die Dateien in Ihren AppData-Ordnern sichern (z. B. Windows-Sicherung), Ihre Linux-Dateien nicht beschädigen.
WSL wurde für die Verwendung mit Internen Schleifenentwicklungsworkflows entwickelt und erstellt. Es gibt Designfeatures in WSL, die es für diesen Zweck hervorragend machen, es aber im Vergleich zu anderen Produkten zu einer Herausforderung für produktionsbezogene Szenarien machen können. Unser Ziel ist es, deutlich zu machen, wie sich WSL von einer normalen VM-Umgebung unterscheidet, damit Sie entscheiden können, ob sie Ihren Geschäftlichen Anforderungen entspricht.
Die Standard Unterschiede zwischen WSL und einer herkömmlichen Produktionsumgebung sind:
- WSL verfügt über eine einfache Hilfsprogramm-VM, die Ressourcen automatisch startet, beendet und verwaltet.
- Wenn Sie keine geöffneten Dateihandles für Windows-Prozesse haben, wird die WSL-VM automatisch heruntergefahren. Dies bedeutet, dass die VM heruntergefahren werden kann, wenn Sie ihn als Webserver verwenden, indem Sie eine SSH-Verbindung herstellen, um Ihren Server auszuführen und dann zu beenden, die VM heruntergefahren werden kann, da sie erkennt, dass die Benutzer die Verwendung abgeschlossen haben und ihre Ressourcen sauber.
- WSL-Benutzer haben Vollzugriff auf ihre Linux-Instanzen. Die Lebensdauer des virtuellen Computers, die registrierten WSL-Distributionen usw. sind für den Benutzer zugänglich und können vom Benutzer geändert werden.
- WSL gewährt automatisch Dateizugriff auf Windows-Dateien.
- Windows-Pfade werden standardmäßig an Ihren Pfad angefügt, was im Vergleich zu einer herkömmlichen Linux-Umgebung zu unerwartetem Verhalten für bestimmte Linux-Anwendungen führen kann.
- WSL kann ausführbare Windows-Dateien unter Linux ausführen, was auch zu einer anderen Umgebung als eine herkömmliche Linux-VM führen kann.
- Der von WSL verwendete Linux-Kernel wird automatisch aktualisiert.
- Der GPU-Zugriff in WSL erfolgt über ein
/dev/dxg
Gerät, das GPU-Aufrufe an die Windows-GPU weiter leitet. Dieses Setup unterscheidet sich von einer herkömmlichen Linux-Einrichtung. - Es gibt andere kleinere Unterschiede im Vergleich zu Bare-Metal-Linux, und es wird erwartet, dass in Zukunft mehr Unterschiede auftreten werden, wenn der Entwicklungsworkflow für innere Schleifen priorisiert wird.
Es gibt mehrere Möglichkeiten, wie Sie diese Aufgabe ausführen können:
- Die einfachste Möglichkeit besteht darin, den
wsl --export --vhd
Befehl zu verwenden, um Ihre WSL-Verteilung in eine VHD-Datei zu exportieren. Sie können diese Datei dann auf einen anderen Computer kopieren und mitwsl --import --vhd
importieren. Weitere Informationen finden Sie im Befehlsdokument . - Für die obige Implementierung ist viel Speicherplatz erforderlich. Wenn Sie nicht über viel Speicherplatz verfügen, können Sie Linux-Techniken verwenden, um Ihre Dateien zu verschieben:
- Verwenden Sie
tar -czf <tarballName> <directory>
, um einen Tarball Ihrer Dateien zu erstellen. Anschließend können Sie diese spezifischen Dateien auf Ihren neuen Computer kopieren und ausführentar -xzf <tarballName>
, um sie zu extrahieren. - Sie können auch eine Liste der installierten Pakete über
apt
mit einem Befehl wie dem folgenden exportieren:dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt
und dann dieselben Pakete auf einem anderen Computer mit einem Befehl erneut installieren, zsudo apt install -y $(cat package_list.txt)
. B. nach dem Übertragen der Datei.
- Verwenden Sie
WSL 2 ist für alle Desktop-SKUs verfügbar, in denen WSL verfügbar ist, einschließlich Windows 10 Home und Windows 11 Home.
In der neuesten Version von WSL wurde Virtualisierung auf der Grundlage der Hyper-V-Architektur ermöglicht. Diese Architektur steht in Form der optionalen Komponente ‚Virtual Machine Platform‘ zur Verfügung. Diese optionale Komponente soll für alle SKUs verfügbar sein. Weitere Details dazu stehen Ihnen in Kürze zur Verfügung, wenn wir uns der Veröffentlichung von WSL 2 nähern.
Es ist zurzeit nicht geplant, WSL 1 als veraltet zu kennzeichnen. Sie können WSL 1 und WSL 2-Distributionen nebeneinander ausführen und jederzeit ein Upgrade und Downgrade für jede Distribution durchführen. Das Hinzufügen von WSL 2 als neue Architektur bietet dem WSL-Team eine bessere Plattform zum Bereitstellen von Features, die aus WSL eine beeindruckende Möglichkeit zum Ausführen einer Linux-Umgebung unter Windows machen.
Kann ich WSL 2 und andere Virtualisierungstools von Drittanbietern wie VMware oder VirtualBox ausführen?
Einige Anwendungen von Drittanbietern funktionieren nicht, wenn Hyper-V verwendet wird, was bedeutet, dass sie nicht ausgeführt werden können, wenn WSL 2 aktiviert ist (z. B. VMware und VirtualBox). Vor kurzem wurden jedoch von VirtualBox und VMware Versionen veröffentlicht, die Hyper-V und WSL2 unterstützen. Hier finden Sie weitere Informationen zu VirtualBox-Änderungen und VMware-Änderungen. Zur Problembehandlung sehen Sie sich die Diskussionen über VirtualBox-Probleme im WSL-Repository auf GitHub an.
Wir arbeiten kontinuierlich an Lösungen zur Unterstützung der Integration von Hyper-V in Drittanbieterlösungen. Beispielsweise machen wir eine Reihe von APIs mit der Bezeichnung Hypervisor-Plattform verfügbar, die von Drittanbietern von Virtualisierungslösungen verwendet werden können, um ihre Software mit Hyper-V kompatibel zu machen. Dadurch können Anwendungen die Hyper-V-Architektur für ihre Emulation verwenden, wie etwa den Google Android Emulator und VirtualBox 6 und höher, die jetzt beide mit Hyper-V kompatibel sind.
Weitere Informationen zu WSL 2-Problemen mit VirtualBox 6.1 finden Sie im Repository für WSL-Probleme.
*Wenn Sie nach einem virtuellen Windows-Computer suchen, sind VMWare-, Hyper-V-, VirtualBox- und Parallels-VM-Downloads im Windows Dev Center verfügbar.
Wir haben Unterstützung für den Zugriff auf die GPU innerhalb von WSL 2-Distributionen veröffentlicht! Das bedeutet, dass Sie WSL jetzt leichter für Machine Learning-, KI- und Data Science-Szenarien mit großen Datasets verwenden können. Sehen Sie sich das Tutorial Erste Schritte mit GPU-Unterstützung an. Ab sofort umfasst WSL 2 keine serielle Unterstützung oder Unterstützung für USB-Geräte. Wir untersuchen derzeit, wie sich diese Features am besten hinzufügen lassen. Usb-Unterstützung ist jedoch jetzt über das USBIPD-WIN-Projekt verfügbar. Schritte zum Einrichten der USB-Geräteunterstützung finden Sie unter Verbinden von USB-Geräten .
Ja, im Allgemeinen funktionieren Netzwerkanwendungen mit WSL 2 besser und schneller, da es eine vollständige Kompatibilität mit Systemaufrufen bietet. Die WSL 2-Architektur verwendet jedoch virtualisierte Netzwerkkomponenten, d. h. WSL 2 verhält sich ähnlich wie ein virtueller Computer . WSL 2-Verteilungen weisen eine andere IP-Adresse als der Hostcomputer (Windows-Betriebssystem) auf. Weitere Informationen finden Sie unter Zugreifen auf Netzwerkanwendungen mit WSL.
Ja! Sie müssen sich vergewissern, dass für den virtuellen Computer verschachtelte Virtualisierung aktiviert ist. Dies kann auf Ihrem übergeordneten Hyper-V-Host aktiviert werden, indem Sie in einem PowerShell-Fenster mit Administratorberechtigungen den folgenden Befehl ausführen:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Ersetzen Sie ‚<VMName>‘ durch den Namen des virtuellen Computers.
WSL 2 unterstützt dieselbe wsl.conf-Datei, die von WSL 1 verwendet wird. Dies bedeutet, dass alle Konfigurationsoptionen, die Sie in einer WSL 1-Distribution festgelegt haben, z. B. das automatische Einbinden von Windows-Laufwerken, das Aktivieren oder Deaktivieren von Interop, das Ändern des Verzeichnisses, in dem Windows-Laufwerke bereitgestellt werden, auch in WSL 2 funktionieren. Weitere Informationen zu den Konfigurationsoptionen in WSL finden Sie auf der Seite Verteilungsverwaltung . Weitere Informationen zur Unterstützung für das Einbinden von Laufwerken, Datenträgern, Geräten oder virtuellen Festplatten (VHDs) finden Sie im Artikel Einbinden eines Linux-Datenträgers in WSL 2 .
Die Probleme im WSL-Produkt-Repository ermöglichen Ihnen Folgendes:
- Durchsuchen vorhandener Probleme, um zu schauen, ob ähnliche Probleme wie das bei Ihnen aufgetretene Problem beschrieben werden. Beachten Sie, dass Sie in der Suchleiste „is:open“ entfernen können, um bereits behobene Probleme in Ihre Suche einzubeziehen. Bitte kommentieren Sie offene Probleme, oder markieren Sie sie mit „Gefällt mir“, um auszudrücken, dass diese in Ihren Augen mit Priorität behandelt werden sollten.
-
Melden Sie ein neues Problem. Wenn bei Ihnen ein Problem mit WSL aufgetreten ist, das anscheinend noch nicht im Repository aufgeführt ist, wählen Sie die grüne Schaltfläche Neues Problem und dann WSL – Fehlerbericht aus. Sie müssen folgende Angaben machen: Titel für das Problem, Ihre Windows-Buildnummer (führen Sie
cmd.exe /c ver
aus, um die aktuelle Buildnummer anzuzeigen), ob Sie WSL 1 oder 2 ausführen, Ihre aktuelle Linux-Kernelversionsnummer (führen Siewsl.exe --status
odercat /proc/version
aus), die Versionsnummer Ihrer Verteilung (führen Sielsb_release -r
aus), alle anderen beteiligten Softwareversionen, die Reproduktionsschritte, das erwartete Verhalten, das tatsächliche Verhalten und die Diagnoseprotokolle, falls verfügbar und angemessen. Weitere Informationen finden Sie unter Mitwirken an WSL. - Erstellen Sie eine Featureanforderung, indem Sie die grüne Schaltfläche Neues Problem und dann Featureanforderung auswählen. Sie müssen einige Fragen beantworten, die Ihre Anforderung beschreiben.
Sie können außerdem:
- Melden Sie ein Problem mit der Dokumentation über das WSL-Dokumentationsrepository. Informationen zum Mitwirken an der WSL-Dokumentation finden Sie im Leitfaden für Microsoft-Dokumentationsmitwirkende.
- Melden Sie ein Windows-Terminal-Problem über das Windows-Terminal-Produktrepository, wenn ihr Problem mehr mit der Windows-Terminal, der Windows-Konsole oder der Befehlszeilenbenutzeroberfläche zusammenhängt.
Wenn Sie mit den neuesten WSL-News auf dem neuesten Stand bleiben möchten, nutzen Sie Folgendes:
- Unseren Befehlszeilen-Teamblog
- Twitter. Folgen Sie @craigaloewen auf Twitter, um mehr über Neuigkeiten, Updates usw. zu erfahren.