记录安装wsl2踩的一个坑

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

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


先说背景

我用的是 Windows 11 家庭版。

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

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

我陷入了一个死局。


能试的都试了,全没用

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

第一波:DISM 禁用功能

bash 复制代码
dism /online /disable-feature /featurename:VirtualMachinePlatform /norestart
dism /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart

提示:/disable-feature 选项未知。

第二波:WMIC 命令

bash 复制代码
wmic /namespace:\\root\cimv2 path win32_optionalfeature where "name='VirtualMachinePlatform'" call disable

提示:类方法无效。

第三波:清理映像

bash 复制代码
dism /online /cleanup-image /startcomponentcleanup
dism /online /cleanup-image /restorehealth

也是执行失败

第四波:禁用服务

ini 复制代码
sc config vmcompute start= disabled
sc config LxssManager start= disabled

不支持。

css 复制代码
wsl --unregister /all

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

第五波:

bash 复制代码
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 相关包

bash 复制代码
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盘,再执行以下命令

bash 复制代码
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:\。


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

相关推荐
噢,我明白了2 小时前
java中唯一键和幂等键的应用
java·后端
GreenTea2 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
考虑考虑2 小时前
synchronized字符串常量
java·后端·java ee
颜进强3 小时前
16 · NestJS LifecycleEvents 生命周期事件:五个钩子、三条边界,和 rag-server 的优雅停机
前端·后端·ai编程
GetcharZp3 小时前
定位不再一个个吐坐标:英伟达 LocateAnything 上手全攻略
后端
郑州光合科技余经理4 小时前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程
我叫黑大帅5 小时前
Go日志库工程选型与逃逸分析评测报告
后端·面试·go
IT_陈寒7 小时前
JavaScript闭包的这个坑,我居然今天才爬出来
前端·人工智能·后端
Thneonl7 小时前
消息队列选型决策树:RabbitMQ vs Kafka vs Redis Streams
后端·架构