Original from https://blog.iany.me/2020/06/move-wsl-to-another-drive/.
I thought the article is absolutely wonderful, so I reprinted it (and translated it into Chinese). This article just saved my system disk, thank the original author Ian Yang~
下面这个例子会手把手带领你安装一个 Ubuntu 虚拟机,并将它的存储位置迁移到 D:\WSL\Ubuntu
.
第一步 安装 Ubuntu 虚拟机
这一步是可选的,因为您也许已经安装过虚拟机了。
在 Microsoft Store 中安装 Ubuntu。启动它以初始化默认实例。根据提示创建Ubuntu中使用的用户。
第二步 将虚拟机迁移到指定位置
使用如下命令导出实例并导入目标目录:
1 | cd D:\ |
注意:这些命令同时也会取消注册 Ubuntu 为默认虚拟机。
让我们来看看这些命令的含义吧:
wsl --export Ubuntu ubuntu.tar
: 将名为 Ubuntu 的 WSL 实例导出到当前目录下的 ubuntu.tar 文件中,所以你会得到文件D:\WSL\ubuntu.tar
.wsl --unregister Ubuntu
: 取消注册名为 Ubuntu 的 WSL 实例。wsl --import Ubuntu Ubuntu ubuntu.tar
: 第一个 Ubuntu 指的是新创建的实例名称,第二个 Ubuntu 是实例保存位置。最后一个参数传入由wsl --export
导出的文件路径。这将导入ubuntu.tar
文件并使用D:\WSL\Ubuntu
路径来保存该 WSL 的数据。
哦对了,此时您可以安全的卸载从 MS Store 里安装的虚拟机了。
第三步 重新用回初始用户
在导出导入这番折腾后,新实例默认使用root。
您也许想继续使用在第 1 步中注册的那个用户,这可以通过注册表进行配置。
在注册表中跳转到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
路径,找到 DistributionName
为“Ubuntu”的一项,将DefaultUid
这一项设置为 1000
(十进制) 或者 3e8
(十六进制)。
第四步 迁移到 WSL2
使用 wsl -l -v
检查新创建的实例是否使用 WSL2。使用 wsl --set-version Ubuntu 2
指令将名为 Ubuntu 的实例升级到版本 2。
第五步 试试 wsl
wsl -d Ubuntu
另一种解决方案是使用 ♯LxRunOffline