从“Linux”的角度来看,Windows 10 的“主机”文件系统显然已安装/mnt/c/
。但是是否可以从 Windows 访问“Linux”文件系统?如果可以,它在哪里?
答案1
单个根文件系统位于此处,直到 Windows 10 Fall Creators 更新(于 2017 年 10 月发布):
%LOCALAPPDATA%\Lxss\rootfs
例如,C:\Users\Vigo\AppData\Local\Lxss\rootfs\
其他挂载点位于lxss
目录中的上一级。例如,home
Linux 中的您自己的目录将位于%LOCALAPPDATA%\Lxss\home
。
从 Fall Creators 更新开始,可以安装多个 Linux 实例并并行运行它们。现有实例(又称旧版)将保留在其目录中,但新创建的实例位于:
%LOCALAPPDATA%\Packages\<分发特定名称>_<随机字符串>\LocalState\rootfs
例如,我的 Ubuntu 18.04 安装位于
CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc目录。
警告:注意不要创造,调整或者删除文件位于陣陣或来自 Windows 的发行版特定树。
探索和阅读文件是唯一无害的操作。请参阅此微软博客页面了解详情。
请注意,从 Build 1903 开始,有另一种方法可以访问正在运行的发行版的文件,而不会出现前面提到的问题。
只需使用该路径\\wsl$\<distribution_specific_name>\
,您就可以创建和修改文件。AppData 仍然不是一种支持访问版本 1903 的文件的方式。
答案2
对于 WSL2,你可以像这样从 Windows 资源管理器访问主目录:
\\wsl$
抱歉我参加聚会迟到了!
答案3
如今,你可以安装多个 Linux 发行版。因此,每个发行版都有自己的文件系统,位于不同的文件夹中。
- 如果你从 Windows 商店安装某些 Linux 发行版,则文件系统位于
%USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
- 如果你已经使用以下方式安装、移动或复制了 Linux 发行版LxRun离线或任何版本的WSLDistroLauncher,文件系统可以位于您计算机的任何文件夹中。
从注册表获取信息
每个文件系统的位置可以从 Windows 注册表中获取。数据位于
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
您可以启动 PowerShell 窗口并执行以下命令来获取文件系统的位置
PS> (Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object {Get-ItemProperty $_.PSPath}) | select DistributionName, @{n="Path";e={$_.BasePath + "\rootfs"}}
您将获得一个包含以下信息的表格
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
使用 lxRunOffline
LxRun离线是用于管理安装在 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
答案4
更高版本的 Linux 子系统将文件系统安装在以下位置,packages
因此完整路径将如下所示:
C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\root
或者:
C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\home\myLinuxUserName
...当然取决于挂载点。执行目录搜索.bashrc
将显示这些路径...
或者readlink .
在 Linux shell 中使用,将当前 Linux 路径作为“DOS”路径发布到 Windows 剪贴板。粘贴到某个合理位置即可读取实际的物理路径。