随着Windows Subsystem for Linux (WSL) 的普及,越来越多的开发者选择在Windows系统上运行Linux环境。然而,WSL默认安装在C盘,可能会占用大量系统盘空间。今天,我就来分享一下如何将WSL从C盘迁移到其他盘区,释放系统盘空间,同时保持WSL环境的完整性和功能性。在这个过程中,我遇到了一些问题,也找到了解决办法,希望我的经验能帮助到你。
背景
昨天晚上,打开笔记本突然发现C盘满了(还剩7个G,有点慌了),经过一番排查,发现是WSL安装的文件默认都在C盘。为了释放C盘空间,我决定将WSL迁移到其他盘区。我参考了这篇文章,按照步骤进行操作,但在迁移过程中遇到了一些问题。
准备工作
在进行WSL迁移之前,我确保完成了以下准备工作:
- 确定WSL版本:我通过运行
wsl --list --verbose
查看了WSL版本和已安装的Linux发行版,确认我使用的是WSL 2。 - 备份重要数据:迁移过程中可能会涉及到数据迁移,所以我提前备份了重要数据。
- 关闭所有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
然后,我通过运行 wsl
或 wsl -d <DistroName>
来启动我的WSL分发版,一切正常!
最后
虽然不知道新的名字为什么会导致这个问题,但我不打算深究,毕竟已经顺利完成了迁移。希望这篇文章能帮助你顺利完成WSL的迁移工作,让你的开发环境更加顺畅!