ethtool -i 是查看网卡驱动名、版本和固件信息的唯一可靠方式;不加-i仅显示链路状态,无法获取driver、version、firmware-version等关键字段,且--driver选项无效会被忽略。

直接用 ethtool -i 查,其他命令要么不全、要么要拼凑,容易漏关键字段。
为什么只信 ethtool -i 不信 ethtool 本身
运行 ethtool ens33 只显示 Speed、Duplex、Link detected 这类链路层状态,完全不出现 driver 或 version 字段。很多人输完没看到驱动名就去翻 dmesg 或 lspci,其实只是少敲了个 -i。这个参数不能省,--driver 选项也无效,会被忽略。
-
ethtool -i ens33输出里必须盯住三行:driver(模块名,如e1000e)、version(内核编译绑定版本,如5.15.0-78-generic)、firmware-version(PHY/MAC 固件,如1.4-1) - 如果
driver是r8169但网卡是 Realtek RTL8111,且Link detected: no,大概率是驱动失配,不是线没插好 -
version字段里的内核版本号必须和当前系统uname -r输出一致;若明显老旧(比如系统是 6.6 内核却显示 5.4.x),说明驱动未随内核更新
ethtool -i 输出里哪些布尔字段决定你能干啥
输出末尾的 supports-xxx 行不是摆设,它们直接限制后续操作是否可行:
-
supports-eeprom-access: no→ 别试ethtool -e ens33,必报错,不是权限问题,是驱动根本没实现该接口 -
supports-test: yes→ 才能放心跑ethtool -t ens33自检;若为no却硬跑,可能卡住或返回无效结果 -
supports-register-dump: no→ethtool -d ens33显示乱码或空,别怀疑自己参数写错,是驱动阉割了寄存器访问功能 - 虚拟网卡如
vmxnet3虽然supports-statistics: yes,但ethtool -s ens33 speed 1000会直接报错——它根本不走 PHY 协商流程
查完 ethtool -i 之后必须补一句 dmesg
ethtool -i 告诉你“现在加载的是什么”,dmesg 才告诉你“为什么加载这个”以及有没有底层报错:
- 执行
dmesg | grep -i "ens33\|r8169\|igb\|firmware",重点关注:firmware missing、PHY reset failed、ignoring PHY interrupt、PCIe Bus Error - 如果
ethtool -i显示driver: forcedeth,但dmesg里反复刷ignoring PHY interrupt,说明驱动已放弃管理 PHY,此时ethtool -s强设参数基本无效 -
rx_missed_errors在ethtool -S ens33中持续上涨,配合dmesg里r8169相关警告,基本可锁定驱动不兼容,换r8168驱动是最快解法
真正麻烦的不是找不到驱动名,而是 ethtool -i 显示的 driver 和硬件之间存在隐性失配——比如 r8169 对某些 RTL8111 芯片支持不全,或者 e1000e 在旧 BIOS 下因 PCIe ASPM 关闭而触发总线错误。这些不会在 ethtool -i 输出里写明,得靠 dmesg 报错+现象交叉验证。



















