随着Windows Subsystem for Linux (WSL) 的普及,越来越多的开发者选择在Windows系统上运行Linux环境。然而,WSL默认安装在C盘,可能会占用大量系统盘空间。今天,我就来分享一下如何将WSL从C盘迁移到其他盘区,释放系统盘空间,同时保持WSL环境的完整性和功能性。在这个过程中,我遇到了一些问题,也找到了解决办法,希望我的经验能帮助到你。

背景

昨天晚上,打开笔记本突然发现C盘满了(还剩7个G,有点慌了),经过一番排查,发现是WSL安装的文件默认都在C盘。为了释放C盘空间,我决定将WSL迁移到其他盘区。我参考了这篇文章,按照步骤进行操作,但在迁移过程中遇到了一些问题。

准备工作

在进行WSL迁移之前,我确保完成了以下准备工作:

  1. 确定WSL版本:我通过运行 wsl --list --verbose 查看了WSL版本和已安装的Linux发行版,确认我使用的是WSL 2。
  2. 备份重要数据:迁移过程中可能会涉及到数据迁移,所以我提前备份了重要数据。
  3. 关闭所有WSL会话:在迁移前,我确保关闭了所有正在运行的WSL会话,以避免数据损坏。

迁移步骤

1. 导出WSL分发版

首先,我需要将当前的WSL分发版导出到一个压缩文件中。我打开PowerShell,运行了以下命令:

wsl --export <DistroName> <FilePath>.tar

其中,<DistroName> 是我的Linux发行版名称(我的是Ubuntu-20.04),<FilePath>.tar 是我希望保存导出文件的路径和文件名(E:\wsl-ubuntu2204.tar)。

2. 注销原有的WSL分发版

导出完成后,我需要注销原有的WSL分发版,以释放C盘空间。我运行了以下命令:

wsl --unregister <DistroName>

替换 <DistroName> 为我的Linux发行版名称。

3. 导入WSL分发版到新位置

接下来,我尝试将导出的WSL分发版导入到我希望的新位置。我运行了以下命令:

wsl --import <NewDistroName> <InstallLocation> <FilePath>.tar --version 2
  • <NewDistroName>:新的分发版名称(我最初选择了一个新名称)。
  • <InstallLocation>:新的安装位置(E:\wsl-data)。
  • <FilePath>.tar:之前导出的压缩文件路径。
  • --version 2:指定使用WSL 2版本。

4. 设置默认用户和启动WSL

导入完成后,我遇到了问题:默认情况下,WSL可能会以root用户启动,我需要设置默认用户为我之前使用的用户。按照参考文章的指导,我需要运行以下命令:

<DistroName>.exe config --default-user <username>

然而,我发现导入时给了一个新的名字后,无法找到对应的exe文件来执行修改默认用户。这让我感到困惑和沮丧。

解决办法

可能出在导入时使用了新的名称。我决定重新进行导入操作,但这次我使用了原来的名字:

wsl --import <OriginalDistroName> <InstallLocation> <FilePath>.tar --version 2

这样,我就可以使用对应的exe文件来设置默认用户了。例如,如果我的Linux发行版是Ubuntu-20.04,并且我的用户名是john,我运行了以下命令:

ubuntu2204.exe config --default-user john

然后,我通过运行 wslwsl -d <DistroName> 来启动我的WSL分发版,一切正常!

最后

虽然不知道新的名字为什么会导致这个问题,但我不打算深究,毕竟已经顺利完成了迁移。希望这篇文章能帮助你顺利完成WSL的迁移工作,让你的开发环境更加顺畅!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐