Di mana filesystem Linux Subsystem terletak di Windows 10?

22

Cukup jelas bahwa sistem file 10 "host" Windows dipasang pada /mnt/c/dari sudut pandang "Linux". Tetapi apakah mungkin untuk mendapatkan akses ke sistem file "Linux" dari Windows? Kalau begitu, dimana tempatnya?

Ada Empat Lampu
sumber
Apa output dari mountdalam bashshell?
DavidPostill
Ini tidak mengembalikan petunjuk:rootfs on / type rootfs
Ada Empat Lampu
Hmm. Baik. Bagaimana dengan cat /etc/fstab?
DavidPostill
Tidak, sayangnya dari perspektif "linux" itu tampak duduk di perangkat keras:LABEL=cloudimg-rootfs / ext4 defaults 0 0
Ada Empat Lampu
BAIK. Tidak ada ide lain.
DavidPostill

Jawaban:

24

Sistem file root tunggal berada di sini sampai pembaruan Windows 10 Fall Creators (dirilis pada Oktober 2017):

%LOCALAPPDATA%\Lxss\rootfs

Sebagai contoh, C:\Users\Vigo\AppData\Local\Lxss\rootfs\

Poin pemasangan lainnya terletak satu tingkat di atas lxssdirektori. Misalnya, homedirektori Anda sendiri di Linux akan masuk %LOCALAPPDATA%\Lxss\home.

Mulai dari pembaruan Fall Creators, dimungkinkan untuk menginstal lebih dari satu instance Linux dan menjalankannya secara paralel. Instance yang ada (alias legacy) akan tetap berada di direktori tetapi instance baru yang dibuat berada di bawah:

% LOCALAPPDATA% \ Paket \ <distribution_specific_name> _ < random_string > \ LocalState \ rootfs

Sebagai contoh, instalasi Ubuntu 18.04 saya terletak di bawah

CanonicalGroupLimited.Ubuntu18.04onWindows_ 79rhkp1fndgsc
direktori.

Peringatan : Berhati-hatilah untuk tidak membuat , memodifikasi atau menghapus file yang terletak di bawah lxss atau pohon distribusi khusus dari Windows.

Menjelajahi dan membaca file adalah satu-satunya operasi yang tidak berbahaya. Lihat halaman blog Microsoft ini untuk detailnya.

Perhatikan bahwa mulai dari Build 1903, ada cara alternatif untuk mengakses file dari distribusi yang sedang berjalan yang tidak menunjukkan masalah yang disebutkan sebelumnya.

Cukup gunakan path \\wsl$\<distribution_specific_name>\dan Anda akan dapat membuat dan memodifikasi file. AppData masih bukan cara yang didukung untuk mengakses file dengan build 1903.

Jlliagre
sumber
Itu disembunyikan :)
Y2K
Saya tidak dapat menambahkannya ke Akses Cepat Windows Explorer sebagai bookmark untuk menemukannya dengan mudah.
john
4
Versi yang dapat disalin pengguna-tempel-netral:%USERPROFILE%\AppData\Local\Lxss\rootfs
Silveri
3
Peringatan: Menurut Microsoft, Anda tidak boleh memodifikasi sistem file linux Anda menggunakan aplikasi Windows. blogs.msdn.microsoft.com/commandline/2016/11/17/…
Korey
1
Anda dapat menyederhanakan bagian pertama dari jalan itu dengan menggunakan %LOCALAPPDATA%alih-alih%USERPROFILE%\AppData\Local
Herohtar
8

Saat ini, Anda dapat menginstal beberapa distribusi Linux. Oleh karena itu, setiap distribusi akan memiliki sistem file sendiri yang terletak di folder yang berbeda.

  • Jika Anda menginstal beberapa distribusi linux dari Windows Store, sistem file berada di bawah %USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
  • Jika Anda telah menginstal, memindahkan, atau menggandakan distribusi linux menggunakan LxRunOffline atau versi WSLDistroLauncher , sistem file dapat ditemukan di folder mana saja di komputer Anda.

Memperoleh informasi dari Registry

Lokasi setiap sistem file dapat diperoleh dari Windows Registry. Data terletak di bawah

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss

Anda dapat memulai jendela PowerShell dan menjalankan perintah berikut untuk mendapatkan lokasi sistem file

PS> (Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object {Get-ItemProperty $_.PSPath}) | select DistributionName, @{n="Path";e={$_.BasePath + "\rootfs"}}

Anda akan mendapatkan tabel dengan informasi seperti berikut ini

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

Menggunakan lxRunOffline

LxRunOffline adalah alat untuk mengelola distribusi linux yang diinstal pada WSL. Anda dapat menggunakan LxRunOffline untuk mendapatkan direktori yang digunakan oleh distribusi yang diinstal

# 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
Jaime
sumber
2

Untuk WSL2 Anda dapat mengakses direktori home dari windows explorer seperti ini:

\\wsl$

Maaf terlambat datang ke pesta!

Francisco Tena
sumber
Ini harus diperbarui untuk menjadi jawaban yang benar
dapatkan
1

Versi subsistem linux yang lebih baru menginstal sistem file di bawah packagessehingga path lengkapnya akan seperti:

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

atau:

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

... tentu saja tergantung pada mount point. Melakukan pencarian direktori .bashrcakan mengungkapkan jalur ini ...

Atau gunakan readlink .dalam shell linux untuk memposting path linux saat ini sebagai path 'DOS' ke windows clipboard. Tempel di suatu tempat yang masuk akal untuk membaca jalur fisik yang sebenarnya.

PGP
sumber
1

Sepertinya Microsoft telah mengubah / menyembunyikannya lagi, saat ini di:

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

Karena ini bisa berubah lebih lanjut di masa depan, lakukan saja saran PGP untuk melakukan pencarian file file .profile atau .bashrc.

jesseyu
sumber
1

Saya membuat skrip ini yang membuka folder WLS di Explorer

cd C:\Users\Naotho Machida\AppData\Local\Packages\Canonical*\LocalState\rootfs\etc
explorer %cd%

cukup simpan sebagai yourScript.cmd dan jalankan

Naotho Machida
sumber