news 2026/9/28 11:58:56

UBuntu18.04 解决 Linux 5.4 下 Intel I226-V (0x125C) 2.5G 网卡驱动识别问题 (probe failed with error -2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UBuntu18.04 解决 Linux 5.4 下 Intel I226-V (0x125C) 2.5G 网卡驱动识别问题 (probe failed with error -2)

解决 Linux 5.4 下 Intel I226-V (0x125C) 2.5G 网卡驱动识别问题 (probe failed with error -2)

背景

在 Ubuntu 18.04 (Kernel 5.4.0) 平台上使用 Intel NUC13 或某些定制主板时,遇到了板载的 Intel I226-V 2.5G 网卡无法识别的问题。
lspci可以看到设备,但驱动加载失败,dmesg报错probe failed with error -5或error -2。

本文记录了通过修改 Intel IGC 源码驱动来适配该未知设备 ID (0x125C) 的完整过程。

硬件信息

架构: x86_64 CPU 运行模式:32-bit,64-bit 字节序: Little Endian CPU:16在线 CPU 列表:0-15 每个核的线程数:1每个座的核数:10座:1NUMA 节点:1厂商 ID: GenuineIntel CPU 系列:6型号:186型号名称: 13th Gen Intel(R)Core(TM)i7-13620H 步进:2CPU MHz:553.048CPU 最大 MHz:6300.0000CPU 最小 MHz:400.0000BogoMIPS:5836.80虚拟化: VT-x L1d 缓存: 48K L1i 缓存: 32K L2 缓存: 1280K L3 缓存: 24576K NUMA 节点0 CPU:0-15 标记: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b md_clear flush_l1d arch_capabilities

通过lspci -nnk查询到的网卡信息如下:

55:00.0 Ethernet controller[0200]: Intel Corporation Device[8086:125c](rev 04)Subsystem: Intel Corporation Device[8086:3037]56:00.0 Ethernet controller[0200]: Intel Corporation Device[8086:125c](rev 04)Subsystem: Intel Corporation Device[8086:0000]

关键点在于 Device ID 为125c,这是一个在 Linux 5.4 内核自带驱动中未被定义的 ID。

问题现象

  1. 驱动无法加载:lspci显示没有Kernel driver in use。
  2. 报错信息:
    • 初始报错:igc: probe of 0000:55:00.0 failed with error -5(MAC初始化错误)
    • 修正 ID 后报错:igc: probe of 0000:55:00.0 failed with error -2(PHY ID 检查或 NVM 校验错误)

解决方案

我们需要下载 Intel IGC 独立驱动源码(基于 5.4.0-7642.46 或类似版本),并修改源码以添加对0x125C的支持。

1. 准备工作

安装编译环境和内核头文件:

sudoapt-getupdatesudoapt-getinstalldkms build-essential linux-headers-$(uname-r)

2. 获取源码

假设你已经有了intel-igc的驱动源码(可以从 GitHub 或 Intel 官网获取旧版源码)。

3. 修改源码

需要修改三个文件来适配此硬件。

修改一:添加设备 ID 宏定义

文件:src/igc_hw.h
在设备 ID 列表处添加0x125C的定义:

#defineIGC_DEV_ID_I225_LM0x15F2// ... 其他 ID ...#defineIGC_DEV_ID_I225_BLANK_NVM0x15FD#defineIGC_DEV_ID_I226_V0x125C/* 添加这一行 */
修改二:注册 PCI 设备表

文件:src/igc_main.c
在igc_pci_tbl数组中添加新的 ID,使其能被 probe 探测到:

staticconststructpci_device_idigc_pci_tbl[]={{PCI_VDEVICE(INTEL,IGC_DEV_ID_I225_LM),board_base},// ...{PCI_VDEVICE(INTEL,IGC_DEV_ID_I226_V),board_base},/* 添加这一行 */{0,}};
修改三:适配初始化流程与绕过 PHY 检查

文件:src/igc_base.c

步骤 A:在igc_get_invariants_base中添加初始化分支
防止返回 error -5 (MAC Init Error):

statics32igc_get_invariants_base(structigc_hw*hw){// ...switch(hw->device_id){caseIGC_DEV_ID_I225_LM:// ...caseIGC_DEV_ID_I226_V:/* 添加这一行 */mac->type=igc_i225;break;default:return-IGC_ERR_MAC_INIT;}// ...}

步骤 B:在igc_init_phy_params_base中放宽 PHY ID 检查
防止返回 error -2 (PHY Error/ENOENT)。由于这是定制版或新版 PHY,ID 可能不在白名单中,我们将其默认视为 I225 PHY 处理:

statics32igc_init_phy_params_base(structigc_hw*hw){// ... (获取 PHY ID 后)/* Verify phy id and set remaining function pointers */switch(phy->id){caseI225_I_PHY_ID:phy->type=igc_phy_i225;break;default:/* 修改:不再直接返回错误,而是兼容处理 */// ret_val = -IGC_ERR_PHY;// goto out;phy->type=igc_phy_i225;/* 强制指定为 I225 */break;}// ...}

4. 编译与安装

方式一:使用 DKMS(推荐)

这样内核升级后驱动会自动重编。

# 1. 确保在源码根目录cd~/intel-igc# 2. 清理旧版本(如果有)sudodkms remove igc/5.4.0-7642.46 --all# 3. 添加到 DKMSsudodkmsadd.# 4. 安装sudodkmsinstalligc/5.4.0-7642.46# 5. 加载驱动sudormmod igcsudomodprobe igc
方式二:手动编译
cdsrcmake-C /lib/modules/$(uname-r)/buildM=$(pwd)modulessudoinsmod igc.ko

5. 验证结果

执行以下命令查看状态:

# 1. 查看内核日志,确认 probe 成功dmesg|tail# 应显示:Intel(R) 2.5G Ethernet Linux Driver... 且无报错# 2. 查看 PCI 驱动绑定lspci -nnk|grep-A3 125c# 应显示:Kernel driver in use: igc# 3. 查看网口并启用ipaddrsudoiplinksetenp85s0 upsudodhclient enp85s0

至此,Intel 0x125C 网卡在 Ubuntu 18.04 下成功驱动。


注意:本文基于 Linux 5.4 内核环境。更高版本的内核(如 5.15+)可能已经原生支持该设备,建议优先考虑升级内核。但在无法升级内核的嵌入式/工控场景下,此 patch 方法非常有效。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 8:04:47

多模态Agent的Docker服务编排全解析(架构师不愿透露的5大核心技巧)

第一章:多模态Agent的Docker服务编排在构建多模态Agent系统时,通常需要整合语音识别、图像处理、自然语言理解等多个异构服务。使用Docker进行服务编排,可以有效隔离各模块运行环境,并实现快速部署与横向扩展。服务容器化设计 每个…

作者头像 李华
网站建设 2026/9/28 13:41:55

网络安全培训全攻略:零基础能学会吗?前景如何?

一句话回答:能学会,且前景光明!但这取决于你选择的路是否正确。本文是价值万元的免费攻略,从“能不能学”到“如何学”,再到“学完怎么办”,一次性讲透。一、零基础,真的能学会网络安全吗&#…

作者头像 李华
网站建设 2026/9/28 21:25:49

仓颉stdx模块终极配置指南:从零开始快速上手

仓颉stdx模块终极配置指南:从零开始快速上手 【免费下载链接】cangjie-stdx-bin 仓颉编程语言 stdx 模块二进制发布仓,待迁移。 项目地址: https://gitcode.com/Cangjie/cangjie-stdx-bin 还在为仓颉编程语言中的stdx模块配置而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/9/28 18:21:26

使用开源模型微调,构建专属的测试用例生成机器人

测试用例生成的智能化变革在敏捷开发与DevOps普及的当下,软件测试面临着测试周期压缩与质量要求提升的双重压力。传统测试用例设计高度依赖工程师经验,存在效率瓶颈与覆盖盲区。大型语言模型虽能生成基础测试用例,但通用模型在领域特定业务逻…

作者头像 李华
网站建设 2026/9/28 17:36:56

COMSOL模拟等离子共振结构超材料:多波段高吸收率文献复现案例

COMSOL等离子共振结构超材料完美吸收体的多波段高吸收率,该案例为文献复现。打开COMSOL时总有种在玩精密乐高的错觉,尤其是搞等离子体超材料这种需要微操的模型。今天要复现的这个多波段完美吸收体案例,核心在于金属-介质叠层纳米结构产生的局…

作者头像 李华
网站建设 2026/9/29 3:24:05

深度解析:5大实战技巧教你精准拆解量化策略的因子归因

深度解析:5大实战技巧教你精准拆解量化策略的因子归因 【免费下载链接】gs-quant 用于量化金融的Python工具包。 项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant 你是否经常面临这样的困境:明明策略表现优异,却说不清超额…

作者头像 李华