最可靠方法是查看 /sys/class/net/网卡名/device/driver 链接,如 driver -> ../../../bus/pci/drivers/e1000e 即表示使用 e1000e 驱动;若报错则可能是虚拟/USB 网卡或驱动未加载。

怎么确认当前网卡用的是哪个驱动
直接看 /sys/class/net/ 下设备的驱动链接最可靠,比猜名字或查模块列表更准。
-
ls -l /sys/class/net/enp0s3/device/driver(把enp0s3换成你的网卡名)——输出里driver -> ../../../bus/pci/drivers/<code>e1000e就说明用的是e1000e驱动 - 如果报错
No such file or directory,大概率是虚拟网卡、USB 网卡,或者驱动没加载成功 -
ethtool -i enp0s3也能看到driver和version字段,但依赖ethtool已安装且驱动支持该接口
驱动没加载时怎么排查硬件识别情况
驱动不工作,往往是因为内核根本没认出网卡,得先确认 PCI/USB 设备是否被发现。
-
lspci | grep -i ethernet查 PCIe 网卡;lsusb查 USB 网卡 —— 如果这里都看不到设备,基本是硬件没插好、BIOS 关闭了网卡、或物理损坏 -
lspci -vv -s 00:1f.6(把00:1f.6换成lspci输出里的实际地址)能看Kernel driver in use:和Kernel modules:,后者是“能用的驱动”,前者是“正在用的驱动” - 常见坑:某些主板网卡在 BIOS 中叫 “LAN Controller” 或 “Network Stack”,默认可能被设为
Disabled或UEFI Driver Only,Linux 内核就加载不了原生驱动
驱动加载失败的典型错误和应对
就算硬件被识别,驱动也可能加载失败,这时候 dmesg 是唯一靠谱的日志来源。
-
dmesg | grep -i "e1000\|igb\|r8169\|realtek"(按你怀疑的驱动名过滤)——重点看末尾有没有failed to load firmware、Cannot allocate irq或probe failed -
r8169驱动在较新 Realtek 芯片上常出问题,系统可能自动 fallback 到开源r8169,但实际需要闭源r8168;卸载r8169后手动modprobe r8168才能恢复 - 固件缺失(如
iwlwifi缺firmware-iwlwifi包)会导致驱动加载一半就退出,dmesg里会明确提示缺哪个.ucode文件
如何验证驱动是否真正生效
光看到驱动加载了还不够,得确认它能收发数据、能读取链路状态。
-
ip link show enp0s3看state UP和LOWER_UP是否都出现;只有state DOWN说明驱动加载了但没启用,试试ip link set enp0s3 up -
ethtool enp0s3看Link detected:是不是yes;如果是no,检查网线、交换机端口、双工协商(有时要加ethtool -s enp0s3 autoneg off speed 1000 duplex full强制) - 别只信
ifconfig—— 它不显示驱动名、不报链路层异常,而且在很多发行版里已被弃用,ip和ethtool才是事实标准
真实环境里,驱动和硬件握手那几毫秒的细节,比如 PHY 初始化顺序、EEPROM 校验失败、PCIe ASPM 节能干扰,往往不会报错,只会让网卡反复 up/down 或吞丢包。这时候得盯紧 dmesg -w 实时输出,而不是只跑一遍命令就下结论。











