环境信息

  • 操作系统:Ubuntu 24.04.2 LTS(系统代号 noble)
  • 内核版本:6.17.0-40-generic(HWE 硬件启用内核)
  • 系统架构:x86_64(amd64)
  • 网卡硬件:华硕主板板载 Realtek RTL8111H Gigabit Ethernet Controller [10ec:8168]
  • 运行环境:全程无法联网,仅支持 U 盘离线安装 deb 软件包

故障现象

  1. 网口物理灯亮,lspci识别网卡硬件,系统无有线网口;ip a看不到物理网卡。
  2. 离线安装r8168-dkms持续 DKMS 编译报错。
  3. 修复驱动文件后,手动加载驱动临时恢复网络,重启故障复现。
  4. 环境:Ubuntu 24.04,内核6.17.0-40-generic,全程离线。

根因分析

  1. 核心故障:缺失linux-modules-extra-6.17.0-40-generic,内核目录不存在r8169.ko原生驱动文件。
  2. 次要干扰:r8168-dkms 8.052版本老旧,不兼容 6.17 内核,编译失败。
  3. 重启复现原因:驱动补齐后未配置开机自动加载r8169模块。
  4. 排除项:无 r8169 黑名单配置,BIOS 已关闭 Secure Boot。

分阶段排查、操作命令记录

阶段 1:初步故障区分(定位硬件 / 驱动层级)

  1. 查看全部网络设备
1ip a

现象:仅存在 lo 回环网卡,无 enpxx 有线网卡。

  1. 查看 PCI 硬件列表,确认网卡硬件是否被系统识别
1lspci -nn

现象:成功找到 Realtek RTL8111H 网卡,确认硬件无损坏。

  1. 尝试加载原生 r8169 驱动,获取关键报错
1sudo modprobe r8169

现象:Module r8169 not found,证明驱动文件不存在,并非驱动被屏蔽。

  1. 校验内核目录驱动文件
1ls /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/

现象:目录不存在r8169.ko驱动模块。

  1. 核查本机已安装内核扩展包
1dpkg -l | grep linux-modules-extra

现象:缺少对应内核版本的linux-modules-extra包,完成根因锁定。

阶段 2:踩坑尝试(离线安装第三方驱动方案)

1sudo dpkg -i r8168-dkms_8.052.01_all.deb

现象:DKMS 编译返回错误代码 2,旧版源码无法适配 6.17 内核,方案失效。

阶段 3:正式修复,补齐原生驱动与固件

  1. 离线安装内核扩展包、网卡固件包
1bash
2sudo dpkg -i linux-modules-extra-6.17.0-40-generic_*.deb linux-firmware_*.deb
  1. 卸载编译失败、无效的 dkms 驱动包
1sudo dpkg -r r8168-dkms
  1. 手动加载 r8169 驱动,验证网络能否恢复
1sudo modprobe r8169
2ip a

现象:出现有线网卡,网络临时恢复。

阶段 4:解决重启失效问题

  1. 创建开机自动加载驱动配置
1echo "r8169" | sudo tee /etc/modules-load.d/r8169.conf
  1. 更新所有内核启动镜像,固化驱动加载配置
1bash
2sudo update-initramfs -u -k all
  1. 重启验证
1sudo reboot

现象:开机自动识别网卡,无需手动执行 modprobe,故障彻底解决。

关键排查区分命令(故障鉴别用)

  1. 全局检索是否存在驱动黑名单屏蔽
1grep -r "r8169" /etc/modprobe.d/ /usr/lib/modprobe.d/

本次执行结果:无任何屏蔽配置,排除黑名单干扰。

  1. 查看内核启动参数是否存在模块屏蔽
1cat /proc/cmdline

经验总结

  1. modprobe 模块名提示not found = 文件缺失;执行无反馈、设备不工作 = 大概率黑名单屏蔽,两条命令可区分两类故障。
  2. Ubuntu HWE 高版本内核 r8169 驱动存放于linux-modules-extra,不在基础内核包。
  3. 补齐驱动文件后,必须配置自动加载模块 + 更新 initramfs,否则重启失效。
  4. 离线环境优先系统原生驱动,第三方 DKMS 驱动存在严格内核版本兼容限制。