解决WSL2报错(请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化)

缘由

最近想在电脑上玩手机游戏,我便去下载了 mumu 模拟器。
结果我的 hyper-vmumu 给关了,打开我的 Ubuntu on Windows,给我报错:

请启用虚拟机平台 Win­dows 功能并确保在 BIOS 中启用虚拟化[已退出进程,代码为 4294967295]

当场裂开,怎么突然就用不了了,导致 docker desktop 启动就自动退出 docker desktop stop

打开cpu虚拟化

进入 bios,打开 cpu 虚拟化,不然没有办法整 wsl。

不同的主板型号进入 bios 的方法不一样,可以自行百度查询,也可以从 F1 一直按到 F12,还有 delete 键。

然后打开 Win­dows 功能,拉到下面,打开适用于 Linux 的 Windows 子系统

linuxlinux

安装hyper-v

打开 Win­dows 功能,查看电脑中是否存在 hy­per-v,如果存在则可以跳过该步骤,直接勾选就行了

hyper-vhyper-v

如果不存在就需要安装相关组件。

随便在哪里新建一个.txt 文件,把后缀名改成.cmd, 编辑文件,把下面这一段复制进去:

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

保存退出,用管理员权限运行,等待安装完毕,过程可能很繁琐,很漫长,慢慢等不要心急。我第一次急死了,没等安装完就退出了

安装完成之后,打开 Win­dows 功能,把 hy­per-v 打开,勾选上,重启电脑。

启动hyper-v

用管理员权限在 pow­er­shell 中执行

bcdedit /set hypervisorlaunchtype auto

然后重启电脑,重启完成之后,应该就可以打开 wsl 了。我的 Ubuntu 能用了呜呜呜

总结

  1. 打开cpu虚拟化
  2. 确保hyper-v存在于电脑上,并且打开
  3. 打开适用于Linux的Windows子系统
  4. 虚拟机一般都会把你的hyper-v关掉
  5. 不要乱装模拟器呜呜呜