WSL 发行版安装后迁移到其他盘(完整指南)

WSL 发行版安装后迁移到其他盘(完整指南)

lczhuigz Lv2

为什么需要迁移

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
2
3
  NAME      STATE           VERSION
* Ubuntu Stopped 2
Debian Running 2

确认你要迁移的发行版名称(本文以 Ubuntu 为例)。如果发行版正在运行,先关闭它:

1
wsl --shutdown

1.2 检查目标磁盘空间

确保目标盘(如 D 盘)有足够空间容纳导出的 tar 文件和导入后的虚拟磁盘。一般建议预留 发行版已用空间 × 1.5 倍 的可用空间。

1.3 记录当前默认用户(重要)

1
2
3
wsl -d Ubuntu
# 进入 WSL 后执行
whoami

记下你的用户名,迁移后需要手动恢复默认登录用户。


二、迁移流程(四步完成)

2.1 导出发行版为 tar 文件

1
2
# 语法:wsl --export <发行版名称> <目标路径>
wsl --export Ubuntu D:\wsl-backup\Ubuntu.tar

如果 D:\wsl-backup\ 目录不存在,先创建它:mkdir D:\wsl-backup

导出时间取决于发行版的大小,几 GB 的 Ubuntu 通常在 1-3 分钟内完成。导出完成后你可以看到生成的 .tar 文件大小与 WSL 实际占用空间基本一致。

官方文档参考wsl –export — 将指定发行版导出到 tar 文件。

2.2 注销旧的发行版

1
2
3
4
5
# 先确保 WSL 已完全关闭
wsl --shutdown

# 注销旧发行版(这会删除 C 盘上的 ext4.vhdx 文件)
wsl --unregister Ubuntu

执行 --unregister 后,原有的 C 盘 WSL 数据会被彻底删除。如果担心误操作,可以在执行此步骤前给 %LOCALAPPDATA%\Packages\ 下对应的 WSL 包目录做个手动备份。

验证注销成功:

1
2
wsl -l -v
# 输出应不再显示 Ubuntu

官方文档参考wsl –unregister — 注销(删除)指定发行版并回收磁盘空间。

2.3 导入发行版到目标磁盘

1
2
3
4
5
# 在目标盘创建存储目录(可选,但推荐)
mkdir D:\WSL\Ubuntu

# 导入:wsl --import <发行版名> <安装目录> <tar文件路径> --version <版本号>
wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\Ubuntu.tar --version 2

参数说明:

参数 说明
Ubuntu 发行版名称,可以与原来一致
D:\WSL\Ubuntu 新发行版 vhdx 文件的存放目录
D:\wsl-backup\Ubuntu.tar 之前导出的 tar 文件路径
--version 2 指定 WSL 2(推荐)

导入完成后,验证是否成功:

1
2
wsl -l -v
# 输出应显示 Ubuntu 在新的路径下正常运行

官方文档参考wsl –import — 从 tar 文件导入指定发行版。

2.4 恢复默认登录用户

通过 --import 导入的发行版默认以 root 用户登录,需要手动恢复你之前记录的用户名。推荐在 WSL 内部编辑 /etc/wsl.conf 文件来设置(config --default-user 命令在某些版本上不稳定):

1
2
# 编辑 /etc/wsl.conf 文件,添加 [user] 配置段
sudo vim /etc/wsl.conf

在文件中写入以下内容(以用户名为 jackal 为例):

1
2
3
4
5
[boot]
systemd=true

[user]
default=jackal

然后退出 WSL,执行 wsl --shutdown 重新进入,新配置即可生效。

如果不想开启 systemd,可以只保留 [user] 段:

1
2
[user]
default=jackal

验证:

1
2
3
wsl --shutdown
wsl -d Ubuntu
# 进入后执行 whoami,应显示你设置的用户名

官方文档参考WSL 中的高级设置配置 - wsl.conf — 通过 [user] 段设置默认登录用户。


三、清理导出文件(可选)

确认新发行版正常工作后,可以删除导出的 tar 文件以回收临时空间:

1
2
3
Remove-Item D:\wsl-backup\Ubuntu.tar
# 或者如果目录中只有这个文件,可直接删除目录
Remove-Item D:\wsl-backup -Recurse

四、迁移后的注意事项

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 中按 F1Remote-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
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 在 WSL 内部用零填充空闲空间
wsl -d Ubuntu
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY
exit

# 2. 在 PowerShell 中压缩 vhdx
wsl --shutdown
diskpart
# 在 diskpart 中执行:
select vdisk file="D:\WSL\Ubuntu\ext4.vhdx"
compact vdisk
detach vdisk
exit

这是一个独立操作,可以在迁移前做也可以在迁移后做。


六、常见问题

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
2
3
4
5
wsl --shutdown
wsl --terminate Ubuntu
# 重启 WSL 服务
net stop LxssManager
net start LxssManager

七、参考资料


本文基于 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 进行许可。
评论