必须用官方导出→注销→导入三步法将WSL2系统安全迁至D盘:先查发行版名并确保为WSL2,再关机、导出为tar包,接着注销释放C盘空间,最后导入到D盘指定路径并验证启动成功。

当C盘空间被WSL2的ext4.vhdx文件悄悄吃掉几十GB,而你又不敢直接删、不敢随便复制时,必须用官方导出→注销→导入三步法把整个Linux系统安全搬到D盘,否则可能丢失所有配置和数据。
确认当前WSL状态和目标发行版
以管理员身份打开PowerShell,运行:
wsl -l -v
你会看到类似输出:
NAME STATE VERSION
* Ubuntu Running 2
记下NAME列的名称(如Ubuntu),这是后续所有命令的关键标识。【必须确保VERSION为2,若显示1需先执行 wsl --set-version Ubuntu 2】
同时确认STATE不是“Stopped”或空白——如果是,先在任意终端中输入wsl启动它,再重新运行-l -v查看。
彻底关闭WSL并创建D盘目标目录
执行强制关机命令:
wsl --shutdown
这会终止所有后台WSL进程,包括VS Code远程连接、Docker Desktop WSL后端等。不执行这步直接导出会失败或生成损坏备份。
在D盘新建一个清晰路径用于存放迁移文件,例如:
mkdir D:\WSL_Migration
注意不要用中文路径、空格或特殊符号,D:\WSL_Migration 是安全选择。
导出系统为tar包(关键备份)
执行导出命令:
wsl --export Ubuntu D:\WSL_Migration\ubuntu_export.tar
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
这个过程是全量快照:把正在运行的整个根文件系统(含/home、/etc、已安装软件、SSH密钥、zsh配置)打包成单个tar文件。它不依赖原vhdx位置,也不受Windows文件锁影响。
导出时间取决于系统大小——10GB以下通常1–3分钟,30GB以上可能需要15分钟以上。进度条不会动,但磁盘活动灯常亮即表示仍在进行,【切勿中断PowerShell窗口或关机】。
注销原发行版并释放C盘空间
导出成功后,执行注销命令:
wsl --unregister Ubuntu
这一步会立即删除C盘中%LOCALAPPDATA%\Packages\下的整个发行版目录,包括那个膨胀的ext4.vhdx文件。C盘空间将实时释放。
⚠️警告:该操作不可逆,且不会二次确认。请务必先验证D:\WSL_Migration\ubuntu_export.tar文件存在且大小合理(不能为0字节或远小于预期)。
从tar包重新导入到D盘指定路径
第一步:在D盘创建最终运行目录
mkdir D:\WSL_Migration\Ubuntu_Disk
第二步:执行导入命令(指定WSL2版本):
wsl --import Ubuntu D:\WSL_Migration\Ubuntu_Disk D:\WSL_Migration\ubuntu_export.tar --version 2
导入完成后,WSL会自动生成新的ext4.vhdx文件,位置就在D:\WSL_Migration\Ubuntu_Disk\ext4.vhdx。此后所有读写都发生在D盘,C盘再无负担。
第三步:验证是否生效
wsl -d Ubuntu -e uname -r
如果返回Linux内核版本号(如5.15.133.1-microsoft-standard-WSL2),说明导入成功且可正常启动。

















