Di mana direktori root sistem file Ubuntu di Subsistem Windows untuk Linux dan sebaliknya?

Saya telah menginstal subsistem Ubuntu pada Windows 10 (setelah mengaktifkan fitur di pengaturan), tetapi di mana direktori root sistem file Ubuntu terletak di drive?

Untuk Ubuntu yang diinstal dari Windows store:

Setiap distribusi yang Anda instal melalui toko diinstal ke direktori appdata aplikasi itu. Misalnya: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

Untuk WSL2 Anda dapat mengakses direktori home dari windows (Windows 10 build 18342) seperti ini :

\\wsl$

Dalam iterasi sebelumnya dari Subsistem Windows untuk Linux, sistem file Ubuntu berada di %localappdata%\Lxss (misalnya., C:\Users\Username\AppData\Local\Lxss - ganti Nama pengguna dengan nama pengguna Anda di Windows). Lihat posting blog WSL tentang dukungan sistem File:

Sistem file utama yang digunakan oleh WSL adalah VolFs. Ini digunakan untuk menyimpan file sistem Linux, serta konten direktori home Linux Anda. Dengan demikian, VolFs mendukung sebagian besar fitur yang disediakan Linux VFS, termasuk izin Linux, tautan simbolis, FIFOs, soket, dan file perangkat.

VolFs digunakan untuk me-mount direktori root VFS, menggunakan %LocalAppData%\lxss\rootfs sebagai penyimpanan dukungan. Selain itu, ada beberapa titik pemasangan VolFs tambahan, terutama /root dan /home yang dipasang menggunakan %LocalAppData%\lxss\root dan %LocalAppData%\lxss\home masing-masing. Alasan untuk pemasangan terpisah ini adalah ketika Anda menghapus WSL, direktori home tidak dihapus secara default, sehingga file pribadi apa pun yang disimpan di sana akan dipertahankan.

Perhatian

Membuat / memodifikasi file dalam subsistem Linux menggunakan Windows apps & amp; alat dapat menyebabkan korupsi Data dan kehilangan data dalam subsistem Ubuntu! (Terima kasih untuk Rich Turner untuk menyarankan kata-kata peringatan ini!) Ini benar-benar tidak didukung. Dari posting blog yang sama:

Interoperabilitas dengan Windows

Sementara file VolFs disimpan dalam file biasa di Windows di direktori yang disebutkan di atas, interoperabilitas dengan Windows tidak didukung. Jika file baru ditambahkan ke salah satu direktori ini dari Windows, Ia tidak memiliki EA yang dibutuhkan oleh VolFs, jadi VolFs tidak tahu apa yang harus dilakukan dengan file tersebut dan mengabaikannya. Banyak Editor juga akan menghapus EA saat menyimpan file yang ada, sekali lagi membuat file tidak dapat digunakan di Wsl.


Sistem file Windows Anda terletak di /mnt/c di lingkungan shell Bash.

enter image description here

Sumber: Blog di Dustin Kirkland, howtogeek

Ini tampaknya telah berubah sejak Bash awalnya diperkenalkan, dan tidak berlaku untuk distribusi dari Windows Store, atau mungkin tidak konsisten untuk semua sistem karena direktori home Saya terletak di lokasi lain:

%localappdata%\lxss\home\{username}

atau:

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

Dimana {user} apakah nama pengguna Windows Anda dan {username} apakah nama pengguna UNIX Anda disetel saat menginstal.

Jadi direktori root akan menjadi:

%localappdata%\lxss

Perhatikan bahwa direktori root mungkin tidak terlihat di Windows Explorer dari %localappdata% direktori. Anda harus dapat mengaksesnya dengan mengetiknya di 'bilah alamat' Explorer.

Jika Anda menginstal Linux dari MS Market:

mereka menempatkan Distro di bawah:

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

Distro Default didefinisikan oleh:

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

Akar Linux lebih dalam:

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

PS. Saya menggunakan Cygwin untuk menjelajahi kunci registri.

Jika menggunakan PowerShell untuk tujuan yang sama, perintahnya adalah:

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

Anda dapat dengan cepat membuka Bash dari jendela File Explorer dari folder yang dibuka dengan mengetik bash di bilah lokasi.

Sudah cukup.

Anda juga dapat menambahkan item menu konteks. Saya pribadi tidak merekomendasikannya jika tidak diperlukan, karena menambahkan pintasan ke menu konteks menggunakan lebih banyak RAM.

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

Satu-satunya hal yang bekerja untuk saya adalah %localappdata%\lxss\home\{username}, dimana {username} apakah nama pengguna BASH Anda yang Anda berikan selama instalasi. Untuk beberapa alasan, setelah menampilkan lxss folder tersembunyi menolak untuk muncul di C:\Users\WINDOWS-USER\AppData\Local\, dan juga memberikan penuh C:\ path dengan nama pengguna windows dan BASH juga tidak berfungsi.

Dan tolong buat pintasan desktop untuk apa yang berhasil.

Bagi mereka yang mencari lokasi gambar:C:\Users\[username]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ ext4.vhdx

** HARAP DICATAT**

Kami (tim WSL) sangat menyarankan Anda tidak spelunk ke data distro Linux folders
). Jika Anda melakukannya, kehilangan data dan / atau korupsi sangat mungkin terjadi

Kami sedang berupaya meningkatkan skenario interop ini dan akan mengumumkan kemajuan apa pun di blog kami: Windows Command Line

@ Dannystaple jika Anda perlu mengubah izin pada file/folder di distro Linux Anda dari Windows, gunakan wsl.exe', misalnya ' wsl chmod 600 ~/.ssh / id ’ - lakukan* tidak * salin file ke folder ini melalui sistem file Windows.

@ mehrdad WSL mengimplementasikan server file P9, mengekspos/menyusun file dari/ke sistem file distro seperti halnya server file P9. Dengan cara ini tidak ada metadata NTFS ke marshal. Silakan tonton sesi Craig Loewen & Ben Hillis di Build 2919 untuk info lebih lanjut

@ RichTurner saya telah menemukan ada alasan yang sangat spesifik (dan menjengkelkan) - kebijakan perusahaan menandai .folder ssh dengan izin yang salah berulang kali berarti perlu menandai struktur sebagai “terlarang” untuk skrip perusahaan. Tapi secara umum - saya setuju dengan Anda.

Meskipun terlihat seperti pada kotak dengan pembaruan yang lebih baru - ini tidak lagi terjadi.

@ RichTurner: Mengapa kalian tidak terowongan Linux metadata seperti bagaimana Anda sudah terowongan NTFS metadata?

@ mehrdad kami lakukan pada tahun 1903 dan kemudian melalui server P9 baru.

@ RichTurner: Terima kasih atas jawabannya! Aku bingung sekalipun… 1903 membutuhkan mengaksesnya sebagai sumber daya jaringan, bukan? Jika Anda membuat terowongan atribut dengan cara yang sama seperti Anda membuat terowongan metadata NTFS, maka dimungkinkan untuk mengedit file secara lokal. Yang menunjukkan kepada saya bahwa tidak persis apa yang Anda lakukan?

@ RichTurner: *“dengan cara ini tidak ada metadata NTFS untuk marshal.”*Ya… jadi NTFS tunneling adalah * tidak * apa yang Anda lakukan, bertentangan dengan apa yang Anda katakan sebelumnya. Jadi kita kembali ke pertanyaan pertama saya: bukankah kalian melakukan tunnel metadata WSL alih-alih menggunakan fileserver, seperti yang sudah dilakukan NTFS dengan metadata lain?

@ mehrdad di mana saya mengatakan kami menyusun metadata NTFS? Metadata file Marsekal P9 (yaitu cap waktu, izin, nama file, dll.), bukan data NTFS.