将 WSL2 文件系统移动到另一个驱动器

将 WSL2 文件系统移动到另一个驱动器

与 WSL1 不同,WSL2 的官方文档明确指出我应该将我经常从 Linux 访问的文件放在 Linux 文件系统下。但是,我还没有找到有关在 Windows 文件系统中 Linux 文件系统所处位置的设置的文档。

当然,%LOCALAPPDATA%如果你(像我一样)将你的机器配置为具有最小C:\驱动器和更大的驱动器,则默认位置(在 下的某个位置)不是最优的D:\- 我宁愿将 Linux 文件系统放在那里,以利用所有空间。

我能以某种方式控制我的 Linux 文件系统的位置吗?

答案1

(我没有 WSL 2 可以尝试。)

WSL 支持导出和导入分布,如下所示:

wsl --export Debian C:\temp\Debian.tar
wsl --import MovedDebian C:\WSL\Debian C:\temp\Debian.tar --version 2

请注意我如何指定一个名为InstallLocation( C:\WSL\Debian) 的参数。请记住,在我的示例中,“Debian”发行版仍然存在,因此我在导入时选择了不同的名称。您可以使用该wsl实用程序来管理您的 WSL 环境。

答案2

如果您想从 C: 驱动器 D: 移动 WSL2 Linux 发行版(Ubuntu),请按照以下步骤操作。

导出 Ubuntu

  • mkdir D:\backup
  • wsl——导出 Ubuntu D:\backup\ubuntu.tar

取消注册相同的发行版以将其从 C: 驱动器中删除:

  • wsl——取消注册Ubuntu

导入 Ubuntu

  • mkdir D:\wsl
  • wsl——导入 Ubuntu D:\wsl\ D:\backup\ubuntu.tar

默认情况下,Ubuntu 将使用 root 作为默认用户,切换回之前的用户

转到 Ubuntu App Folder 运行命令来设置默认用户

  • cd%用户配置文件%\ AppData \ Local \ Microsoft \ WindowsApps
  • ubuntu config --default-user <用户名>

答案3

这是以 ubuntu18.04 为例。
上面有几个地方不够详细。希望这能有所帮助。

wsl --list --verbose
mkdir d:\backuplinux
wsl --export Ubuntu-18.04 d:\backuplinux\ubuntu.tar
wsl --unregister Ubuntu-18.04
mkdir d:\wsl
wsl --import Ubuntu-18.04 d:\wsl\ d:\backuplinux\ubuntu.tar
cd %userprofile%\AppData\Local\Microsoft\WindowsApps            **(this is not needed if in path)**
ubuntu1804.exe config --default-user yourloginname

答案4

WSL2 的最新版本包含一个新wsl --import --vhd选项,可以将现有 VHD(WSL2 发行版的虚拟 SDD 驱动器)直接复制到另一个位置。请注意,这仅适用于 WSL2 发行版,不适用于 WSL1。

还要注意的是,选择一个新的,复制的发行版有不同的名称。例如,如果您的发行版是“Ubuntu”,新名称可以是“my_Ubuntu”(我将其称为“ntd_Ubuntu”)。

退出 WSL(并且,如果使用它,请关闭 Docker Desktop),然后从 PowerShell(常规的非管理员终端)退出:

wsl --shutdown

# Find the location of the existing distribution:

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | 
    ForEach-Object { 
        (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath 
    }

# Copy the <BasePath> of the distribution you want to copy 
# to the clipboard so that you can paste it into the --import command
# below.

# Create a directory on the other drive for the distro
mkdir d:\WSL\distros\<new_distro_name>

wsl --import <new_distro_name> d:\WSL\distros\<new_distro_name> <BasePath>\ext4.vhdx --vhd

<new_distro_name>WSL 将在 上的目录中创建一个名为 的新发行版D:

你可以通过以下方式启动此分发:

wsl ~ -d <new_distro_name>

由于它是一个新的发行版,因此需要告知 WSL 默认用户名。与此同时,它将以 root 用户身份启动。使用这个答案创建一个/etc/wsl.conf文件来指定默认用户。

当你认为新发行版与旧发行版的工作方式相同时,你可以使用以下命令删除旧发行版:

# Warning: This is a destructive and unrecoverable operation
# Please ensure the correct distribution name
wsl --unregister <old_distro_name>

您可以使用以下命令将新分布设置为默认分布:

wsl --set-default <new_distro_name>

相关内容