WSL 发行版安装后迁移到其他盘(完整指南)
为什么需要迁移
WSL 默认将发行版安装在 C 盘的用户目录下(例如 C:\Users\用户名\AppData\Local\Packages\...),每个发行版对应一个 ext4.vhdx 虚拟磁盘文件。随着你在 WSL 中安装开发工具、下载依赖、构建项目,这个文件很容易膨胀到几十 GB。如果你的 C 盘是 SSD 且空间有限,迁移到 D 盘或其他大容量磁盘是性价比最高的解决方案。
重要提示:不要在 Windows 设置中修改”应用的默认安装位置”来试图迁移 WSL,这会导致不可预知的问题。正确的方法是使用 WSL 内置的
--export/--import命令。
一、准备工作
1.1 检查当前 WSL 状态
以管理员身份打开 PowerShell 或 Windows 终端,先查看已安装的发行版及其状态:
1 | wsl -l -v |
输出示例:
1 | NAME STATE VERSION |
确认你要迁移的发行版名称(本文以 Ubuntu 为例)。如果发行版正在运行,先关闭它:
1 | wsl --shutdown |
1.2 检查目标磁盘空间
确保目标盘(如 D 盘)有足够空间容纳导出的 tar 文件和导入后的虚拟磁盘。一般建议预留 发行版已用空间 × 1.5 倍 的可用空间。
1.3 记录当前默认用户(重要)
1 | wsl -d Ubuntu |
记下你的用户名,迁移后需要手动恢复默认登录用户。
二、迁移流程(四步完成)
2.1 导出发行版为 tar 文件
1 | # 语法:wsl --export <发行版名称> <目标路径> |
如果
D:\wsl-backup\目录不存在,先创建它:mkdir D:\wsl-backup
导出时间取决于发行版的大小,几 GB 的 Ubuntu 通常在 1-3 分钟内完成。导出完成后你可以看到生成的 .tar 文件大小与 WSL 实际占用空间基本一致。
官方文档参考:wsl –export — 将指定发行版导出到 tar 文件。
2.2 注销旧的发行版
1 | # 先确保 WSL 已完全关闭 |
执行 --unregister 后,原有的 C 盘 WSL 数据会被彻底删除。如果担心误操作,可以在执行此步骤前给 %LOCALAPPDATA%\Packages\ 下对应的 WSL 包目录做个手动备份。
验证注销成功:
1 | wsl -l -v |
官方文档参考:wsl –unregister — 注销(删除)指定发行版并回收磁盘空间。
2.3 导入发行版到目标磁盘
1 | # 在目标盘创建存储目录(可选,但推荐) |
参数说明:
| 参数 | 说明 |
|---|---|
Ubuntu |
发行版名称,可以与原来一致 |
D:\WSL\Ubuntu |
新发行版 vhdx 文件的存放目录 |
D:\wsl-backup\Ubuntu.tar |
之前导出的 tar 文件路径 |
--version 2 |
指定 WSL 2(推荐) |
导入完成后,验证是否成功:
1 | wsl -l -v |
官方文档参考:wsl –import — 从 tar 文件导入指定发行版。
2.4 恢复默认登录用户
通过 --import 导入的发行版默认以 root 用户登录,需要手动恢复你之前记录的用户名。推荐在 WSL 内部编辑 /etc/wsl.conf 文件来设置(config --default-user 命令在某些版本上不稳定):
1 | # 编辑 /etc/wsl.conf 文件,添加 [user] 配置段 |
在文件中写入以下内容(以用户名为 jackal 为例):
1 | [boot] |
然后退出 WSL,执行 wsl --shutdown 重新进入,新配置即可生效。
如果不想开启 systemd,可以只保留
[user]段:
1
2 [user]
default=jackal
验证:
1 | wsl --shutdown |
官方文档参考:WSL 中的高级设置配置 - wsl.conf — 通过 [user] 段设置默认登录用户。
三、清理导出文件(可选)
确认新发行版正常工作后,可以删除导出的 tar 文件以回收临时空间:
1 | Remove-Item D:\wsl-backup\Ubuntu.tar |
四、迁移后的注意事项
4.1 默认发行版设置
如果你有多个 WSL 发行版,可能需要重新设置默认发行版:
1 | wsl --set-default Ubuntu |
4.2 Windows Terminal 配置
如果你使用 Windows Terminal,Ubuntu 配置文件通常会保持有效,无需额外修改。如果发现启动路径指向旧位置,在 Windows Terminal 设置中检查 Ubuntu 配置文件的”命令行”字段即可。
4.3 VSCode Remote-WSL
VSCode 的 Remote-WSL 扩展会自动检测注册的 WSL 发行版,迁移后无需重新配置,直接在 VSCode 中按 F1 → Remote-WSL: Reopen in WSL 即可正常工作。
4.4 迁移后 C 盘空间恢复
如果你执行 wsl --unregister 后 C 盘空间没有释放(极少情况),可以手动检查以下位置并删除残留文件:
1 | C:\Users\<你的用户名>\AppData\Local\Packages\ |
查找形如 CanonicalGroupLimited.Ubuntu... 的目录,确认其中没有你需要的数据后删除。
五、进阶:压缩现有 WSL 虚拟磁盘(不迁移版)
如果你的 C 盘暂时还能撑住,但 WSL 的 ext4.vhdx 文件已经膨胀得比实际数据大很多(WSL2 的常见问题),可以用磁盘压缩来瘦身:
1 | # 1. 在 WSL 内部用零填充空闲空间 |
这是一个独立操作,可以在迁移前做也可以在迁移后做。
六、常见问题
Q: 迁移后 WSL 无法启动?
检查目标路径的权限。确保存放 vhdx 文件的目录有正确的 NTFS 权限。通常放在普通用户目录或非系统盘的根目录下即可。
Q: 迁移后 wsl -l -v 显示版本为 1?
A: 导入时忘了加 --version 2 参数。可以之后用以下命令转换:
1 | wsl --set-version Ubuntu 2 |
Q: 迁移后中文显示乱码?
在 WSL 中安装中文字体包:
1 | sudo apt install fonts-noto-cjk |
Q: 可以同时迁移多个发行版吗?
可以。每个发行版单独执行一遍 export → unregister → import 流程即可,注意步骤间不要混淆名称。
Q: 迁移后 WSL 网络不通?
WSL2 使用虚拟交换机网络,迁移不会影响网络配置。如果遇到 DNS 问题,可以尝试修改 /etc/resolv.conf 或重置 WSL:
1 | wsl --shutdown |
七、参考资料
本文基于 WSL2 编写,理论上同样适用于 WSL1。如果你在迁移中遇到其他问题,欢迎在评论区交流。
- 标题: WSL 发行版安装后迁移到其他盘(完整指南)
- 作者: lczhuigz
- 创建于 : 2026-06-22 00:00:00
- 更新于 : 2026-06-22 23:32:12
- 链接: https://blog.lczhuigz.top/2026/06/22/wsl-migration-to-other-drive/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。