wsl2里面的文件物理存储在哪里?

Eli*_*man 23 windows-subsystem-for-linux wsl-2

我已经在我的 Windows 机器上安装了 wsl2,但我无法弄清楚文件的实际存储位置。
请注意,我并不是说我想在文件资源管理器中浏览它们 - 我知道这可以通过在资源管理器中输入来完成\\wsl$\
如果我不得不猜测,我会说文件存储在与操作系统存储相同的硬盘驱动器中。

所以实际上我有两个相关的问题。

  1. 文件存储在哪里?
  2. 如果它们存储在我的操作系统的硬盘驱动器中,我可以以某种方式将我的 wsl 重新定位到另一个硬盘驱动器吗?

编辑:
我能够找到安装路径,在我的机器中路径是:
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState

有没有办法将它安装到另一个位置?

Ser*_*edo 22

我在 PowerShell 中执行了这些命令,将 Ubuntu 发行版从 C: 移动到驱动器 D:\wsl-ubuntu :

PS C:\Users\smarc> mkdir D:\wsl-ubuntu  (create new location)
PS C:\Users\smarc> wsl -l -v            (list wsl distros)
NAME                   STATE           VERSION
Ubuntu                 Running         2
PS C:\Users\smarc> wsl --shutdown
PS C:\Users\smarc> wsl -l -v            (verify if is stopped)
NAME                   STATE           VERSION
Ubuntu                 Stopped         2
PS C:\Users\smarc> wsl --export Ubuntu ubuntu.tar  
PS C:\Users\smarc> wsl --unregister Ubuntu
PS C:\Users\smarc> wsl --import Ubuntu D:\wsl-ubuntu\ .\ubuntu.tar --version 2
Run Code Online (Sandbox Code Playgroud)

并在最后重新启动计算机。

我遇到的唯一问题是启动 Ubuntu 应用程序时的默认用户是 root。我需要执行$ su sergio才能输入我的个人用户。

您可以在进程结束时删除 ubuntu.tar。

#edit 2021-04-13:正如评论中指出的,我忘记了“--export”命令。

  • 您可以使用默认用户使用以下命令解决问题,在 PS 中执行: `<distro-name> config --default-user <username>`,在您的情况下为 `Ubuntu config --default-user sergio` (7认同)
  • 感觉您的答案中缺少“wsl --export”步骤,对吧?另请参阅[此答案](https://superuser.com/a/1627461/1210833),了解有关如何为新导入的实例设置用户名的信息。 (2认同)
  • 对于默认用户问题:创建``echo -e "[user]\ndefault=abhasker" >> /etc/wsl.conf```,然后重新启动``wsl --shutdown```。 (2认同)

Gre*_*ler 15

这是上一个问题的答案:使用符号链接

  • 以管理员身份打开命令提示符
  • 使用关闭 wsl 虚拟机wsl --shutdown
  • 将文件夹更改为C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\
  • LocalState文件夹移动到另一个位置,例如Z:\wsl\Ubuntu\
  • 创建符号链接mklink /J LocalState Z:\WSL\Ubuntu\LocalState

我还会.wslconfig从您的用户文件夹编辑/创建文件,以将交换文件移动到存储 WSL 虚拟机的文件夹,并且可能编辑/添加 CPU 核心和 RAM 分配的选项

[wsl2]
memory=4GB
processors=2
swap=1GB
swapFile=Z:\\WSL\\swap.vhdx
Run Code Online (Sandbox Code Playgroud)
  • memory是 WSL 将使用的最大内存量;
  • processors是为 WSL 虚拟机分配的核心;
  • swap是交换文件的大小;
  • swapFile是您的交换位置,据我所知,所有 WSL 虚拟机都使用该位置;请注意路径中的双斜杠,它们对于路径是必需的。

像平常一样启动 WSL VM。

  • 我认为你所描述的是一个连接点而不是符号链接 (2认同)

dop*_*ind 14

所有文件都存储在ext4.vhd安装目录中的一个文件中,您不能像在 ext4 (obv) 中那样直接挂载到 windows 上

有两种方法可以更改上述 vhd 文件的位置,官方的、繁琐的方式和非官方的快速和肮脏的方式

官方的繁琐方式

  1. 使用wsl.exe --export <Distro> <FileName>CMD/PowerShell将发行版导出到某个位置
  2. 将发行版导入到不同的位置 wsl.exe --import <Distro> <InstallLocation> <FileName> [Options]

这样做的问题是它非常耗时,在您执行此操作后,请祈祷它可以毫无问题地导出和导入价值数 GB 的数千个文件

快速而肮脏的方式

这涉及一个名为lxrunoffline的非官方开源 WSL 管理器

要安装它(最多需要一分钟),请阅读开发人员在此处的说明

如果您通过从发布页面手动下载二进制文件来安装它,请确保将其安装到 PATH 中的目录中,例如 C:\Windows

现在这个过程很简单 lxrunoffline move -n <distroname> -d <destination-folder>

例如 lxrunoffline move -n Ubuntu-20.04 -d G:\wsl\

希望我有所帮助

编辑:错字