我已经在 Windows 10 上安装了 Ubuntu 子系统(在设置中启用功能后),但是 Ubuntu 文件系统根目录位于驱动器的什么位置?
答案1
对于从 Windows 商店安装的 Ubuntu:
您通过商店安装的每个发行版都会安装到该应用程序的 appdata 目录中。例如:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
- 本希利斯
对于 WSL2,你可以像这样从 Windows(Windows 10 build 18342)访问主目录:
\\wsl$
在 Windows Subsystem for Linux 的早期版本中,Ubuntu 文件系统位于%localappdata%\Lxss
(例如C:\Users\Username\AppData\Local\Lxss
- 替换用户名使用您的用户名(在 Windows 上)。请参阅有关文件系统支持的 WSL 博客文章:
WSL 使用的主要文件系统是 VolFs。它用于存储 Linux 系统文件以及 Linux 主目录的内容。因此,VolFs 支持 Linux VFS 提供的大多数功能,包括 Linux 权限、符号链接、FIFO、套接字和设备文件。
VolFs 用于挂载 VFS 根目录,用作
%LocalAppData%\lxss\rootfs
后备存储。此外,还存在一些额外的 VolFs 挂载点,最值得注意的是/root
和, 它们分别使用和/home
挂载。这些单独挂载的原因是,当您卸载 WSL 时,主目录不会被默认删除,因此存储在那里的任何个人文件都会被保留。%LocalAppData%\lxss\root
%LocalAppData%\lxss\home
警告
使用 Windows 应用程序和工具在 Linux 子系统中创建/修改任何文件都可能导致 Ubuntu 子系统中的数据损坏和数据丢失!(感谢里奇·特纳提出这些警告!)这绝对不是支持的。摘自同一篇博文:
与 Windows 的互操作性
虽然 VolFs 文件存储在上述目录中的 Windows 常规文件中,但不支持与 Windows 的互操作性。如果从 Windows 将新文件添加到这些目录中,则该文件缺少 VolFs 所需的 EA,因此 VolFs 不知道如何处理该文件,只会忽略它。许多编辑器在保存现有文件时也会删除 EA,这同样会使该文件在 WSL 中无法使用。
您的 Windows 文件系统位于/mnt/c
Bash shell 环境中。
来源:达斯汀·柯克兰的博客,极客
答案2
自 Bash 最初推出以来,这种情况似乎已经发生了变化,并且不适用于 Windows Store 的发行版,或者可能并不适用于所有系统,因为我的主目录位于另一个位置:
%localappdata%\lxss\home\{username}
或者:
C:\Users\{user}\AppData\Local\lxss\{username}
{user}
您的 Windows 用户名在哪里?{username}
您的 UNIX 用户名是在安装期间设置的。
因此根目录将是:
%localappdata%\lxss
请注意,从目录中可以看到根目录,但 Windows 资源管理器可能无法看到%localappdata%
它。无论如何,您都应该能够通过在资源管理器的“地址栏”中输入它来访问它。
答案3
如果您从 MS Market 安装 Linux:
他们将发行版放在以下位置:
$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
默认发行版定义为:
bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution
{861c29b4-ebe2-49a5-8a22-7e53a27934a0}
Linux根源更深:
c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs
PS. 我使用 Cygwin 来探索注册表项。
如果使用 PowerShell 实现相同目标,则命令将是:
# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):
$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)
# which will have a value like:
echo $DEFAULT_LXSS_ID
{bde539d6-0c87-4e12-9599-1dcd623fbf07}
# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)
Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"
%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState
答案4
对我而言唯一有用的是%localappdata%\lxss\home\{username}
,其中{username}
是您在安装过程中提供的 BASH 用户名。出于某种原因,在显示隐藏文件夹后,lxss 拒绝出现在 中C:\Users\WINDOWS-USER\AppData\Local\
,并且提供C:\
带有 windows 和 BASH 用户名的完整路径也不起作用。
并且请为可运行的功能创建桌面快捷方式。