Gdzie jest katalog główny systemu plików Ubuntu w Podsystemie Windows dla systemu Linux i odwrotnie?

389

Zainstalowałem podsystem Ubuntu na Windows 10 (po włączeniu funkcji w ustawieniach), ale gdzie znajduje się katalog główny systemu plików Ubuntu na dysku?

lipiec
źródło
24
PROSZĘ PAMIĘTAĆ My (zespół WSL) stanowczo zalecamy NIE spelunkowanie folderów danych dystrybucyjnych systemu Linux ). Jeśli to zrobisz, utrata danych i / lub uszkodzenie jest BARDZO prawdopodobne Pracujemy nad ulepszeniem tego scenariusza współpracy i ogłosimy
Rich Turner
@RichTurner Odkryłem, że istnieje bardzo konkretny (i irytujący) powód - zasady korporacyjne oznaczające folder .ssh z niewłaściwymi uprawnieniami oznaczają wielokrotnie konieczność oznaczenia struktury jako „poza limitem” skryptów korporacyjnych. Ale ogólnie - zgodziłbym się z tobą.
Danny Staple
Chociaż wygląda to na pudełkach z nowszymi aktualizacjami - tak się już nie dzieje.
Danny Staple
2
@DannyStaple Jeśli chcesz zmienić uprawnienia do plików / folderów w dystrybucji Linuksa z systemu Windows, użyj wsl.exenp. wsl chmod 600 ~/.ssh/id*- nie kopiuj plików do tych folderów za pośrednictwem systemu plików Windows.
Rich Turner
@RichTurner: Dlaczego nie tunelujecie metadanych Linuksa, tak jak już tunelowaliście metadane NTFS?
Mehrdad

Odpowiedzi:

421

W przypadku systemu Ubuntu zainstalowanego ze sklepu Windows:

Każda dystrybucja instalowana przez sklep jest instalowana w katalogu appdata tej aplikacji. Na przykład: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

We wcześniejszych wersjach systemu Windows dla podsystemu Linux system plików Ubuntu był w %localappdata%\Lxss(np. C:\Users\Username\AppData\Local\Lxss- zamień nazwę użytkownika na nazwę użytkownika w systemie Windows). Zobacz post na blogu WSL na temat obsługi systemu plików :

Podstawowym systemem plików używanym przez WSL są VolFs. Służy do przechowywania plików systemowych systemu Linux, a także zawartości katalogu domowego systemu Linux. Jako takie, VolFs obsługuje większość funkcji systemu Linux VFS, w tym uprawnienia Linuksa, dowiązania symboliczne, FIFO, gniazda i pliki urządzeń.

VolFs służy do montowania katalogu głównego VFS, wykorzystując go %LocalAppData%\lxss\rootfsjako magazyn kopii zapasowej. Ponadto, kilka dodatkowych VolFs zamontować istnieją punkty, przede wszystkim /root, a /homektóre są montowane przy użyciu %LocalAppData%\lxss\rooti %LocalAppData%\lxss\homeodpowiednio. Powodem tych osobnych montowań jest to, że podczas odinstalowywania WSL katalogi domowe nie są domyślnie usuwane, więc przechowywane tam osobiste pliki zostaną zachowane.

UWAGA

Tworzenie / modyfikowanie dowolnych plików w podsystemie Linux za pomocą aplikacji i narzędzi Windows może spowodować uszkodzenie danych i utratę danych w podsystemie Ubuntu! (Podziękowania dla Richa Turnera za zasugerowanie tych słów ostrożności!) To absolutnie nie jest obsługiwane. Z tego samego posta na blogu:

Współdziałanie z Windows

Podczas gdy pliki VolFs są przechowywane w zwykłych plikach w systemie Windows we wspomnianych wyżej katalogach, interoperacyjność z Windows nie jest obsługiwana. Jeśli nowy plik zostanie dodany do jednego z tych katalogów z systemu Windows, brakuje EA wymaganych przez VolFs, więc VolFs nie wie, co zrobić z plikiem i po prostu go ignoruje. Wielu redaktorów usunie również EA podczas zapisywania istniejącego pliku, ponownie uniemożliwiając jego użycie w WSL.


Twój system plików Windows znajduje się /mnt/cw środowisku powłoki Bash.

wprowadź opis zdjęcia tutaj

Źródło: blog Dustin Kirkland , howtogeek

souravc
źródło
14
Lxss był ukryty w moim systemie plików ... powodował trochę drapania głowy przez irytującą minutę lub dwie. Teraz stworzyłem skrót, ale nadal nie mogę go odkryć.
Ogaday
3
@Ogaday nie można go odkryć za pomocą okna właściwości, ponieważ jest on oznaczony jako katalog systemowy. Możesz go odkryć za pomocą, attrib -s -h lxssco spowoduje również odznaczenie go jako katalogu systemowego.
developerbmw
3
Wygląda na to, że lokalizacja uległa zmianie lub różni się w zależności od systemu, ponieważ moja znajduje się w innej lokalizacji. Opublikowałem poniżej swoją lokalizację.
NicholasJohn16,
8
@souravc Czy możesz dodać ważną notatkę na początku swojej odpowiedzi, MOCNIE zalecam, aby nie tworzyć / modyfikować żadnych plików w LXSS za pomocą aplikacji i narzędzi Windows: jeśli tak, to bardzo prawdopodobne jest uszkodzenie i utrata danych!
Rich Turner,
5
Przeczytaj powyższy post: blogs.msdn.microsoft.com/commandline/2016/11/17/… . Dostęp do systemu plików Windows z WSL jest bezpieczny, dlatego pod nim montujemy dyski /mnt/<drive>/, ale NIE jest jeszcze bezpieczny dostęp do systemu plików Linux z systemu Windows, dlatego nie zapewniamy łatwego dostępu do systemów plików dystrybucji.
Rich Turner
51

Wygląda na to, że zmieniło się od czasu pierwotnego wprowadzenia Bash i nie dotyczy dystrybucji ze Sklepu Windows, a może nie jest spójne dla wszystkich systemów, ponieważ mój katalog domowy znajduje się w innej lokalizacji:

%localappdata%\lxss\home\{username}

lub:

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

Gdzie {user}jest nazwa użytkownika systemu Windows i {username}nazwa użytkownika systemu UNIX ustawiona podczas instalacji.

Tak więc katalogiem głównym byłoby:

%localappdata%\lxss

Pamiętaj, że katalog główny może nie być widoczny w Eksploratorze Windows z %localappdata%katalogu. Powinieneś być w stanie uzyskać do niego dostęp mimo to, wpisując go w „pasku adresu” Eksploratora.

NicholasJohn16
źródło
Mój komputer nie może znaleźć: „C: \ Users \ {użytkownik} \ AppData \ Local \ Lxss \ {nazwa użytkownika}” lub „% localappdata% \ Lxss \ home \ {nazwa użytkownika}”, ale „C: \ Users \ {użytkownik } \ AppData \ Local \ lxss \ {nazwa użytkownika} "działa. IE używa „lxss” NIE „Lxss”
Joe Codeswell user601770,
Mój system ma podkatalog rootfs, ale rootfs / home jest pusty, podczas gdy ./home ma moje konto użytkownika i pliki. Najbezpieczniej jest po prostu przejść do% localappdata% \ lxss, a następnie zbadać stamtąd, aby zobaczyć, jaki masz układ, a także bezpośrednie przeglądanie tego adresu pozwala uniknąć problemów z ukrywaniem katalogu lxss.
jla
1
@ JoeCodeswelluser601770 To dziwne. Systemy plików Windows zwykle nie uwzględniają wielkości liter. Mogę wprowadzić% localappdata% \ Lxss lub% localappdata% \ lxss i oba przejść do% HOMEPATH% \ AppData \ Local \ lxss
jla
8
Zauważ, że ten folder (lxss) nie pojawił się na mojej liście eksploratora Windows folderów w AppData \ Local, nawet przy włączonym widoku ukrytych folderów. Musiałem ręcznie wkleić dodać folder lxss do paska eksploratora, aby dostać się do plików tutaj, np. Edytować folder „url” tam
Colin D
Możesz też przejść do pulpitu, kliknąć prawym przyciskiem myszy „Nowy-> Skrót” i wkleić ścieżkę jak C: \ Users \ twoja nazwa \ AppData \ Local \ lxss \ home \ twoja nazwa
Colin D
13

Jeśli instalujesz Linuksa z MS Market:

umieścili dystrybucje pod:

$ 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

Domyślna dystrybucja zdefiniowana przez:

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

Linux root jest głębszy:

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

PS. Użyłem Cygwin do zbadania kluczy rejestru.

Jeśli używasz PowerShell do tego samego celu, polecenia będą:

# 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/

gavenkoa
źródło
5

Jedyną rzeczą, która pracowała dla mnie było %localappdata%\lxss\home\{username}, gdzie {username}jest Twoja nazwa użytkownika BASH dałeś go podczas instalacji. Z jakiegoś powodu po pokazaniu ukrytego folderu lxss odmawia pojawienia się C:\Users\WINDOWS-USER\AppData\Local\, a także podanie pełnej C:\ścieżki z oknami i nazwą użytkownika BASH również nie działa.

I proszę utworzyć skrót na pulpicie do tego, co działa.

myśli binarnie
źródło
wow dobra rada, miałem ten sam problem
Nicolas Mommaerts
4

Możesz szybko otworzyć Bash w oknie Eksploratora plików w otwartym folderze, wpisując bashna pasku lokalizacji.

Wystarczy.

Możesz także dodać element menu kontekstowego. Osobiście nie polecam, jeśli nie jest to potrzebne, ponieważ dodanie skrótów do menu kontekstowego wymaga więcej pamięci RAM.

https://www.howtogeek.com/270810/how-to-quickly-launch-a-bash-shell-from-windows-10s-file-explorer/

Kangura
źródło
Nie działa dla mnie. Otwiera wiersz poleceń i uruchamia bash.
blablatros
@blablatros tak, ale w folderze w bashie, w którym miałeś otwarty Eksplorator podczas pisania w bashu w barze eksploratora i naciskania Enter. Spróbuj w folderze Moje dokumenty otworzyłem folder Eksploratora Windows i na pasku lokalizacji napisz bash, a otworzy się bash Ubuntu w tym folderze :)
Kangarooo
1
@Kangarooo: Chcę uzyskać dostęp do plików za pomocą GUI systemu Windows 10 i vice versa. W mojej powyższej odpowiedzi dowiedziałem się, jak zlokalizować katalog bash za pomocą Eksploratora plików systemu Windows 10, więc zacząłem kopiować niektóre pliki z zewnętrznego dysku twardego do tego katalogu. Jednak gdy otworzyłem terminal bash i nacisnąłem ls -a, nie pokazywałem dodanych plików. Bash nie rozpoznał plików, które wrzuciłem przez eksplorator plików systemu Windows, co dla mnie całkowicie pokonało cel instalowania basha w systemie Windows.
myśli binarnie