随着我们日常使用 WSL ,已安装的发行版的虚拟磁盘所占用的空间会日益膨胀。而默认情况下,Windows 系统会将其放置在 C 盘中,这就可能导致 C 盘空间不足的问题。
此外,在我们日常使用 WSL 的过程中,可能需要对已经完成配置的发行版备份,以便向他人分享或在其他设备上快速部署,省去重新配置的时间与精力。
本篇文章将给出上述两个场景的通用应对措施,分为两个部分:
- 导出发行版;
- 导入发行版。
导出发行版
1. 检查发行版状态
右键开始菜单,打开 终端 ,使用如下命令查看已安装发行版的运行状态,该命令会列出所有已安装发行版的名称、运行状态以及 WSL 版本。
wsl -l -v
检查要导出的发行版的运行状态,当且仅当其运行状态为 Stopped
时才能将其导出。
若要导出的发行版的运行状态为 Running
,请先运行如下命令将其关闭。
wsl --terminate <发行版名称>
其中 <发行版名称>
为此前检查发行版运行状态时列出的发行版名称,而非其在开始菜单内的应用名称。运行结束后请重新检查发行版运行状态。
2. 导出压缩包
确保要导出的发行版的运行状态为 Stopped
后,使用如下命令将发行版的虚拟磁盘以压缩包形式导出到指定位置。
wsl --export <发行版名称> <压缩包存放路径>
导出消耗的时间依据发行版虚拟磁盘的大小而定,一般在几分钟内即可完成导出。上述命令执行完毕后,你可以在你指定的存放压缩包的位置找到导出的压缩包,其命名应为 <发行版名称>.tar
。(请确保文件资源管理器已开启显示文件扩展名的功能。)随后,你可以将其拷贝、分发,或着存储到你备份资料的移动硬盘或云盘中。
导入发行版
1. 注销原有发行版
若设备中已安装了相同的发行版,在导入发行版前需将其删除。
注意:此部分仅在迁移发行版时需要实施,如果你并没有在迁移发行版,请直接跳过此部分。
使用如下命令注销发行版。
wsl --unregister <发行版名称>
上述命令执行完毕后,请再次检查已安装发行版状态,确保成功注销原有发行版。
2. 导入压缩包
使用如下命令导入压缩包。
wsl --import <发行版名称> <发行版虚拟磁盘存放路径> <压缩包存放路径> --version 2
其中 --version 2
用于指定 WSL 版本为 WSL2 ,发行版名称可以自定义,但不推荐使用自定义程度很高的名称,推荐保持原有名称。此外,十分建议直接将发行版的虚拟磁盘存放在非 C 盘的其他磁盘中。导入消耗的时间依据发行版虚拟磁盘的大小而定,一般在几分钟内即可完成导入。
3. 设置默认用户
在导入发行版后,该发行版默认以 root 用户登录。
使用如下命令设置默认用户。
<发行版可执行程序名称>.exe config --default-user <用户名>
其中,用户名为导出前登录发行版所用的用户的用户名,一般为安装时创建的用户的用户名;发行版可执行程序名称依据导入发行版时的发行版名称而定,一般为发行版名称去除 -
与 .
的部分 ,下面仅给出部分示例。
若导入的发行版为安同 OS ,导入时的发行版名称为 AOSCOS ,则此处发行版可执行程序名称为 AOSCOS ,此时上述命令可写为:
AOSCOS.exe config --default-user <用户名>
若导入的发行版为 Ubuntu 22.04 ,导入时的发行版名称为 Ubuntu-22.04 ,则此处发行版可执行程序名称为 Ubuntu2204 ,此时上述命令可写为:
Ubuntu2204.exe config --default-user <用户名>
设置完成后,即可正常使用该发行版。