记录安装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:\。


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

相关推荐
怕浪猫几秒前
3 小时搭一个能用的聊天机器人后端,我用了这套技术栈
后端·面试·github
xiaoqiMikko40 分钟前
Redis 实战(二):宕机会丢多少数据 —— kill -9 与真断电下 RDB / AOF 逐个实测(6.2.4)
redis·后端
李哈哈8521 小时前
微服务依赖冲突
后端
努力的小雨1 小时前
每天盯着屏幕写代码,我终于不想再凑合了
后端
海岳云舟1 小时前
springboot项目中使用AOP
后端
小稀土1231 小时前
5步跑通第一个迭代:敏捷研发管理平台落地最小闭环
后端
zz在掘金337081 小时前
Django 中间件全家桶背诵笔记
后端
斑鸠喳喳1 小时前
调度线程池执行器 ScheduledThreadPoolExecutor
后端
大哥43091 小时前
索引 mapping 与代码对不上:一次不报错的静默失效排查
后端
神魔皆以血嗜1 小时前
Java 存储金额
java·后端