news 2026/9/26 6:47:58

海光平台网卡驱动安装指南:从lspci识别到DKMS编译与性能调优

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
海光平台网卡驱动安装指南:从lspci识别到DKMS编译与性能调优

简介:成都海光网卡驱动安装包是一套适用于海光网卡硬件的驱动源码包,主要面向Linux环境下需要使用该网卡的运维工程师、驱动开发人员以及内核学习爱好者,能够解决系统默认驱动缺失、网卡不能被正确识别或无法充分发挥性能等问题。压缩包共22个文件,总体积约146KB,以C语言源文件为主(14个.c),配合3个头文件、Makefile和Shell脚本,构成了从编译到安装的完整驱动工程;其中readme和txt说明文件有助于快速上手。通过阅读源码,可以深入理解网卡驱动的初始化、数据收发、中断处理等关键逻辑;借助Makefile和脚本,可便捷完成环境配置与编译安装。已有648人学习浏览,对于需要部署海光网卡或进行驱动二次开发的读者,这套轻量级源码包具备直接参考价值。

1. 在成都海光平台装网卡驱动,第一步不是下载安装包,而是搞清楚驱动归谁管

在成都海光平台服务器上装网卡驱动,很多人第一反应是去搜“海光网卡驱动安装包”,然后随便找一个包下载双击,结果网卡要么认不出来,要么装完速率起不来。我的建议刚好相反:先别急着找安装包,先用 lspci 看清楚机器上到底插的是谁家的网卡芯片。海光的 CPU 不产网卡,网卡驱动归芯片原厂管,安装包只是最后一步。

海光平台服务器上常见的网卡分成两类:板载网卡一般是瑞昱 RTL8111/8168、Intel I210/I219 这类千兆芯片,独立网卡则常见 Intel 82599、Mellanox CX 系列这些万兆/25G 芯片。它们的驱动来源完全不同,安装包的名字和编译方式也完全不一样。这篇文章就顺着这条链路拆开讲:怎么判断驱动归属、Linux 和 Windows 两条路怎么装、装完怎么调参数,以及我在海光平台上踩过的几个坑。适合读这篇文章的,是手里正好有一台海光 C86-3G(OPN 3350)或者类似平台的机器,装了麒麟 V10、统信 UOS 或者 Windows Server,正准备把网络环境跑起来的人。新手可以照着命令敲,熟手可以直接跳到第 4 章的坑清单和第 5 章的多队列调优。

2. Linux 下装海光平台网卡驱动:先看内核自带驱动,再决定要不要编译原厂包

在 Linux 上装海光平台网卡驱动,核心逻辑只有一个:绝大多数网卡驱动已经被编进内核或者以模块随发行版发布了,你要做的是“确认它加载了没有”,而不是“把它装上去”。跑到海光官网驱动下载页面找网卡驱动,多半是徒劳,因为那个页面里放的是平台工具、整机资源这类东西,网卡驱动的最终来源在芯片原厂或板卡厂商。下面按顺序做三件事。

2.1 装驱动前花三分钟确认网卡型号和驱动状态:lspci 与 ethtool

判断网卡驱动是否已经被内核接管,不需要装任何软件,两条命令就能看清。

# 1. 列出所有 PCI 网卡设备及正在使用的内核驱动模块 lspci -nnk | grep -iA3 'ethernet' # 输出示例: # 03:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ [8086:10fb] # Subsystem: Intel Corporation Device [8086:0003] # Kernel driver in use: ixgbe # Kernel modules: ixgbe # 2. 看网卡当前是否被系统识别,识别名是 eth0 还是 enp3s0 ip link # 3. 确认当前驱动版本和固件版本 ethtool -i enp3s0 # driver: ixgbe # version: 5.1.0-k # firmware-version: 0x800003b1

这里-nn显示厂商和设备 ID,-k显示对应的内核驱动模块。输出里出现Kernel driver in use: r8169、igb、ixgbe、mlx5_core这些字样,说明驱动已经在跑,接下来只需要配 IP,不需要装任何东西。ethtool -i告诉你当前驱动的版本和固件版本,这是后面判断“要不要升级驱动”的依据。

如果lspci -k里只有Kernel modules没有Kernel driver in use,说明驱动模块存在但没能绑定设备,多半是固件缺失或模块加载失败。这时候去看 dmesg,而不是急着下安装包。

2.2 能用内核自带驱动就别编译原厂包:麒麟 V10 的 nmcli 配置

先给结论:内核自带的 r8169、igb、ixgbe、mlx5_core 这些驱动,对 90% 的板载网卡和大多数 Intel 万兆卡都够用。麒麟 V10 和统信 UOS 都是 Debian 系,内核 4.19/5.10 里这几个驱动都是现成的。Debian 系发行版也一样,比如你在 Debian 上装 Intel Killer E5000 网卡,内核里对应的是 igc 驱动,也不用去 Intel 官网下包,关键是先确认在跑的是哪个驱动。

系统识别到网卡以后,配置 IP 用 nmcli 就够了,麒麟 V10 默认带 NetworkManager。

# 查看当前所有网卡设备状态 nmcli device status # DEVICE TYPE STATE CONNECTION # enp3s0 ethernet disconnected -- # 创建静态 IP 连接配置并启用 nmcli connection add con-name eth0-static type ethernet ifname enp3s0 \ ipv4.method manual ipv4.addresses 192.168.10.2/24 \ ipv4.gateway 192.168.10.1 ipv4.dns 192.168.10.1 nmcli connection up eth0-static

con-name是连接配置名,ifname是物理网卡名,ipv4.method manual表示静态地址。注意麒麟 V10 的网卡命名一般是 enpXsY 这种 predictable 命名方式,别想当然写成 eth0。ipv4.dns可以写多个,用空格分隔。配置完以后ip addr show enp3s0能直接看到地址生效。

还有一种情况:lspci -k没有显示 driver in use,但 dmesg 里能看到固件加载失败。这是 Debian 系最常见的“假性网卡驱动问题”,内核里有驱动模块,但对应的 firmware 文件没装。解决方式很直接:

# Debian/麒麟系补固件最省事的做法 apt install firmware-realtek firmware-linux-nonfree # 装完重新加载驱动模块,以 r8169 为例 modprobe -r r8169 && modprobe r8169

很多“网卡驱动装不上”的工单,最后查出来就是缺 firmware 包,而不是驱动本身有问题。内核模块没绑定 PCI 设备之前,先查固件,再查模块,最后才考虑编译原厂驱动。

2.3 什么时候必须编译原厂驱动:DKMS 方式装 Intel 82599 的 ixgbe

原厂驱动不是必须装的。我一般只在三种情况下去找原厂包:内核自带驱动对新网卡识别不完整,比如千兆卡协商出来只有百兆;需要原厂驱动才能暴露的特殊参数,比如 RSS 多队列控制、DPDK 支持;板卡厂商明确要求使用特定版本驱动。其余情况,内核自带驱动更稳。

以 Intel 82599 万兆网卡为例,原厂驱动包是 ixgbe 源码,正确做法是用 DKMS 管理,而不是直接 make install。直接 make install 的驱动只装进当前内核目录,下次升级内核就失效,这在生产环境是事故。

# 准备编译环境(麒麟 V10 / Debian 系) apt install build-essential linux-headers-$(uname -r) dkms # 解压原厂驱动源码并进入 src 目录 tar xf ixgbe-*.tar.gz && cd ixgbe-*/src # 用 dkms 注册,把源码交给 dkms 管理 # 先写 dkms.conf echo 'MAKE="make -C src/"' > dkms.conf echo 'CLEAN="make -C src/ clean"' >> dkms.conf echo 'BUILT_MODULE_NAME=ixgbe' >> dkms.conf echo 'DEST_MODULE_LOCATION=/kernel/drivers/net/ethernet/intel' >> dkms.conf echo 'PACKAGE_NAME=ixgbe-dkms' >> dkms.conf echo 'PACKAGE_VERSION=5.19.6' >> dkms.conf echo 'REMAKE_INITRD=yes' >> dkms.conf echo 'AUTOINSTALL=yes' >> dkms.conf # 回到源码根目录后交给 dkms 构建 cd .. dkms add . dkms build -m ixgbe-dkms -v 5.19.6 dkms install -m ixgbe-dkms -v 5.19.6 # 加载模块并验证 modprobe ixgbe ethtool -i enp3s0

dkms add把源码注册进 DKMS 系统,dkms build为当前内核编译,dkms install安装到当前内核模块目录。AUTOINSTALL=yes是 DKMS 自动为新内核重建模块的开关,下次 apt 升级内核后不用手动干预。编译失败时先看两处:/var/log/dkms.log里的具体报错,以及linux-headers-$(uname -r)版本是否和当前内核完全一致。headers 版本对不上是所有源码编译失败里最常见的翻车原因,没有之一。

3. Windows 下装海光平台网卡驱动:从设备管理器到三层参数

Windows 下的场景一般是海光工作站或台式机装 Windows Server 2022 或者 Windows 10/11,拿来跑办公、虚拟化或者设计软件。相比 Linux,Windows 下驱动安装包反而更好找,整机厂商基本都提供,海光 Windows 驱动下载入口在某些整机品牌的支持页面里也有汇总。问题是:装包简单,装完不会调参数的人很多。

3.1 驱动安装包的两个可靠来源和一个错误来源

Windows 下装网卡驱动,可靠来源按优先级排:第一是整机厂商的支持页面,按机器序列号或型号下载,比如手里这台海光 C86-3G 整机,厂商通常会把网卡、芯片组、显卡驱动打包在一起,一次装齐。第二是网卡芯片原厂的支持页,比如 Realtek 官网的 PCIe GbE 驱动、Intel 官网的网卡驱动,这些包版本新但只包含网卡驱动。海光官网驱动下载入口值得看一眼,但它的定位是平台级资源,网卡驱动往往还是引导你去整机厂商或芯片原厂拿。

要避免的错误来源是各类驱动精灵、万能网卡驱动装包工具。在国产平台上它们经常识别错硬件型号,装进去错误的驱动版本导致蓝屏,而且这类工具捆绑的东西太多,生产机器上不值得冒这个险。Windows 下安装驱动本身没什么技巧:设备管理器里看到黄色感叹号的“以太网控制器”,右键更新驱动,指向解压好的驱动目录即可。带 setup.exe 的安装包更省事,但装之前最好把旧驱动卸载干净,避免新旧版本驱动文件混在一起。

以下是几种常见网卡芯片在 Windows 设备管理器里的名字,方便你在安装包解压后对号入座:

芯片厂商设备管理器里显示的名字
Realtek RTL8111/8168Realtek PCIe GbE Family Controller
Intel I210/I219Intel(R) Ethernet Connection I217/I210/I219
Intel 82599Intel(R) Ethernet 10G 2P X520/X540
Mellanox ConnectX 系列Mellanox ConnectX-4/5/6/7 ...

如果设备管理器里从来没有出现过这些名字,说明网卡设备本身就没被系统认到,这时候先别急着装驱动,去 BIOS 里看板载 LAN 是不是被关了,或者 PCIe 槽位是不是没插好。

3.2 装完必须调的三个网卡参数:EEE、巨帧、RSS 队列

驱动装好能上网只是及格线。在国产平台上跑内网传输、虚拟机或者高性能计算,至少要把网卡属性里的这几个参数过一遍。这些参数全部藏在“网络适配器属性 → 高级”选项卡里。每个厂商的驱动对参数命名不完全一致,但功能是同一回事。

参数建议值原因
Energy Efficient Ethernet / 节能以太网DisabledEEE 开启时链路空闲降速,流量恢复时重新协商,延迟抖动明显
Jumbo Frame / 巨型帧9014 或 4088内网大数据块传输吞吐更高,但交换机也要同步开启,否则丢包
Receive Buffers / Transmit Buffers调到最大或次大默认值低,突发流量直接掉包
RSS Queues / Receive Side Scaling4 或 8单队列时大流量下载打满单核 CPU,软中断占用过高
Wake on Magic PacketDisabled生产机器避免意外唤醒,也有助于降低网卡待机功耗

这些参数在 AMD/Intel 平台上百试不爽,在海光平台上同样适用,因为网卡芯片和驱动的行为与 CPU 厂商无关。调参数有个注意点:改完参数后最好在设备管理器里禁用再启用一次网卡,确保驱动重新加载参数,然后再跑测速。如果找不到 RSS 队列选项,说明当前驱动版本太老或者用的是系统默认驱动,去芯片原厂装一次新驱动就有这个选项了。

3.3 Windows 下“未知设备”和“代码 56”怎么排查

Windows 下海光平台网卡驱动装不上,翻来覆去就是三个现象。第一种是设备管理器里一直是“以太网控制器”带黄色感叹号,驱动包装了但就绪不了,这基本是驱动数字签名问题,或者厂商的签名证书在当前系统里不受信任。解决方法是设置 → 系统 → 恢复 → 高级启动,重启后选择“禁用驱动程序强制签名”,再装一次;或者把厂商证书导入系统“受信任的发布者”存储区。第二种是驱动装完显示“该设备无法启动(代码 56)”,这通常是上一版驱动残留或者 PCI 资源冲突。解决方法是设备管理器里卸载设备时勾上“删除此设备的驱动程序软件”,重启后再装。

第三种现象很容易误判:装了 VirtualBox 之后物理网卡突然消失,设备管理器里多了个 VirtualBox Host-Only Network。这不是网卡驱动坏了,是 VirtualBox 安装时把虚拟网卡排在物理网卡前面,加上 Windows 的网络适配器排序逻辑导致物理网卡被暂时挂起。去网络连接里看真实网卡是不是被禁用,重新启用即可,不需要重装任何驱动。这类“驱动突然没了”的报障,八成是软件装出来的副作用,而不是驱动本身的问题。

4. 海光网卡驱动安装的五个翻车现场:现象、原因、解法

下面这些坑,有的是我在海光平台上反复踩过的,有的是同行在信创服务器上遇到后总结出来的。按“现象 → 原因 → 解决”写,其中第 4 条和第 5 条属于玄学重灾区,排查完你会觉得网卡驱动终于从黑匣子变成了白盒。

4.1 模块加载报“Unknown symbol”,make install 明明成功了

现象:原厂驱动源码编译顺利通过,make install 也提示完成,但 modprobe 时报Unknown symbol,网卡没出现在 ip link 里。

原因:驱动模块引用了内核里没有导出的符号。最常见的是 linux-headers 版本和当前运行内核不一致,编译时头文件能对上,运行时内核符号表对不上。其次是驱动源码版本对当前内核太老或太新。

解决:先uname -r确认当前内核版本,再确认linux-headers-$(uname -r)装的是同一个版本。重装 headers 后重新编译。如果还报符号错误,就换成发行版仓库里的 DKMS 包,让 DKMS 自动处理内核版本匹配,不要继续跟源码较劲。

4.2 升级内核后网卡驱动一夜之间消失

现象:apt upgrade 升级内核后重启,网卡没了,回退到旧内核启动一切正常。

原因:当初驱动是用 make install 方式装的,只装进了当前内核的 modules 目录。新内核没有对应模块,又没有 dkms 自动重建,驱动就消失了。

解决:安装原厂驱动时一律用 DKMS 注册。第 2.3 节写的就是标准流程。已经在跑生产环境的老机器,可以把原厂驱动源码重新 dkms add 一次,dkms install后重启验证。以后每次升级内核,DKMS 的AUTOINSTALL=yes会触发自动重建,不会再出现一夜之间网卡消失的情况。

4.3 Secure Boot 把模块拦在门外,modprobe 直接拒绝

现象:麒麟 V10 预装的 UEFI 环境上,驱动编译安装都没问题,但 modprobe 时模块加载失败,dmesg 里报Lockdown: module verification failed。

原因:UEFI Secure Boot 开启时,内核拒绝加载没有签名的内核模块。很多信创整机出厂默认开启 Secure Boot,而板卡厂商给的驱动包很少做签名。

解决:两个办法二选一。测试环境直接进 BIOS 关 Secure Boot,最快最省事。生产环境更稳妥的做法是 MOK 签名:用mokutil --import导入自生成的模块签名密钥,重启后按提示确认。MOK 方式不用动 BIOS,升级内核后重新签名一次即可,适合不允许动 BIOS 的机房环境。

4.4 速率起不来、频繁断流:先查 ASPM 和 EEE,别迷信换驱动

现象:原厂驱动装好后协商速率正常,但大流量复制文件时速度掉到几十 MB/s,或者延迟偶尔飙高。换了三个版本的驱动都是同一个德行。

原因:PCIe 电源管理 ASPM 和节能以太网 EEE 在链路空闲时降速,流量一上来又要重新协商,导致吞吐抖动。这属于电源管理层的玄学,再好的驱动也救不了,因为问题根本不在驱动。

解决:BIOS 里把 PCIe ASPM 设为 Disabled 或者 L0s only;网卡驱动侧用ethtool --ethtool -s eth0 wol d关闭唤醒,确认 EEE 关闭。改完之后ethtool eth0看 Speed 和 Duplicate 是否稳定在满速率状态,跑一次 iperf3 验证吞吐不再抖动。这个坑最容易让人走弯路,因为症状像驱动问题,其实是电源管理在捣乱。

4.5 Mellanox/CX 系列:固件和驱动版本必须配对,否则只能干瞪眼

现象:插上 CX7 网卡,系统识别了 PCI 设备,但 mlx5_core 驱动加载失败,或者驱动装完链路就是 up 不了。查固件版本会发现还是出厂老固件。

原因:Mellanox 网卡的固件和驱动是配套的。驱动版本太新而固件太旧,或者反过来,都会导致加载异常。像 MLNX_OFED 5.8-3.0.7.0-lts 这种 LTS 版本包,自带一组匹配的固件要求,不满足就直接罢工。

解决:先到官网下载对应网卡型号的固件工具和固件包,手动把固件刷到驱动要求的版本范围,再装 MLNX_OFED 驱动。装完重启后用mlxlink确认 link 状态,用mlx_fwreset确认固件版本,别跳过刷固件这一步直接装驱动,省不掉。

5. 进阶:从“驱动能装上”到“万兆跑满”——队列、中断和验证

5.1 多队列和中断绑定:海光多 NUMA 下的关键操作

双路海光平台有一个容易忽视的细节:PCIe 网卡落在哪个 NUMA node 上,中断就应该绑到那个 node 的 CPU 上。否则跨 NUMA 访问内存,万兆线速跑不满。

# 查看网卡所在 NUMA node cat /sys/bus/pci/devices/$(ethtool -i enp3s0 | awk '/bus-info/{print $2}')/numa_node # 打开 8 个 RSS 队列 ethtool -L enp3s0 combined 8 # 查看中断分布 grep enp3s0 /proc/interrupts

把每个中断号用echo CPU位掩码 > /proc/irq/<num>/smp_affinity绑到同一 NUMA 节点上的 CPU 核心,或者装 irqbalance 并配置成按 NUMA 拓扑分配,都能看到软中断分布明显均匀化。

5.2 给 ESXi 注入网卡驱动的思路

海光平台装 ESXi 找不到网卡是常见问题,因为 ESXi 镜像默认带的驱动有限,尤其对瑞昱和部分国产网卡支持差。正确做法不是先装系统再想办法,而是找网卡原厂发布的 ESXi VIB 离线包,用esxcli software vib install注入驱动。如果机器里已经有正在跑的 ESXi,直接在维护模式下安装 VIB;如果是全新安装,就用工具把 VIB 打进 ISO 再引导。

5.3 验证驱动是不是真装对了:三条命令一次打流

驱动装完,验证比安装更重要。我会按这个顺序检查:ethtool -i看 driver 和 firmware 版本,lspci -nnk确认 driver in use,ethtool -S看 rx_errors、tx_errors、rx_missed 这些计数器是否增长。全部干净之后再用 iperf3 打流,双向各跑 60 秒,确认吞吐稳定且 CPU 软中断没有集中在一个核上。

一个习惯:每次装完驱动,把驱动安装包、固件包和当时的uname -r输出一起备份到/root/drivers-backup,标注好日期。下次升级内核或者换机器重装,直接翻备份,不用再全网找包。这个习惯帮我躲过好几次“驱动包官网下架”的尴尬,也希望帮到你。

本文还有配套的精品资源,点击获取

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

海光网卡驱动安装实战:从内核匹配到麒麟系统识别

简介&#xff1a;面向成都海光网卡用户、服务器管理员和网络运维人员的驱动源码包&#xff0c;主要解决该型号网卡在主流操作系统中无法被正确识别、缺少驱动导致功能受限或性能无法发挥的问题。压缩包共收录22个文件&#xff0c;整体约146KB&#xff0c;内容以14个C源码文件和…

作者头像 李华
网站建设 2026/9/26 6:47:25

气象数据分析大作业指南:Python数据清洗到可视化全流程

简介&#xff1a;这是一份基于Python的气象数据分析与可视化项目源码&#xff0c;面向需要完成毕业设计、课程设计或期末大作业的学习者&#xff0c;尤其适合有Python基础、想借鉴高分项目快速搭建完整系统的新手&#xff0c;可直接覆盖气象数据获取、分析与展示等核心需求。压…

作者头像 李华
网站建设 2026/9/26 6:47:07

Vuep:实时编辑与预览Vue组件的神器

Vuep&#xff1a;实时编辑与预览Vue组件的神器 【免费下载链接】vuep &#x1f3a1; A component for rendering Vue components with live editor and preview. 项目地址: https://gitcode.com/gh_mirrors/vu/vuep Vuep 是一个使用 JavaScript 编写的开源项目&#xff…

作者头像 李华
网站建设 2026/9/26 6:47:03

Qlib AI量化实战:从数据到回测的全链路拆解指南

Qlib AI量化实战&#xff1a;从数据到回测的全链路拆解指南 【免费下载链接】qlib Qlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML mod…

作者头像 李华
网站建设 2026/9/26 6:44:31

IPFS与以太坊存证集成:从CID到链上哈希的完整链路

简介&#xff1a;面向区块链与分布式存储初学者&#xff0c;这份资源围绕健康记录跟踪场景&#xff0c;演示以太坊智能合约与IPFS集成的基础链路&#xff0c;涵盖Truffle与Ganache环境配置、MetaMask和MyEtherWallet调用流程&#xff0c;并让医生通过合约检索健康记录IPFS ID、…

作者头像 李华
网站建设 2026/9/26 6:44:30

软件上线实操 checklist:需求落地、质量卡点与闭环交付

1. 这不是教科书&#xff0c;而是一份被删掉37次又重写的上线 checklist“软件开发全流程&#xff1a;从需求到上线的完整指南”——看到这个标题&#xff0c;我第一反应是关掉页面。太虚了。就像说“如何做饭”&#xff0c;结果通篇讲“火候很重要”“食材要新鲜”&#xff0c…

作者头像 李华