引言
- 在Ubuntu子系统里安装了ollama, 缓存了挺多模型的, 导致C盘空间不足, 于是就想着将整个Ubuntu子系统迁移至D盘
- 本教程同样适用于对子系统进行备份迁移的操作, 原理差不多
查看已安装的WSL发行版
以管理员身份打开 PowerShell 或 命令提示符,输入:
wsl -l -v
输出示例:
PS C:\Users\daowuya> wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Running 2
导出WSL系统到备份文件
执行以下命令导出系统(替换 <发行版名称> 为实际名称):
wsl --export <发行版名称> "D:\wsl-ubuntu.tar"
输出示例:
PS C:\Users\daowuya> wsl --export Ubuntu-24.04 "D:\wsl-ubuntu.tar"
正在导出,这可能需要几分钟时间。 (1014 MB): ./tmp/php-cgi-80.sock: pax format cannot archive sockets: ./tmp/mysql.sock: pax format cannot archi (27247 MB): ./home/conquerorfy/.docker/run/docker-cli-api.sock: pax format cannot archive sockets
操作成功完成。
注销原有的WSL系统
导出完成后,卸载原系统:
wsl --unregister <发行版名称>
输出示例:
PS C:\Users\daowuya> wsl --unregister Ubuntu-24.04
正在注销。
操作成功完成。
在D盘导入WSL系统
创建存放新系统的目录(如 D:\wsl-ubuntu),然后执行:
wsl --import <新名称> "D:\wsl-ubuntu" "D:\wsl-ubuntu.tar" --version 2
输出示例:
PS C:\Users\daowuya> wsl --import Ubuntu-24.04 "D:\wsl-ubuntu" "D:\wsl-ubuntu.tar" --version 2
操作成功完成。
清理临时文件(可选)
确认迁移成功后,可删除D盘的 wsl-ubuntu.tar 文件
验证迁移结果
检查新系统状态, 输入:
wsl -l -v
启动Ubuntu,确认用户文件和配置无误。
迁移后导致的问题解决
- 有时候迁移后可能有些服务不会自启了, 比如说宝塔面板之类的, 这有可能是Systemd 支持问题导致的。
- WSL 默认不支持 systemd(Linux 的服务管理系统),而许多服务依赖于 systemd 来自动启动。迁移后,如果服务依赖于 systemd,它们将无法自动启动。
解决方式如下:
- 打开 PowerShell 并运行以下命令,确保 WSL 版本为 2:
wsl --set-version <发行版名称> 2
- 在 WSL 中编辑 /etc/wsl.conf 文件,添加以下内容:
[boot]
systemd=true
- 重启 WSL
wsl --shutdown
wsl