解决WSL因盘符变更,系统找不到指定的路径

新加了一块硬盘(F), 将WSL存放的老盘(L)数据拷入新硬盘(F)

之后因盘符变更, 启动wsl时提示如下:

无法将磁盘“L:\WSL\Debian\ext4.vhdx”附加到 WSL2: 系统找不到指定的路径。
错误代码: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_PATH_NOT_FOUND

[已退出进程,代码为 4294967295 (0xffffffff)]

问题是去哪里修改? 虚拟机调用镜像的设置保存在哪里?

找了篇微软文档参考: 如何查找 Linux 发行版的 .vhdx 文件和磁盘路径 https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-locate-the-vhdx-file-and-disk-path-for-your-linux-distribution

.vhdx 文件和磁盘路径, 存储在注册表的以下地址中:

HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss

Lxss 下 类似 { guid } 的条目就是子系统条目, 有几个子系统会有几条。(我的有3个子系统 )

条目下数值项 “BasePath”,就是文件地址目录,直接修改盘符路径,重启wsl就可以了!

其他问题

如果修改注册表,wsl启动后,wsl提示:

<3>WSL (xxx) ERROR: UtilTranslatePathList:2852: Failed to translate” (之后跟着一个windows文件路径)

如我的提示:

<3>WSL (461) ERROR: UtilTranslatePathList:2852: Failed to translate L:\PHP\php-8.1.23-nts-Win32-vs16-x64

说明后面这个路径,是被设置在系统环境变量中,还是有由于盘符变动造成的问题。把系统环境变量的路径值修改了,就好了!

【end】