今天打开电脑,预估之内的启动失败。
原因我大概知道:昨晚更新完系统没重启,今天开机时系统才把更新应用上——而这次更新,连带着我之前装 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:\。
折腾了一大圈,终于救回来了。 如果你也遇到类似的情况,希望这篇记录能帮到你。