自 2017 年底以来发布的 Windows 10 版本(包括 Fall Creators Update 和 Windows Insiders Builds 17063+)支持在同一台机器上运行多个 linux 发行版。因此,WSL 必须将每个发行版的根文件系统存储在不同的位置。
根文件系统不再位于
%LocalAppData%\lxss\rootfs
文件系统文件夹的新位置
从 Windows 应用商店安装的每个 linux 发行版都将根文件系统存储在不同的文件夹中
%LocalAppData%\Packages\<distro folder>\LocalState
<distro folder> 因一种发行版而异。例如,以下是我的测试计算机中的<distro folder>:
- Ubuntu 16.04:
CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc
- Ubuntu 18.04:
CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
- Debian :
TheDebianProject.DebianGNULinux_76v4gfsz19hv4
- 卡利Linux:
KaliLinux.54290C8133FEE_ey8k8hqnwqnmg
如果您想访问 root 或 home 文件系统,您必须使用相应的文件夹。例如,要访问 KaliLinux 的文件夹,您必须访问:
%LocalAppData%\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\rootfs # root
%LocalAppData%\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\home # home
使用 lxRunOffline 获取路径
LxRunOffline 是一个管理 WSL linux 发行版的工具。它可用于安装 WSL 发行版或将其移动到您计算机的任何文件夹中。
您可以使用lxRunOffline get-dir获取安装文件夹的路径。 root 位于 rootfs 子文件夹中。
C:\> lxrunoffline list
Ubuntu-18.04
ubuntu-copy
C:\> lxrunoffline get-dir -n Ubuntu-18.04
C:\Users\nnn\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState
C:\> lxrunoffline get-dir -n ubuntu-copy
d:\wsl\installed\ubuntu-copy
以编程方式获取路径
如果您有兴趣,可以使用程序获取路径。有关已安装发行版及其配置的信息存储在 Windows 注册表中。
您可以使用regedit和以下路径查看信息:
HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss
您已经安装了各种发行版的所有配置。例如,您可以使用 Powershell 获取默认分发的基本路径信息。
$WSLREGKEY="HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss"
$WSLDEFID=(Get-ItemProperty "$WSLREGKEY").DefaultDistribution
$DISTROPATH=(Get-ItemProperty "$WSLREGKEY\$WSLDEFID").BasePath
echo "the filesystems are located at $DISTROPATH"
要检查所有已安装发行版的文件系统,您也可以使用 Powershell。
(Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object {Get-ItemProperty $_.PSPath}) | select DistributionName,BasePath