在Win11系统上安装Ubuntu WSL(Windows Subsystem for Linux,即Windows 子系统 for Linux,可让用户在Windows系统中直接运行Linux环境)的过程中,不少小伙伴会遇到各种报错问题,让人十分头疼。今天就来给大家详细讲讲我在安装过程中遇到的报错以及对应的解决办法,希望能帮助到大家。

一、安装报错情况及代码解读

在应用商店下载安装Ubuntu后,当运行wsl命令时,出现了报错。具体报错信息如下:

Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0xc03a0014 Error: 0xc03a0014 ??????????????????? Press any key to continue... 

报错代码为0xc03a0014,当时我不太清楚这是什么错误,在网上搜了个遍,都没找到这个报错代码的相关信息。后来在Microsoft知识库中发现了一些可能有用的资料。

二、针对报错0xc03a0014的解决方案尝试

(一)方案1:参考Windows Server相关问题解决方法

我找到了一个链接,标题是“在Windows Server中管理VHD文件时出错:‘找不到指定文件的虚拟磁盘提供程序’”。按照里面的方法进行修改后,却发现问题并没有得到解决,依旧报错。

(二)方案2:修改设备管理器中虚拟化相关驱动启用状态

经过研究,发现可能是hyper-v后端驱动出现了故障。要知道,hyper-v是Windows系统自带的一款虚拟化技术,能让用户在一台计算机上同时运行多个操作系统。我们需要打开设备管理器,检查和虚拟化相关的支持驱动是否都处于启用状态。具体操作步骤如下:

  • 打开“设备管理器”:这是管理电脑硬件设备的重要工具。
  • 查找“系统设备”:在众多设备分类中找到“系统设备”这一项。
  • 启用相关虚拟化设备
    • Microsoft Hyper-V虚拟化基础结构驱动程序:这是hyper-v虚拟化技术的基础驱动,保障虚拟化功能的正常运行。
    • 复合总线枚举器:负责识别和管理总线上的设备,对系统识别虚拟化设备有重要作用。
    • Microsoft虚拟磁盘枚举器:用于管理虚拟磁盘,在WSL运行时,虚拟磁盘的管理离不开它。
    • UMBus根总线枚举器:它在系统总线管理中发挥着重要作用,和虚拟化设备的连接、识别等相关。
    • Microsoft虚拟网络适配器枚举器NDIS:主要管理虚拟网络适配器,保障WSL的网络功能正常。
    • 设备重定向器总线枚举器(如果适用):如果系统中存在设备重定向相关功能,这个驱动就很重要。

参考:wsl故障修复文章

按照上述方法修改完后,0xc03a0014这个报错不再出现了,可又冒出了新的报错0x8037011e。报错信息如下:

Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8037011e Error: 0xc03a0014 ??????????????????? Press any key to continue... 

三、解决报错0x8037011e

出现新报错后,我用wsl命令查看远程可用镜像,发现不是报解析错误,就是加载不出来。经过分析,大概率是DNS被污染了。DNS就像是互联网的“地址簿”,它能把我们输入的网址转换为计算机能识别的IP地址。如果DNS被污染,计算机就无法准确找到对应的网站地址。

通过修改DNS,将其设置为114.114.114.114和8.8.8.8这两个常用的公共DNS服务器地址后,问题终于得到了解决。当时查看镜像时的报错信息如下:

wsl --list --online 无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法解析服务器的名称或地址 错误代码: Wsl/WININET_E_NAME_NOT_RESOLVED PS C:Users834> wsl --list --online PS C:Users834> ^C PS C:Users834> wsl --list --online 

修改DNS后,一切恢复正常,Ubuntu WSL也能顺利安装和使用了。希望大家在遇到类似问题时,能参考这篇文章解决问题。