Linux 子系统的文件系统位于 Windows 10 中的什么位置?

Linux 子系统的文件系统位于 Windows 10 中的什么位置?

从“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目录中的上一级。例如,homeLinux 中的您自己的目录将位于%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 剪贴板。粘贴到某个合理位置即可读取实际的物理路径。

相关内容