WSL迁移到其他盘
详细讲解如何将WSL从C盘迁移到其他磁盘,释放系统盘空间
为什么需要迁移WSL
Windows Subsystem for Linux (WSL) 默认安装在C盘系统盘。随着使用时间的增长,安装的软件、依赖包和项目数据会越来越多,导致系统盘空间被大量占用,影响系统性能。将WSL迁移到其他磁盘是释放C盘空间的有效方法,尤其适合以下场景:
- C盘空间不足,需要释放存储空间
- 希望将WSL迁移到更快的SSD磁盘提升性能
- 需要在不同电脑间迁移WSL环境
- 系统重装前备份WSL环境
迁移前的准备工作
1. 查看WSL分发版名称
首先需要确认你安装的Linux系统名称:
- 右键点击”开始”菜单,选择”终端管理员”或”命令提示符(管理员)”
- 输入命令:
1
wsl -l -v
- 你会看到类似
Ubuntu或Ubuntu-22.04的名称,记下这个名称(下文以Ubuntu为例)
2. 确保WSL已关闭
在进行迁移操作前,请确保WSL没有正在运行:
1
wsl --shutdown
迁移步骤详解
第一步:导出WSL分发版(创建备份)
将C盘的WSL系统打包成一个备份文件:
1
wsl --export Ubuntu E:\wsl_backup.tar
注意事项:
- 根据WSL中文件的大小,这一步可能需要几分钟到几十分钟
- 备份文件路径可以根据需要修改(如
D:\wsl_backup.tar) - 导出过程中可能会显示关于socket文件无法归档的警告信息,这是正常现象,不影响整体备份
- 建议将备份文件保存在有足够空间的磁盘上
第二步:注销原C盘分发版
导出成功后,可以安全地删除C盘中的原WSL安装:
1
wsl --unregister Ubuntu
重要提醒:
- 请确保第一步的导出操作已成功完成,否则此操作会永久删除你的WSL环境
- 此操作会释放C盘中被WSL占用的空间
第三步:重新导入到新位置
将WSL安装到目标磁盘的新路径:
- 在目标磁盘(如E盘)创建一个文件夹,例如
E:\WSL - 执行导入命令:
1
wsl --import Ubuntu E:\WSL E:\wsl_backup.tar
命令格式:
wsl --import <分发版名称> <安装位置路径> <备份文件路径>参数说明:
<分发版名称>:你的WSL分发版名称(如Ubuntu)<安装位置路径>:WSL要安装的新路径(如E:\WSL)<备份文件路径>:第一步创建的备份文件路径(如E:\wsl_backup.tar)
第四步:设置默认用户(重要)
重新导入后,WSL默认会以root用户登录。如果需要恢复原来的普通用户,有以下几种方法:
方法一:使用WSL命令(推荐)
1
Ubuntu config --default-user yourname
将yourname替换为你的用户名。
注意: 某些WSL版本可能需要使用分发版的全名,如Ubuntu-22.04 config --default-user yourname
方法二:测试用户登录
如果上述命令无效,可以测试指定用户登录:
1
wsl -d Ubuntu -u yourname
方法三:通过注册表修改(永久生效)
如果上述方法都不起作用,可以通过修改注册表来永久设置默认用户:
- 按下
Win + R,输入regedit并回车,打开注册表编辑器 - 在上方地址栏粘贴以下路径并回车:
1
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
- 在该路径下会有几个类似
{550e8400-e29b-...}的长字符串子文件夹(每个对应一个WSL分发版) - 依次点击这些文件夹,查看右侧的
DistributionName属性,找到值为Ubuntu或Ubuntu-22.04的那个 - 找到正确的文件夹后,在右侧找到名为
DefaultUid的数值 - 双击
DefaultUid,将”基数”选为”十进制” - 将数值数据改为
1000(Linux中第一个普通用户的UID通常是1000) - 点击”确定”,关闭注册表编辑器
如何确认正确的UID: 如果不确定之前的用户UID,可以先以root身份进入WSL,然后输入:
1
id -u 你的用户名
得到的数字就是你要填入注册表DefaultUid的值。
安全提示: 修改注册表前建议先备份相关键值,以防操作失误。
迁移后的清理工作
确认迁移成功且所有文件都在新位置正常工作后,可以删除临时的备份文件以节省空间:
1
del E:\wsl_backup.tar
或者使用资源管理器手动删除备份文件。
常见问题与解决方案
Q1: 导出过程中出现socket文件警告怎么办?
A: 这是正常现象,WSL在导出时会跳过一些socket文件(如Docker socket、VS Code远程连接socket等),不影响系统功能的完整性。
Q2: 迁移后原来的配置文件还在吗?
A: 是的,导出/导入操作会保留所有用户文件、配置和已安装的软件。你的home目录、环境变量、软件包等都会完整迁移。
Q3: 可以同时迁移多个WSL分发版吗?
A: 可以,但需要为每个分发版重复上述步骤,使用不同的备份文件名和安装路径。建议一次迁移一个,确保每个都成功后再处理下一个。
Q4: 迁移后性能有影响吗?
A: 性能影响很小。如果目标磁盘是SSD,性能几乎无差别;如果是HDD,可能会有轻微的性能下降,但通常可以接受。
Q5: 迁移失败怎么办?
A: 如果迁移失败,可以尝试以下步骤:
- 确保WSL已完全关闭:
wsl --shutdown - 检查磁盘空间是否充足
- 以管理员身份运行命令提示符
- 如果问题依旧,可以尝试重启电脑后重试
总结
通过WSL自带的导出/导入功能进行迁移是最稳妥的方法,具有以下优点:
- 安全可靠:不需要第三方工具,使用官方功能
- 数据完整:不会丢失任何用户数据、配置和软件
- 操作简单:只需几个命令即可完成
- 适用广泛:适用于各种迁移场景
整个过程主要分为四个步骤:查看分发版、导出备份、注销原版、重新导入。迁移完成后记得设置默认用户,并根据需要清理备份文件。
这种方法不仅适用于释放C盘空间,也适用于将WSL迁移到更快的SSD磁盘,或者在不同电脑间迁移WSL环境。建议在操作前仔细阅读本文,确保理解每个步骤的注意事项。