Bearbeiten

Häufig gestellte Fragen zum Windows-Subsystem für Linux

Allgemein

Was ist das Windows-Subsystem für Linux (WSL)?

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.

Für wen ist WSL geeignet?

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, awkusw.) und Linux-first-Frameworks (Ruby, Python usw.) verwenden, aber auch gerne Windows-Produktivitätstools verwenden.

Welche Aufgaben kann ich mit WSL erledigen?

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:

Screenshot der Details der Distribution

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:

Screenshot des eingebundenen Laufwerks „C:“

Könnten Sie einen typischen Entwicklungsworkflow beschreiben, der WSL einbezieht?

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.

Was ist Bash?

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.

Wie funktioniert das?

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.

Warum sollte ich WSL anstelle von Linux auf einem virtuellen Computer verwenden?

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.

Warum sollte ich beispielsweise Ruby unter Linux anstatt unter Windows verwenden?

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.

Was bedeutet das für PowerShell?

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.

Welche Prozessoren werden von WSL unterstützt?

WSL unterstützt x64- und Arm-CPUs.

Wie greife ich auf mein Laufwerk „C:“ zu?

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.

Wie verwende ich eine Windows-Datei mit einer Linux-App?

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 .

Unterscheiden sich die Dateien im Linux-Laufwerk vom eingebundenen Windows-Laufwerk?

  1. 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
  2. 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

Wie deinstalliere ich eine WSL-Distribution?

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.

Wie führe ich einen OpenSSH-Server aus?

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.

Wie ändere ich die Anzeigesprache von WSL?

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

Warum habe ich aus WSL keinen Internetzugriff?

Einige Benutzer haben Probleme mit bestimmten Firewallanwendungen gemeldet, die den Internetzugriff in WSL blockieren. Die gemeldeten Firewalls sind:

  1. Kaspersky
  2. AVG
  3. Avast
  4. Symantec Endpoint Protection
  5. 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.

Wie greife ich aus WSL unter Windows auf einen Port zu?

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.

Wie kann ich meine WSL-Verteilungen sichern oder von einem Laufwerk auf ein anderes verschieben?

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.

Kann ich WSL für Produktionsszenarien verwenden?

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.

Wie kann ich meine WSL-Dateien von einem Computer auf einen anderen übertragen?

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 mit wsl --import --vhdimportieren. 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ühren tar -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, z sudo apt install -y $(cat package_list.txt) . B. nach dem Übertragen der Datei.

WSL 2

Verwendet WSL 2 Hyper-V? Wird es auf Windows 10 Home und Windows 11 Home verfügbar sein?

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.

Was geschieht mit WSL 1? Wird es aufgegeben?

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.

Kann ich in WSL 2 auf die GPU zugreifen? Gibt es Pläne, die Hardwareunterstützung auszuweiten?

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 .

Kann WSL 2 Netzwerkanwendungen verwenden?

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.

Kann ich WSL 2 auf einem virtuellen Computer ausführen?

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.

Kann ich wsl.conf in WSL 2 verwenden?

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 .

Wo kann ich Feedback bereitstellen?

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 Sie wsl.exe --status oder cat /proc/version aus), die Versionsnummer Ihrer Verteilung (führen Sie lsb_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:

Wenn Sie mit den neuesten WSL-News auf dem neuesten Stand bleiben möchten, nutzen Sie Folgendes: