记录安装wsl2踩的一个坑

0 阅读3分钟

今天打开电脑,预估之内的启动失败。

原因我大概知道:昨晚更新完系统没重启,今天开机时系统才把更新应用上——而这次更新,连带着我之前装 WSL 留下的"隐患"一起爆了。


先说背景

我用的是 Windows 11 家庭版

家庭版有个问题:WSL 的虚拟化功能支持不完整,一旦你开启了「虚拟机平台」(Virtual Machine Platform)这个 Windows 功能,重启之后系统大概率直接挂掉。

之前我也踩过这个坑,但每次都靠系统还原解决。这次没那么幸运—— 昨天更新系统、安装 WSL 之后,备份点已经是"装完 WSL 之后"的状态了。还原回去,还是会自动更新,还是会挂掉的。

我陷入了一个死局。


能试的都试了,全没用

既然还原没用,就只能找其他办法,实在不想重置系统,重置之后,我所有的安装软件都没有了。 现在能试的只有,cmd的命令行修复,修复不了就只能重置系统了。 开始让豆包给我命令进行还原。

第一波:DISM 禁用功能

dism /online /disable-feature /featurename:VirtualMachinePlatform /norestart
dism /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart

提示:/disable-feature 选项未知

第二波:WMIC 命令

wmic /namespace:\\root\cimv2 path win32_optionalfeature where "name='VirtualMachinePlatform'" call disable

提示:类方法无效

第三波:清理映像

dism /online /cleanup-image /startcomponentcleanup
dism /online /cleanup-image /restorehealth

也是执行失败

第四波:禁用服务

sc config vmcompute start= disabled
sc config LxssManager start= disabled

不支持。

wsl --unregister /all

wsl命令也没有,我就默认是这些命令都没有加载。

第五波:

dism /Image:C:\ /disable-feature /featurename:VirtualMachinePlatform

提示无法访问映像。

第六波:重命名系统文件,屏蔽驱动

ren C:\Windows\System32\wsl.exe wsl_.exe
ren C:\Windows\System32\vmcompute.exe vmcompute_.exe
ren C:\Windows\System32\lxsso.dll lxsso_.bak

执行了,重启,还是不行。

第七波:删除 WSL 相关包

rd /s /q "C:\Program Files\WindowsApps\CanonicalGroupLimited*"
rd /s /q "C:\Users\Default\AppData\Local\Packages\CanonicalGroupLimited*"
rd /s /q "C:\ProgramData\Microsoft\Windows\WindowsApps\CanonicalGroupLimited*"
rd /s /q "C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited*"

提示路径不存在。


绝处逢生:发现自己一直在"假的 C 盘"里操作

就在准备认命重装系统的时候,我注意到了一个细节。

我打算进入C:\Users\你的用户名\AppData\Local\Packages\ 去看文件是否存在,发现进不去路径。

最后发现,终端显示的路径前缀是——X:\ 不是 C:\,是 X:\。这原来不是我的C盘,难怪找不到文件。

Windows 恢复环境(WinRE)运行时,会把一个临时系统加载到内存里,挂载为 X 盘。 这个 X 盘相当于一个"虚拟的 Windows",X:\Windows 就对应正常系统里的 C:\Windows,但此时dism命令的修改只会在X盘。 也就是说—— 我之前输入的所有 dism /online /... 命令,操作的都是这个内存里的临时系统,根本没有碰到我真实的 C 盘。

难怪全部没用。


解决

先切换到C盘,再执行以下命令

dism /online /disable-feature /featurename:VirtualMachinePlatform /norestart
dism /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart

执行完成,重启,系统终于正常启动了。


总结一下,避免你踩同样的坑

① Windows 11 家庭版不建议开启 WSL 的虚拟机平台功能 家庭版对 Hyper-V 和虚拟化支持不完整,开启 Virtual Machine Platform 之后极易导致系统无法启动。

② 在恢复环境里操作时,注意你在哪个盘 WinRE 环境下当前驱动器是 X:\,不是 C:\。操作真实系统文件时,路径要切到 C:\


折腾了一大圈,终于救回来了。 如果你也遇到类似的情况,希望这篇记录能帮到你。