先确认是否缺固件而非驱动:lspci -k -nn | grep -A 3 -i ethernet 查驱动状态,/lib/firmware/ 下查对应厂商目录,缺则安装 firmware 包并 modprobe 加载。

怎么判断网卡驱动根本没加载
Linux 启动后网卡没 IP、ip link 看不到对应接口、dmesg | grep -i eth 或 dmesg | grep -i network 里压根没识别到硬件——这些不是配置问题,是驱动压根没进内核。别急着编译,先确认是不是缺固件(firmware)而非驱动源码。很多新网卡(比如 Realtek RTL8125B、Intel I225-V)需要额外固件包,但系统没自动装。
-
lspci -k -nn | grep -A 3 -i ethernet查看设备 ID 和当前绑定的驱动(如果显示Kernel driver in use: none,大概率是没驱动或固件) - 检查
/lib/firmware/下有没有对应厂商目录(如rtl_nic/、intel/),缺就手动下载 firmware 包(Debian/Ubuntu 用sudo apt install firmware-realtek firmware-intel-sound;CentOS/RHEL 用sudo yum install linux-firmware) - 固件放对位置后,执行
sudo modprobe -r <code>r8169(旧驱动)再sudo modprobe <code>r8125(新驱动),看dmesg是否有 “loaded firmware” 字样
什么时候必须自己编译驱动(而不是用 dkms)
官方内核还没合入你的网卡驱动(比如刚发布的 Marvell AQC113C),或者你用的是 LTS 内核但厂商只提供了针对 6.x 的驱动源码,这时候 dkms 会编译失败(报 struct net_device_ops 成员缺失之类)。编译不是首选,是兜底手段。
- 先查
uname -r和驱动 README,确认支持的内核版本范围;不匹配就别硬编,容易编完也 insmod 失败 - 必须安装对应内核头文件:
sudo apt install linux-headers-$(uname -r)(Debian/Ubuntu)或sudo dnf install kernel-devel-$(uname -r)(Fedora/RHEL) - 进驱动源码目录后,别直接
make && sudo make install;先make clean,再make,看终端最后几行有没有 warning:比如‘xxx’ defined but not used往往意味着内核 API 已变更,得手动改源码
insmod 成功但 ip link 还是没网卡?
驱动模块加载了,但没触发 probe,常见于 PCI 设备 ID 不在驱动的 pci_device_id 表里。尤其国产网卡或工控板载网卡,厂商给的驱动往往只写了参考 ID,实际硬件 ID 对不上。
- 用
lspci -nn | grep Ethernet记下设备 ID(格式如[10ec:8125]) - 反查驱动源码里的
static const struct pci_device_id xxx_id_table[] = { ... };,确认是否包含该 ID;没有就手动加一行{PCI_DEVICE(0x10ec, 0x8125), .driver_data = 0},,再重新make - 加完重编译后,
sudo modprobe -r <code>r8125再sudo modprobe <code>r8125,然后立刻dmesg | tail -10—— 如果出现r8125 0000:03:00.0: irq 42 for MSI/MSI-X,说明 probe 成功了
编译好的驱动如何开机自动加载
别往 /etc/modules 里硬写驱动名就完事。如果驱动依赖其他模块(比如 mdio、libphy),顺序错了照样启动失败。
- 新建
/etc/modules-load.d/r8125.conf,只写一行:r8125(不带 .ko,不加路径) - 若驱动需传参(如禁用 LRO:
options r8125 disable_lro=1),写进/etc/modprobe.d/r8125.conf - 关键一步:
sudo depmod -a刷新模块依赖关系,否则 reboot 后可能因依赖未解析而静默失败 - 验证:
sudo systemctl restart systemd-modules-load,再lsmod | grep r8125,接着ip link show看接口是否出现
dmesg 没输出却以为是编译问题,其实只是固件没放对位置。











