wsl迁移教程
在使用wsl2的过程中,由于开发的相关项目越来越多,而wsl默认安装在C盘下,导致空间占用太大,思考能否将wsl子系统迁移到其它盘符下.经过一番尝试,完成了迁移,在此总结一下,供有需要的开发者参考.
一、迁移前的准备工作
停止 WSL2 运行
- 在 Windows PowerShell 或 CMD 中执行以下命令,确保 WSL 实例已关闭:
1
wsl --shutdown
- 验证状态(显示为 Stopped):
1
wsl -l -v
- 此处可以记录下自己的
wsl -l -v
输出的 发行版名称name
,以便后续导出使用。
- 在 Windows PowerShell 或 CMD 中执行以下命令,确保 WSL 实例已关闭:
创建目标目录
- 在 D 盘新建一个文件夹用于存放迁移后的 WSL 文件(如
D:\WSL_Ubuntu
)。
- 在 D 盘新建一个文件夹用于存放迁移后的 WSL 文件(如
二、导出 WSL2 系统镜像
- 导出现有系统为压缩包
- 替换
<发行版名称>
为你的 WSL 名称(如Ubuntu-22.04
):1
wsl --export <发行版名称> D:\WSL_Ubuntu\ubuntu.tar
- 此过程需等待较长时间,文件大小取决于原系统数据量 。
- 替换
三、注销原有 WSL 实例
- 卸载原系统
1
wsl --unregister <发行版名称>
- 执行后再次检查是否注销成功:
1
wsl -l -v
- 执行后再次检查是否注销成功:
四、将镜像导入到 D 盘
- 重新导入系统至目标目录
1
wsl --import <新发行版名称> D:\WSL_Ubuntu\ D:\WSL_Ubuntu\ubuntu.tar --version 2
- 参数说明:
<新发行版名称>
:可保留原名(如Ubuntu-22.04
)或自定义。--version 2
:强制使用 WSL2 内核,避免兼容性问题。
- 参数说明:
五、恢复默认用户
解决 root 用户问题
- 导入后首次启动会以 root 身份登录,需通过以下命令恢复原用户:
1
<发行版短名>.exe config --default-user <原用户名>
- 发行版短名规则:
- Ubuntu-22.04 →
ubuntu2204.exe
- Ubuntu-20.04 →
ubuntu2004.exe
- 其他发行版需根据名称调整(如
Debian
→debian.exe
)。
- Ubuntu-22.04 →
- 导入后首次启动会以 root 身份登录,需通过以下命令恢复原用户:
备用方案(修改配置文件)
- 若命令无效,手动编辑 WSL 配置文件:
1
\\wsl.localhost\<发行版名称>\etc\wsl.conf
- 添加以下内容(替换
<原用户名>
):1
2[user]
default = <原用户名> - 重启 WSL 生效:
1
wsl --shutdown && wsl
- 若命令无效,手动编辑 WSL 配置文件:
六、验证迁移结果
检查文件与用户
- 启动 WSL,确认:
- 用户名为原账户(非 root)。
- 原用户文件(如
/home/<用户名>
)完整存在。
- 启动 WSL,确认:
查看系统路径
- 在 Windows 资源管理器中访问
D:\WSL_Ubuntu
,确认生成ext4.vhdx
虚拟磁盘文件。
- 在 Windows 资源管理器中访问
七、释放 C 盘空间
- 确保系统迁移完成后,可以选择删除原 C 盘的 WSL 文件(位于
%LOCALAPPDATA%\Packages
)需手动删除 。
通过以上步骤,将 WSL2 完整迁移至 D 盘,完美解决 C 盘空间占用过大的问题。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.