在 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
并运行,系统会为你输出当前的子系统列表,如:
|
|
请记住你想迁移的子系统名。下面的命令将会占用很多系统资源。
然后,运行 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 文件系统的文件。