Windows 10 中 Linux 子系统的文件系统在哪里?

The*_*hts 37 linux ubuntu windows-10 windows-subsystem-for-linux

很明显,/mnt/c/从“Linux”的角度来看,Windows 10 的“主机”文件系统是挂载的。但是是否有可能从 Windows 访问“Linux”文件系统?如果有,它在哪里?

jll*_*gre 34

在 Windows 10 Fall Creators 更新(2017 年 10 月发布)之前,单个根文件系统位于此处:

%LOCALAPPDATA%\Lxss\rootfs
Run Code Online (Sandbox Code Playgroud)

例如, C:\Users\Vigo\AppData\Local\Lxss\rootfs\

其他挂载点位于lxss目录中的上一级。例如,您home在 Linux 中自己的目录将位于%LOCALAPPDATA%\Lxss\home.

从 Fall Creators 更新开始,可以安装多个 Linux 实例并并行运行它们。现有实例(又名遗留)将保留在其目录中,但创建的新实例位于:

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

例如,我的 Ubuntu 18.04 安装位于

CanonicalGroupLimited.Ubuntu18.04onWindows_ 79rhkp1fndgsc
目录。

警告:当心不要创建修改删除位于下的文件lxss从Windows或分发特定树。

浏览和读取文件是唯一无害的操作。有关详细信息,请参阅此Microsoft 博客页面

请注意,从 Build 1903 开始​​,有一种替代方法可以访问未出现前面提到的问题的正在运行的发行版的文件。

只需使用路径\\wsl$\<distribution_specific_name>\,您就可以创建和修改文件。AppData 仍然支持通过 build 1903 访问文件。

  • 用户中立的可复制粘贴版本:`%USERPROFILE%\AppData\Local\Lxss\rootfs` (4认同)
  • 警告:根据微软的说法,你不应该使用 Windows 应用程序修改你的 linux 文件系统。https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/ (3认同)

Fra*_*ena 15

对于 WSL2,您可以像这样从 Windows 资源管理器访问主目录:

\\wsl$
Run Code Online (Sandbox Code Playgroud)

很抱歉在聚会上迟到了!

  • 这应该更新为正确答案 (5认同)

Jai*_*ime 11

如今,您可以安装多个 Linux 发行版。因此,每个发行版都有自己的文件系统,位于不同的文件夹中。

  • 如果您从 Windows Store 安装一些 linux 发行版,则文件系统位于 %USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
  • 如果您使用LxRunOffline或任何版本的WSLDistroLauncher安装、移动或复制了 linux 发行版,则文件系统可以位于您计算机的任何文件夹中。

从注册处获取信息

每个文件系统的位置都可以从 Windows 注册表中获得。数据位于

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
Run Code Online (Sandbox Code Playgroud)

您可以启动 PowerShell 窗口并执行以下命令来获取文件系统的位置

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

您将获得一个包含如下信息的表格

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
Run Code Online (Sandbox Code Playgroud)

使用 lxRunOffline

LxRunOffline是一个用于管理安装在 WSL 上的 Linux 发行版的工具。您可以使用 LxRunOffline 获取已安装发行版使用的目录

# 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
Run Code Online (Sandbox Code Playgroud)