背景
win10企业版升级win11企业版后,安装WSL2,最后安装WSL的Ubuntu发布版,尝试网上各种方法,还是出现文章第三节所写的问题,差点被这问题搞放弃了,全网少有针对这个问题的答案,有也不顶用,靠自己学习WSL知识,找到该问题可能的原因,搞定该问题。
一、win10企业版升级win11企业版
参考本人博客:
https://blog.csdn.net/Acecai01/article/details/136752860
二、安装WSL和发布版
注意WSL2与其他模拟器或虚拟机冲突
WSL2与绝大多数手游模拟器(MUMU、雷神等)都不兼容,如果有使用模拟器的需求,需要谨慎考虑
原因:WSL2需要开启Hyper-V,而模拟器使用不能开启Hyper-V
如果两者冲突导致WSL2不可用,参考下方链接
https://www.bilibili.com/read/cv13748859
2.1、配置防火墙
(1)打开 “Window 安全中心”
(2)点击 “应用和浏览器控制”
(3)拉到底点击"攻击防护设置"
(4)切换到 “程序设置” 选项卡,等待片刻刷新出程序列表
(5)拉到底部,看到"C:\WINDOWS\System32\vmcompute.exe",点击并编辑
(7)下滚到 “控制流保护 (CFG)” ,取消勾选"替代系统设置"
(8)在Powershell中执行 “net start vmcompute”, 启动vmcompute
2.2、修复系统
(1)以管理员身份打开PowerShell
(2)执行命令 “sfc /scannow”,等待完成
(3)执行命令 " dism /online /cleanup-image /restorehealth",等待完成
(4)重启电脑
2.3、安装
参考链接:
https://contabo.com/blog/how-to-install-wsl2-on-windows-10/
2.4、WSL问题排查
官方各类问题排查方法
https://learn.microsoft.com/zh-cn/windows/wsl/troubleshooting#installation-issues
WSL日志查看方法
《[问题已处理]-排查wsl崩溃的方法》
https://blog.csdn.net/xujiamin0022016/article/details/126557180
三、问题
报错问题是:WslRegisterDistribution failed with error: 0x80070490 Error: 0x80070490 ???
过程
在2.3节中安装Ubuntu发布版步骤时:
(base) PS C:\WINDOWS\system32> wsl.exe --install Ubuntu-22.04
。。。
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070490
Error: 0x80070490 ???
Press any key to continue...
他人解决方法
针对该问题,这里有几篇其他人的解决办法(环境和本人的不同,本人不适用)
https://edosha.hatenablog.jp/entry/2022/06/09/145453
https://superuser.com/questions/1820365/wsl2-ubuntu-20-04-6-lts-not-working-wslregisterdistribution-failed-with-error
https://github.com/microsoft/WSL/issues/7946
本人解决方法
通过2.4节中所述查看WSL日志方法,找到安装Ubuntu时所产生的日志文件logs.etl(以管理员身份开启两个PowerShell,一个监听日志(注意要翻墙后操作),一个安装ubuntu产生问题),将其转为logs.xml后定位到可能的问题信息:
如上图红框内容与所产生的问题在形式上很相似,猜测是NAT网络模式的问题,主机和WSL发布版无法连通,查阅WSL网络访问知识:
https://learn.microsoft.com/zh-cn/windows/wsl/networking
尝试了如下方法:
(1)手动创建配置文件 “C:\Users\Administrator\.wslconfig”, 文件内容如下:
[wsl2]
localhostForwarding=true
networkingMode=mirrored
保存后关闭。
(2)以管理员身份运行PowerShell,执行如下命令:
(base) PS C:\WINDOWS\system32> wsl --shutdown # 重启WSL
(base) PS C:\WINDOWS\system32> netsh winsock reset # 重置winsock,防止网络代理等问题
(3)重启电脑
(4)重新安装Ubuntu22.04,成功!!如下状态:
(base) PS C:\WINDOWS\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2