Wo befindet sich das Stammverzeichnis des Ubuntu-Dateisystems im Windows-Subsystem für Linux und umgekehrt?


389

Ich habe das Ubuntu-Subsystem unter Windows 10 installiert (nachdem die Funktion in den Einstellungen aktiviert wurde), aber wo befindet sich das Stammverzeichnis des Ubuntu-Dateisystems auf dem Laufwerk?


24
BITTE BEACHTEN SIE Wir (das WSL-Team) EMPFEHLEN DRINGEND, NICHT in die Linux-Distributionsdatenordner zu gelangen . In diesem Fall ist es SEHR wahrscheinlich, dass Daten verloren gehen und / oder beschädigt werden. Wir arbeiten daran, dieses Interop-Szenario zu verbessern, und werden jeden Fortschritt in unserem Blog bekannt geben: blogs.msdn.microsoft.com/commandline
Rich Turner

@ RichTurner Ich habe festgestellt, dass es einen sehr spezifischen (und ärgerlichen) Grund gibt: Unternehmensrichtlinien, die den Ordner .ssh wiederholt mit den falschen Berechtigungen markieren, bedeuten, dass die Struktur für die Unternehmensskripts als "nicht zulässig" gekennzeichnet werden muss. Aber im Allgemeinen - ich stimme dir zu.
Danny Staple

Obwohl es aussieht wie bei Boxen mit neueren Updates, passiert dies nicht mehr.
Danny Staple

2
@DannyStaple Wenn Sie die Berechtigungen für Dateien / Ordner in Ihrer Linux-Distribution von Windows aus ändern müssen, verwenden Sie wsl.exez. B. wsl chmod 600 ~/.ssh/id*- Kopieren Sie keine Dateien über das Windows-Dateisystem in diese Ordner.
Rich Turner

@ RichTurner: Warum tunnelt ihr nicht Linux-Metadaten so wie ihr bereits NTFS-Metadaten?
Mehrdad

Antworten:


421

Für Ubuntu aus dem Windows Store installiert:

Jede Distribution, die Sie über den Store installieren, wird im Anwendungsdatenverzeichnis dieser Anwendung installiert. Zum Beispiel: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

In früheren Iterationen des Windows-Subsystems für Linux war das Ubuntu-Dateisystem auf %localappdata%\Lxss(z. B. C:\Users\Username\AppData\Local\Lxss- Ersetzen Sie den Benutzernamen durch Ihren Benutzernamen unter Windows). Weitere Informationen finden Sie im WSL-Blogbeitrag zum Dateisystem-Support :

Das von WSL verwendete primäre Dateisystem sind VolFs. Hier werden die Linux-Systemdateien sowie der Inhalt Ihres Linux-Basisverzeichnisses gespeichert. Als solches unterstützt VolFs die meisten Funktionen, die Linux VFS bietet, einschließlich Linux-Berechtigungen, symbolischer Links, FIFOs, Sockets und Gerätedateien.

VolFs wird zum Mounten des VFS-Stammverzeichnisses verwendet und %LocalAppData%\lxss\rootfsals Sicherungsspeicher verwendet. Darüber hinaus montieren ein paar zusätzliche volfs Punkte existieren, vor allem /rootund /homedie Verwendung montiert sind %LocalAppData%\lxss\rootund %LocalAppData%\lxss\homejeweils. Der Grund für diese separaten Bereitstellungen ist, dass beim Deinstallieren von WSL die Basisverzeichnisse nicht standardmäßig entfernt werden, sodass alle dort gespeicherten persönlichen Dateien erhalten bleiben.

VORSICHT

Das Erstellen / Ändern von Dateien im Linux-Subsystem mit Windows-Apps und -Tools kann zu Datenbeschädigung und Datenverlust im Ubuntu-Subsystem führen! (Vielen Dank an Rich Turner für diesen Hinweis!) Dies wird absolut nicht unterstützt. Aus demselben Blogeintrag:

Interoperabilität mit Windows

Während VolFs-Dateien in regulären Dateien unter Windows in den oben genannten Verzeichnissen gespeichert werden, wird die Interoperabilität mit Windows nicht unterstützt. Wenn eine neue Datei aus Windows zu einem dieser Verzeichnisse hinzugefügt wird, fehlen die von VolFs benötigten EAs, sodass VolFs nicht wissen, was mit der Datei zu tun ist, und sie einfach ignorieren. Viele Editoren entfernen auch die EAs, wenn sie eine vorhandene Datei speichern, wodurch die Datei in WSL wieder unbrauchbar wird.


Ihr Windows-Dateisystem befindet sich /mnt/cin der Bash-Shell-Umgebung unter.

Bildbeschreibung hier eingeben

Quelle: Dustin Kirklands Blog , howtogeek


14
Lxss war in meinem Dateisystem versteckt ... verursachte ein paar Minuten lang ein bisschen Kopfkratzen. Jetzt habe ich eine Verknüpfung erstellt, aber ich kann sie immer noch nicht ausblenden.
Ogaday

3
@Ogaday Sie können es nicht über das Eigenschaftenfenster einblenden, da es als Systemverzeichnis markiert ist. Sie können es mit einblenden, attrib -s -h lxsswodurch es auch als Systemverzeichnis aufgehoben wird.
Developerbmw

3
Es sieht so aus, als ob sich der Standort zwischen den Systemen geändert oder geändert hat, da sich mein Standort an einem anderen Standort befindet. Ich habe unten mit meinem Standort gepostet.
NicholasJohn16

8
@souravc Könnten Sie bitte einen wichtigen Hinweis an den Anfang Ihrer Antwort setzen und DRINGEND davon abraten, Dateien in LXSS mithilfe von Windows-Apps und -Tools zu erstellen oder zu ändern: Andernfalls besteht eine hohe Wahrscheinlichkeit, dass Daten beschädigt werden oder verloren gehen.
Rich Turner

5
Bitte lesen Sie den oben genannten Beitrag: blogs.msdn.microsoft.com/commandline/2016/11/17/… . Es ist sicher, von WSL auf das Windows-Dateisystem zuzugreifen, weshalb wir Ihre Laufwerke unter /mnt/<drive>/einbinden, aber (noch) NICHT sicher, von Windows auf das Linux-Dateisystem zuzugreifen, weshalb wir keinen einfachen Zugriff auf die Distribution-Dateisysteme bieten.
Rich Turner

51

Dies scheint sich geändert zu haben, seitdem Bash ursprünglich eingeführt wurde, und gilt nicht für Distributionen aus dem Windows Store, oder es ist möglicherweise nicht für alle Systeme konsistent, da sich mein Basisverzeichnis an einem anderen Ort befindet:

%localappdata%\lxss\home\{username}

oder:

C:\Users\{user}\AppData\Local\lxss\{username}

Wo {user}ist Ihr Windows-Benutzername und {username}ist Ihr UNIX-Benutzername während der Installation festgelegt.

Das Stammverzeichnis wäre also:

%localappdata%\lxss

Beachten Sie, dass das Stammverzeichnis im Windows Explorer möglicherweise nicht im Verzeichnis angezeigt wird %localappdata%. Sie sollten trotzdem darauf zugreifen können, indem Sie es in die Adressleiste des Explorers eingeben.


Mein Computer kann Folgendes nicht finden: "C: \ Benutzer \ {Benutzer} \ AppData \ Local \ Lxss \ {Benutzername}" oder "% localappdata% \ Lxss \ home \ {Benutzername}", aber "C: \ Benutzer \ {Benutzer" } \ AppData \ Local \ lxss \ {Benutzername} "funktioniert. IE verwenden "lxss" NICHT "Lxss"
Joe Codeswell user601770

Mein System hat das Unterverzeichnis rootfs, aber rootfs / home ist leer, während ./home mein Benutzerkonto und meine Dateien hat. Am sichersten ist es, einfach zu% localappdata% \ lxss zu gehen und von dort aus zu suchen, welches Layout Sie haben. Außerdem können Sie durch direktes Navigieren zu dieser Adresse Probleme mit dem versteckten Verzeichnis lxss vermeiden.
Jla

1
@ JoeCodeswelluser601770 Das ist merkwürdig. Windows-Dateisysteme unterscheiden normalerweise nicht zwischen Groß- und Kleinschreibung. Ich kann% localappdata% \ Lxss oder% localappdata% \ lxss eingeben und beide gehen zu% HOMEPATH% \ AppData \ Local \ lxss
jla

8
Beachten Sie, dass dieser Ordner (lxss) in der Windows Explorer-Liste der Ordner in AppData \ Local nicht angezeigt wurde, auch wenn die Ansicht für ausgeblendete Ordner aktiviert war. Ich musste den Ordner lxss manuell in die Explorer-Leiste einfügen, um zu den Dateien hier zu gelangen. Bearbeiten Sie z. B. den Ordner "url" dahin
Colin D

Alternativ können Sie zum Desktop gehen, mit der rechten Maustaste auf "Neu-> Verknüpfung" klicken und einen Pfad wie C: \ Benutzer \ Ihr Name \ AppData \ Local \ lxss \ home \ Ihr Name
Colin D

13

Wenn Sie Linux von MS Market installieren:

Sie platzierten Distributionen unter:

$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Standarddistribution definiert durch:

bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution
{861c29b4-ebe2-49a5-8a22-7e53a27934a0}

Linux root ist tiefer:

c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs

PS. Ich habe Cygwin verwendet, um Registrierungsschlüssel zu untersuchen.

Wenn Sie PowerShell für dasselbe Ziel verwenden, lauten die Befehle:

# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):
$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)

# which will have a value like:
echo  $DEFAULT_LXSS_ID
{bde539d6-0c87-4e12-9599-1dcd623fbf07}

# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)
Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"
%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState

PPS. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/


5

Das Einzige, was für mich funktioniert hat, war %localappdata%\lxss\home\{username}, wo {username}sich Ihr BASH-Benutzername befindet, den Sie bei der Installation angegeben haben. Aus irgendeinem Grund wird lxss nach dem Anzeigen des versteckten Ordners nicht angezeigt C:\Users\WINDOWS-USER\AppData\Local\, und es C:\funktioniert auch nicht , den vollständigen Pfad mit Windows und BASH-Benutzernamen anzugeben.

Und bitte erstellen Sie eine Desktop-Verknüpfung für das, was funktioniert.


wow guter Tipp, hatte das gleiche Problem
Nicolas Mommaerts

4

Sie können Bash in einem Datei-Explorer-Fenster des geöffneten Ordners schnell öffnen, indem Sie bashin die Adressleiste tippen.

Es ist genug.

Sie können auch ein Kontextmenüelement hinzufügen. Ich persönlich empfehle es nicht, wenn es nicht benötigt wird, da das Hinzufügen von Verknüpfungen zum Kontextmenü mehr RAM benötigt.

https://www.howtogeek.com/de/270810/zum-schnellen-Start-einer-Bash-Shell-von-Fenstern-10-Dateiexplorer/


Funktioniert bei mir nicht. Es öffnet die Eingabeaufforderung und startet Bash.
Blablatros

@blablatros ja, aber in Ordner in Bash, in dem Sie den Explorer geöffnet hatten, als Sie in die Explorer-Leiste Bash geschrieben haben und die Eingabetaste gedrückt haben. Versuchen Sie im Ordner Eigene Dateien geöffneten Windows Explorer-Ordner und in der Adressleiste Bash schreiben und es wird Ubuntu Bash in diesem Ordner bereits öffnen :)
Kangarooo

1
@ Kangarooo: Ich möchte über die Windows 10-Benutzeroberfläche auf die Dateien zugreifen und umgekehrt. In meiner obigen Antwort habe ich herausgefunden, wie man das Bash-Verzeichnis über den Windows 10-Dateiexplorer findet. Deshalb habe ich einige Dateien von meiner externen Festplatte in dieses Verzeichnis kopiert. Als ich jedoch das Bash-Terminal öffnete und drückte ls -a, wurden die von mir hinzugefügten Dateien nicht angezeigt. Bash hat die Dateien, die ich über den Windows-Datei-Explorer abgelegt habe, nicht erkannt, was für mich den Zweck der Installation von Bash auf Windows völlig zunichte gemacht hat.
thinksinbinary
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.