如何将 WSL2 迁移至其他盘

在 Windows 中,WSL2(Windows Subsystem for Linux)子系统默认安装在 C 盘,本文介绍如何将其移动至其他盘符,也可以在不同电脑间迁移。

以下内容总结自 how to move the vhdx of wsl2 to other disk · Issue #412 · MicrosoftDocs/WSL (github.com)

首先打开任何一个终端,CMD 或者 PowerShell 都可以。建议在你希望迁移后 WSL 所处的目录下打开,如我希望将 WSL 迁移到 D:\UbuntuWSL,就在这个目录下打开,或者打开后使用 cd D:\UbuntuWSL 命令。

然后,输入 wsl --list 并运行,系统会为你输出当前的子系统列表,如:

text
1
2
3
4
5
适用于 Linux 的 Windows 子系统分发版:
Ubuntu2 (默认)
docker-desktop
docker-desktop-data
Ubuntu

请记住你想迁移的子系统名。下面的命令将会占用很多系统资源。

然后,运行 wsl --export <子系统名> <导出文件名. tar>,其中 “子系统名” 就是你刚刚记住的子系统名,“导出文件名”是你希望导出文件的命名,可以使用完整路径代替(如 D:\UbuntuWSL\ubuntu.tar)。这个命令可以将已安装的特定子系统打包成 TAR 压缩文件。

找到此 TAR 文件,将其移动到你想迁移到的位置,并将终端的工作目录移动至那里。当然如果你一开始就设定好目录那现在就不用了,而且其实不迁移也没什么问题

运行 wsl --import <迁移后子系统名称> <迁移后 WSL 工作目录> <tar 文件路径>,这个命令可以从 tar 文件导入子系统。迁移后的子系统名称不能与原来已有的重复;工作目录可以任选,不一定要和 tar 文件在一起。

再次运行 wsl --list,如果你迁移后的子系统本应成为默认而实际上并没有,使用 wsl --set-default <子系统名> 命令来设为默认。

现在,你可以使用 wsl --unregister 子系统名 来完全删除原子系统,不过我建议先使用迁移后的系统一段时间,来确保没有问题。

已知问题:

  • 迁移后默认账户变为 root。

测试正常工作:

  • 仍可将 WSLg GUI 应用程序集成到开始菜单。
  • Windows 资源管理器仍可浏览 Linux 文件系统的文件。
许可证:CC BY-SA 4.0
最后更新于 Jun 12, 2023 19:53 +0800