技术教程 解决WSL2出现0x8007054f无法正常使用镜像网络模式的问题
问题特征
在配置WSL的网络模式为Mirrored之后,启动WSL可能出现如下报错
wsl: 出现了内部错误。
错误代码: CreateInstance/CreateVm/ConfigureNetworking/0x8007054f
wsl: 无法配置 networkingMode Mirrored) (网络,回退到 networkingMode None。或者是这样的
wsl: An internal error occurred.
Error code: CreateInstance/CreateVm/ConfigureNetworking/0x8007054f
wsl: Unable to configure networkingMode Mirrored) (network, falling back to networkingMode None.
它甚至直接回退到了None而不是NAT,所以WSL直接断网了没想到吧
( 很难想象这样的回退策略是什么样的人设计出来的
具体情况
这是个臭名昭著的陈年老Bug,到现在都没解决
Error code: CreateInstance/CreateVm/ConfigureNetworking/0x8007054f · Issue #12351 · microsoft/WSL
根据issue的讨论和网络上其他帖子的情报,这个问题很可能和下面这三位有关系
PS D:\> Get-Service hns
Status Name DisplayName
------ ---- -----------
Running hns 主机网络服务
PS D:\> Get-Service WSLService
Status Name DisplayName
------ ---- -----------
Running WSLService WSL Service
PS D:\> Get-Service WinNAT
Status Name DisplayName
------ ---- -----------
Running WinNAT Windows NAT Driver而且忘记是哪的帖子了,说是深入研究了一下,这甚至可能是这三位和WSL自身出现了竞态条件也就是启动顺序问题导致的
解决方案
这个的解决方案五花八门,#12351这个issue里就可见一斑
我这里提供一个在我这确认管用的。
1:打开任务计划程序
2:创建一个新任务
3:将安全选项设置为“不管用户是否登录都要运行”

4:添加一个触发器,条件设置为“启动时”

5:添加一个操作,类型为“启动程序”,程序或脚本直接填写“wsl”

6:保存
7:重启电脑