Thư mục gốc của hệ thống tệp Ubuntu ở đâu trong Hệ thống con Windows cho Linux và ngược lại?


389

Tôi đã cài đặt hệ thống con Ubuntu trên Windows 10 (sau khi bật tính năng trong cài đặt), nhưng thư mục gốc của hệ thống tệp Ubuntu nằm ở đâu trong ổ đĩa?


24
XIN LƯU Ý Chúng tôi (nhóm WSL) thật sự khuyên bạn KHÔNG nên chơi trò chơi trong các thư mục dữ liệu phân phối Linux ). Nếu bạn làm như vậy, mất dữ liệu và / hoặc tham nhũng RẤT có khả năng Chúng tôi đang nỗ lực cải thiện kịch bản xen kẽ này và sẽ thông báo bất kỳ tiến triển nào trên blog của chúng tôi: blog.msdn.microsoft.com/commandline
Rich Turner

@RichTurner Tôi thấy có một lý do rất cụ thể (và gây phiền nhiễu) - các chính sách của công ty đánh dấu thư mục .ssh với các quyền sai liên tục có nghĩa là cần phải đánh dấu cấu trúc là "vượt quá giới hạn" đối với tập lệnh của công ty. Nhưng nói chung - tôi đồng ý với bạn.
Daniel Staple

Mặc dù có vẻ như trên các hộp có cập nhật gần đây hơn - điều này không còn xảy ra nữa.
Daniel Staple

2
@DannyStaple Nếu bạn cần thay đổi quyền trên các tệp / thư mục trong bản phân phối Linux của bạn từ Windows, hãy sử dụng wsl.exe, ví dụ wsl chmod 600 ~/.ssh/id*- không sao chép tệp vào các thư mục này qua hệ thống tệp Windows.
Rich Turner

@RichTurner: Tại sao các bạn không đào siêu dữ liệu Linux như cách bạn đã tạo siêu dữ liệu NTFS?
Mehrdad

Câu trả lời:


421

Đối với Ubuntu được cài đặt từ cửa hàng Windows:

Mỗi bản phân phối bạn cài đặt qua cửa hàng được cài đặt vào thư mục appdata của ứng dụng đó. Ví dụ: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

Trong các lần lặp trước của Hệ thống con Windows cho Linux, hệ thống tệp Ubuntu đã ở %localappdata%\Lxss(ví dụ: C:\Users\Username\AppData\Local\Lxss- thay thế Tên người dùng bằng Tên người dùng của bạn trên Windows). Xem bài đăng trên blog của WSL trên Hỗ trợ hệ thống tệp :

Hệ thống tệp chính được WSL sử dụng là VolFs. Nó được sử dụng để lưu trữ các tệp hệ thống Linux, cũng như nội dung của thư mục chính Linux của bạn. Do đó, VolFs hỗ trợ hầu hết các tính năng mà Linux VFS cung cấp, bao gồm quyền Linux, liên kết tượng trưng, ​​FIFO, ổ cắm và tệp thiết bị.

VolFs được sử dụng để gắn thư mục gốc VFS, sử dụng %LocalAppData%\lxss\rootfslàm bộ lưu trữ dự phòng. Ngoài ra, một số điểm gắn kết VolF bổ sung tồn tại, đáng chú ý nhất /root/homeđược gắn kết bằng cách sử dụng %LocalAppData%\lxss\root%LocalAppData%\lxss\hometương ứng. Lý do cho các gắn kết riêng biệt này là khi bạn gỡ cài đặt WSL, các thư mục chính không được xóa theo mặc định, vì vậy mọi tệp cá nhân được lưu trữ ở đó sẽ được giữ nguyên.

THẬN TRỌNG

Tạo / sửa đổi bất kỳ tệp nào trong hệ thống con Linux bằng ứng dụng và công cụ Windows có thể gây hỏng dữ liệu và mất dữ liệu trong hệ thống con Ubuntu! (Cảm ơn Rich Turner đã gợi ý những lời thận trọng này!) Điều này hoàn toàn không được hỗ trợ. Từ cùng một bài đăng trên blog:

Khả năng tương tác với Windows

Mặc dù các tệp VolF được lưu trữ trong các tệp thông thường trên Windows trong các thư mục được đề cập ở trên, khả năng tương tác với Windows không được hỗ trợ. Nếu một tệp mới được thêm vào một trong các thư mục này từ Windows, thì nó sẽ thiếu các EA cần thiết cho VolF, vì vậy VolF không biết phải làm gì với tệp đó và chỉ cần bỏ qua nó. Nhiều người chỉnh sửa cũng sẽ loại bỏ EA khi lưu tệp hiện có, một lần nữa làm cho tệp không thể sử dụng được trong WSL.


Hệ thống tệp Windows của bạn được đặt tại /mnt/cmôi trường shell Bash.

nhập mô tả hình ảnh ở đây

Nguồn: Blog của Dustin Kirkland , howtogeek


14
Lxss đã bị ẩn trên hệ thống tập tin của tôi ... gây ra một chút đau đầu trong một hoặc hai phút. Bây giờ tôi đã tạo một lối tắt, nhưng dường như tôi vẫn không thể bỏ ẩn nó.
Ogaday

3
@Ogaday bạn không thể bỏ ẩn nó bằng cửa sổ thuộc tính vì nó được đánh dấu là một thư mục hệ thống. Bạn có thể bỏ ẩn nó bằng cách sử dụng attrib -s -h lxssnó sẽ bỏ đánh dấu nó như là một thư mục hệ thống.
nhà phát triển xe máy

3
Có vẻ như vị trí đã thay đổi hoặc khác nhau giữa các hệ thống vì tôi ở một vị trí khác. Tôi đã đăng bên dưới với vị trí của tôi.
NicholasJohn16

8
@souravc Bạn có thể vui lòng thêm một ghi chú quan trọng vào đầu câu trả lời của mình không, chúng tôi khuyên bạn không nên tạo / sửa đổi bất kỳ tệp nào trong LXSS bằng các ứng dụng và công cụ Windows: Rất có thể bạn sẽ bị hỏng và mất dữ liệu!
Rich Turner

5
Vui lòng đọc bài viết được đề cập ở trên: blog.msdn.microsoft.com/commandline/2016/11/17/ . Truy cập hệ thống tệp Windows từ WSL là an toàn, đó là lý do tại sao chúng tôi gắn ổ đĩa của bạn /mnt/<drive>/, nhưng KHÔNG an toàn (chưa) để truy cập hệ thống tệp Linux từ Windows, đó là lý do tại sao chúng tôi không cung cấp quyền truy cập dễ dàng vào hệ thống tệp distro.
Rich Turner

51

Điều này dường như đã thay đổi kể từ khi Bash ban đầu được giới thiệu và không áp dụng cho các bản phân phối từ Windows Store hoặc có thể nó không phù hợp với tất cả các hệ thống vì thư mục nhà của tôi nằm ở một vị trí khác:

%localappdata%\lxss\home\{username}

hoặc là:

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

{user}Tên người dùng Windows của bạn ở đâu và {username}là Tên người dùng UNIX của bạn được đặt trong khi cài đặt.

Vì vậy, thư mục gốc sẽ là:

%localappdata%\lxss

Lưu ý rằng thư mục gốc có thể không hiển thị trong Windows Explorer từ %localappdata%thư mục. Bạn có thể truy cập nó bằng mọi cách bằng cách nhập nó vào 'thanh địa chỉ' của Explorer.


Máy của tôi không thể tìm thấy: "C: \ Users \ {user} \ AppData \ Local \ Lxss \ {username}" hoặc "% localappdata% \ Lxss \ home \ {username}" nhưng "C: \ Users \ {user } \ AppData \ Local \ lxss \ {tên người dùng} "hoạt động. IE sử dụng "lxss" KHÔNG "Lxss"
Joe Codwell601770

Hệ thống của tôi có thư mục con rootfs, nhưng rootfs / home trống trong khi ./home có tài khoản người dùng và tệp của tôi. Có vẻ an toàn nhất là chỉ cần truy cập% localappdata% \ lxss và sau đó khám phá xung quanh để xem bạn có bố cục nào, cộng với việc duyệt trực tiếp đến địa chỉ đó để tránh các vấn đề với thư mục lxss bị ẩn.
JLA

1
@ JoeCodeswelluser601770 Thật kỳ lạ. Các hệ thống tập tin Windows thường không phân biệt chữ hoa chữ thường. Tôi có thể nhập% localappdata% \ Lxss hoặc% localappdata% \ lxss và cả hai đều chuyển đến% HOMEPATH% \ AppData \ Local \ lxss
jla

8
Lưu ý rằng thư mục này (lxss) không xuất hiện trong danh sách các thư mục windows explorer của tôi trong AppData \ Local, ngay cả khi chế độ xem thư mục ẩn được bật. Tôi đã phải dán thủ công thêm thư mục lxss vào thanh thám hiểm để đến các tệp ở đây, ví dụ: chỉnh sửa thư mục "url" ở đó
Colin D

Ngoài ra, bạn có thể vào Bàn làm việc, nhấp chuột phải vào "Mới-> Phím tắt" và dán một đường dẫn như C: \ Users \ yourname \ AppData \ Local \ lxss \ home \ yourname
Colin D

13

Nếu bạn cài đặt Linux từ MS Market:

họ đặt distro dưới:

$ 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

Phân phối mặc định được xác định bởi:

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

Linux root sâu hơn:

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

Tái bút Tôi đã sử dụng Cygwin để khám phá các khóa registry.

Nếu sử dụng PowerShell cho cùng một mục tiêu, các lệnh sẽ là:

# 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://bloss.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-USE-windows-apps-and-tools/


5

Điều duy nhất làm việc cho tôi là %localappdata%\lxss\home\{username}, {username}tên người dùng BASH mà bạn đã cung cấp trong quá trình cài đặt. Vì một số lý do, sau khi hiển thị lxss của thư mục ẩn từ chối xuất hiện C:\Users\WINDOWS-USER\AppData\Local\và cũng đưa ra C:\đường dẫn đầy đủ với các cửa sổ và tên người dùng BASH cũng không hoạt động.

Và hãy tạo một lối tắt trên màn hình cho những gì hoạt động.


wow mẹo hay, có cùng một vấn đề
Nicolas Mommaerts

4

Bạn có thể nhanh chóng mở Bash từ cửa sổ File Explorer của thư mục đã mở bằng cách nhập bashvào thanh vị trí.

Đủ rôi.

Ngoài ra, bạn có thể thêm một mục menu ngữ cảnh. Cá nhân tôi không khuyên dùng nó nếu không cần thiết, vì thêm phím tắt vào menu ngữ cảnh sử dụng nhiều RAM hơn.

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


Không làm việc cho tôi. Nó mở dấu nhắc lệnh và khởi chạy bash.
blablatros

@blablatros có nhưng trong thư mục trong bash in witch bạn đã mở explorer khi viết vào bash bar explorer và nhấn enter. Hãy thử trong thư mục Tài liệu của tôi đã mở thư mục Windows Explorer và trong thanh vị trí ghi bash và nó sẽ mở bash Ubuntu trong thư mục đó rồi :)
Kangarooo

1
@Kangarooo: Tôi muốn truy cập các tệp thông qua windows 10 gui cũng như ngược lại. Trong câu trả lời của tôi ở trên, tôi đã tìm ra cách định vị thư mục bash thông qua trình khám phá tệp Windows 10 và vì vậy tôi đã tiến hành sao chép một số tệp từ ổ cứng ngoài vào thư mục đó. Tuy nhiên, khi tôi mở bash terminal và nhấn ls -a, nó không hiển thị các tệp tôi đã thêm. Bash đã không nhận ra các tập tin mà tôi đã thả qua windows explorer, điều này đối với tôi đã hoàn toàn đánh bại mục đích cài đặt bash trên windows.
suy nghĩ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.