在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
并运行,系统会为你输出当前的子系统列表,如:
适用于 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文件系统的文件。