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


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

相关推荐
mldlds1 分钟前
Spring Boot 集成 Kettle
java·spring boot·后端
zopple8 小时前
常见的 Spring 项目目录结构
java·后端·spring
cjy0001119 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
小江的记录本10 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji341610 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端
程序员cxuan11 小时前
人麻了,谁把我 ssh 干没了
人工智能·后端·程序员
wuyikeer12 小时前
Spring Framework 中文官方文档
java·后端·spring
Victor35612 小时前
MongoDB(61)如何避免大文档带来的性能问题?
后端
Victor35612 小时前
MongoDB(62)如何避免锁定问题?
后端
wuyikeer13 小时前
Spring BOOT 启动参数
java·spring boot·后端