准确获取网卡驱动版本应优先使用ethtool -i命令:先ip a查网卡名(如ens33),再执行ethtool -i ens33,直接读取driver、version和firmware-version三字段;若version为空则用modinfo驱动名查version/vermagic;再以lspci -k交叉验证驱动绑定状态,并用dmesg排查初始化失败日志。

在麒麟操作系统中准确获取网卡驱动程序版本,是排查网络异常、验证硬件兼容性或升级驱动前的必要动作。仅靠lsmod或lspci只能看到模块名或设备绑定状态,无法确认实际加载的驱动版本号和固件版本,容易误判驱动是否真正生效。
用 ethtool -i 直接读取驱动与固件版本
这是唯一能同时拿到 driver 名称、version 字符串和 firmware-version 的可靠方法,其他命令都要拼凑且易漏关键字段。
第一步:打开终端,执行 ip a 查出目标网卡名称,例如 【ens33】 或 【eth0】 ——注意别选 lo 或 docker0 这类虚拟接口。
第二步:运行 ethtool -i 网卡名,例如:ethtool -i ens33。
第三步:在输出中紧盯三行:driver(如 r8169)、version(如 5.15.0-78-generic)、firmware-version(如 0.1.12)——【version 字段必须与当前内核 uname -r 输出一致,否则说明驱动未随内核更新】。
如果输出里 driver 是 r8169,但网卡实为 RTL8111 且 Link detected: no,那大概率是驱动失配,不是网线问题。
用 modinfo 验证驱动模块元数据
当 ethtool -i 的 version 字段为空或显示 unknown 时,说明该驱动模块未嵌入版本字符串,需回退到内核模块层面查证。
先从 ethtool -i 输出中抄下 driver 名,比如 iwlwifi 或 8852be。
执行 modinfo 驱动名 | grep -i "version\|vermagic",例如:modinfo iwlwifi | grep version。
本文档主要讲述的是Android 操作系统的介绍;Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
若输出含 version: 535.161.07,这就是模块编译时写死的版本;若只有 vermagic: 6.6.41-19.ky10.aarch64 SMP mod_unload,说明版本号未声明,需结合 dmesg 日志判断实际加载行为。
通过 lspci -k 确认物理设备与驱动绑定关系
这一步用于交叉验证:ethtool 告诉你“现在用的是什么”,lspci -k 告诉你“这个硬件到底绑定了哪个驱动”。两者不一致,说明存在驱动抢占或绑定失败。
方法一:执行 lspci -knn | grep -A 3 -B 1 "Network\|Ethernet",快速定位网卡 PCI 地址与 Kernel driver in use 字段。
方法二:若已知 PCI 地址(如 0000:02:01.0),直接执行 lspci -k -s 0000:02:01.0,检查 【Kernel driver in use】 是否非空且与 ethtool -i 的 driver 字段完全一致。
若此处显示 Kernel modules: r8169 但无 in use 行,说明驱动模块存在却未激活,此时 ethtool -i 会报错“No such device”。
查 dmesg 日志确认驱动初始化成败
ethtool -i 只反映当前快照,dmesg 才记录驱动加载全过程。很多“看似正常”的驱动其实启动时就失败了,只是没立刻暴露。
执行 dmesg | grep -i "ens33\|r8169\|8852be\|firmware",重点找含 failed、error、no firmware、ignoring PHY interrupt 的行。
如果看到 r8169 0000:02:01.0: Direct firmware load for rtl_nic/rtl8168g-3.fw failed,说明缺固件文件,得手动补上 /lib/firmware/rtl_nic/ 目录。
若 ethtool -i 显示 driver: forcedeth,但 dmesg 反复刷 ignoring PHY interrupt,说明驱动已放弃管理物理层,此时强行调参无效。










