Wo befindet sich das Dateisystem des Linux-Subsystems in Windows 10?

6713
There Are Four Lights

Es ist ziemlich klar, dass das Windows 10-Host-Dateisystem /mnt/c/aus Sicht von Linux eingehängt ist . Kann man von Windows aus auf das "Linux" -Dateisystem zugreifen? Wenn ja, wo ist es?

14
Was ist die Ausgabe von `mount` in einer` bash`-Shell? DavidPostill vor 8 Jahren 0
Dies gibt keine Hinweise zurück: `rootfs auf / type rootfs` There Are Four Lights vor 8 Jahren 0
Hmm. OK. Was ist mit "cat / etc / fstab"? DavidPostill vor 8 Jahren 0
Nein, leider sieht es aus der "Linux" -Perspektive auf Hardware aus: `LABEL = cloudimg-rootfs / ext4 defaults 0 0` There Are Four Lights vor 8 Jahren 0
OK. Keine anderen Ideen. DavidPostill vor 8 Jahren 0
Es ist eigentlich nicht richtig, wenn man sich die virtuellen Maschinenkonzepte "host" und "guest" vorstellt. [Dies ist * ein * Dateisystem, das von verschiedenen Windows NT-Subsystemen lediglich auf unterschiedliche Weise dargestellt wird, da sie jeweils von ihren eigenen Namenskonventionen den nativen Object Manager-Namen zuordnen.] (Https://news.ycombinator.com/item?id=) 11415671) JdeBP vor 8 Jahren 0
** Warnung ** Bitte beachten Sie, dass Microsoft [starke Entmutigungen] (https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps- and-tools /) Manipulation der WSL-Dateien mithilfe von Nicht-WSL-Dienstprogrammen. Daniel B vor 7 Jahren 0

4 Antworten auf die Frage

17
jlliagre

Das einzige Root-Dateisystem befand sich hier bis zum Update für Windows 10 Fall Creators (veröffentlicht im Oktober 2017):

%USERPROFILE%\AppData\Local\Lxss\rootfs 

Zum Beispiel, C:\Users\Vigo\AppData\Local\Lxss\rootfs\

Andere Einhängepunkte befinden sich eine Ebene höher im lxssVerzeichnis. Beispielsweise befindet sich Ihr eigenes homeVerzeichnis in Linux %USERPROFILE%\AppData\Local\Lxss\home.

Ab dem Fall Creators-Update können mehrere Instanzen von Linux installiert und parallel ausgeführt werden. Die vorhandene Instanz (auch bekannt als Legacy) bleibt in ihrem Verzeichnis, aber neu erstellte Instanzen befinden sich unter:

% USERPROFILE% \ AppData \ Local \ Packages \ <Verteilungsspezifikation_Name> _ <Zufallszeichenfolge> \ LocalState \ rootfs

Zum Beispiel befindet sich meine Ubuntu 18.04 Installation unter der

CanonicalGroupLimited.Ubuntu18.04onWindows_ 79rhkp1fndgsc
Verzeichnis.

Warnung : Achten Sie darauf, keine Dateien zu erstellen, zu ändern oder zu löschen, die sich unter dem lxss- oder distributionsspezifischen Baum von Windows befinden.

Das Erkunden und Lesen von Dateien ist die einzige harmlose Operation. Weitere Informationen finden Sie auf dieser Microsoft-Blogseite .

Es wurde versteckt :) Y2K vor 7 Jahren 0
Ich kann es nicht als Lesezeichen zum Schnellzugriff von Windows Explorer hinzufügen, um es einfach zu finden. john vor 7 Jahren 0
Eine benutzerneutrale, kopierfähige Version: `% USERPROFILE% \ AppData \ Local \ Lxss \ rootfs` Silveri vor 7 Jahren 4
Warnung: Laut Microsoft sollten Sie Ihr Linux-Dateisystem nicht mit Windows-Anwendungen ändern. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/ Korey vor 6 Jahren 2
@Korey Vielen Dank für das Erinnern an diesen Punkt, die Antwort wurde aktualisiert. jlliagre vor 6 Jahren 0
Auch das Lesen ist nicht unbedingt harmlos. Wie der MS-Blogbeitrag erwähnt, sperren (oder modifizieren) manche Programme Dateien bei 'open', dh sie sind nicht wirklich schreibgeschützt. Die einzige sicherste Operation, die mir einfällt, ist das Kopieren der Datei an einem anderen Ort, und auch das hängt davon ab, was Sie zum Kopieren verwenden (ich glaube, dass das Lesen zum Lesen gegen das Löschen gesperrt ist?). Besser nicht anfassen - verwenden Sie WSL, um auf einen DrvFs-Mountpoint zu kopieren. Ich bin der Meinung, dass Ihre Warnung zu Beginn der Antwort deutlicher sein sollte - es gibt fast nie einen guten Grund, etwas anderes zu tun, als das gesamte Verzeichnis zu löschen. Bob vor 5 Jahren 0
3
Jaime

Heutzutage können Sie mehrere Linux-Distributionen installieren. Daher hat jede Distribution ein eigenes Dateisystem in einem anderen Ordner.

  • Wenn Sie einige Linux-Distributionen aus dem Windows Store installieren, befinden sich die Dateisysteme unter %USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
  • Wenn Sie eine Linux-Distribution mit LxRunOffline oder einer beliebigen Version des WSLDistroLauncher installiert, verschoben oder dupliziert haben, kann sich das Dateisystem in einem beliebigen Ordner Ihres Computers befinden.

Abrufen der Informationen aus der Registry

Der Speicherort jedes Dateisystems kann von der Windows-Registrierung abgerufen werden. Die Daten befinden sich unter

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss 

Sie können ein PowerShell-Fenster starten und den folgenden Befehl ausführen, um die Speicherorte der Dateisysteme abzurufen

PS> (Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object ) | select DistributionName, @} 

Sie erhalten eine Tabelle mit folgenden Informationen

DistributionName Path ---------------- ---- Ubuntu C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs Ubuntu-18.04 C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs mydistro C:\wsl\mydistro\rootfs 

LxRunOffline verwenden

LxRunOffline ist ein Tool zur Verwaltung von auf WSL installierten Linux-Distributionen. Sie können LxRunOffline verwenden, um das von einer installierten Distribution verwendete Verzeichnis abzurufen

# lxrunoffline get-dir -n <name of the distro>  C:\> lxrunoffline get-dir -n backup c:\wsl\installed\backup  C:\> lxrunoffline get-dir -n Ubuntu C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState 
1
PGP

Die spätere Version des Linux-Subsystems installiert das Dateisystem unter, packagesso dass der vollständige Pfad in etwa so aussehen würde:

C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\root 

oder:

C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\home\myLinuxUserName 

... natürlich abhängig vom Einhängepunkt. Wenn Sie eine Verzeichnissuche durchführen .bashrc, werden diese Pfade sichtbar ...

Alternativ können Sie readlink .in der Linux-Shell den aktuellen Linux-Pfad als "DOS" -Pfad in die Windows-Zwischenablage stellen. Fügen Sie einen sinnvollen Ort ein, um den tatsächlichen physischen Pfad zu lesen.

1
jesseyu

Sieht aus, als hätte Microsoft es mehr geändert / versteckt, derzeit ist es:

% USERPROFILE% \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows _ ????????????? \ LocalState \ rootfs

Da sich dies in Zukunft noch ändern könnte, tun Sie einfach den Vorschlag von PGP, eine Dateisuche in .profile- oder .bashrc-Dateien durchzuführen.