Ubuntu 22.04更新重启后PCI扩展以太网端口消失问题求助
问题描述
我在Ubuntu 22.04上有两个以太网端口:一个是主板集成的,另一个是通过PCI扩展板添加的,之前分别命名为enp3s0(RTL8168d)和enp4s0(RTL8168g)。但在一次强制更新后的重启,集成的那个端口完全无法被系统检测到了。
从系统日志可以看到,之前重启时两个网卡都会被识别并重命名,但最近几次启动只显示enp4s0的相关记录,完全没有enp3s0的踪影:
Aug 13 12:14:38 lello kernel: [ 0.562099] r8169 0000:03:00.0 eth0: RTL8168d/8111d, 00:e0:ff:68:4e:8f, XID 283, IRQ 32
Aug 13 12:14:38 lello kernel: [ 0.562103] r8169 0000:03:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
Aug 13 12:14:38 lello kernel: [ 0.582409] r8169 0000:04:00.0 eth1: RTL8168g/8111g, c0:3f:d5:96:0c:7b, XID 4c0, IRQ 41
...
Aug 15 09:43:36 lello kernel: [ 0.667173] r8169 0000:04:00.0 eth0: RTL8168g/8111g, c0:3f:d5:96:0c:7b, XID 4c0, IRQ 32
Aug 15 09:43:36 lello kernel: [ 0.682630] r8169 0000:04:00.0 enp4s0: renamed from eth0
怀疑是更新导致的驱动或网卡命名问题,有没有人遇到过类似情况?或者能给些排查建议?
排查与解决建议
看起来你遇到的是内核更新后集成网卡丢失的典型问题,结合日志和硬件情况,你可以按以下步骤逐一排查:
先排除物理硬件问题:
断电后打开机箱,检查集成网卡对应的PCI插槽(或者主板集成的网卡接口)有没有松动,PCI扩展板也重新拔插一下,确保接触良好。有时候重启后的震动可能导致接触不良,这是最容易忽略但也最容易解决的问题。检查PCI设备识别情况:
开机后打开终端,运行lspci | grep Ethernet命令,看看输出里有没有RTL8168d/8111d相关的设备。如果能看到,说明硬件被系统识别了,只是驱动或命名异常;如果完全看不到,那可能是硬件损坏或者主板PCI插槽故障,需要进一步排查硬件。重新加载网卡驱动:
两个网卡都使用r8169内核驱动,试试重新加载驱动来修复可能的加载异常:sudo rmmod r8169 sudo modprobe r8169执行完后运行
ip link show,看看enp3s0有没有重新出现。切换到旧内核测试:
既然问题出在更新重启后,很可能是新内核的驱动兼容问题。重启系统时,在GRUB菜单选择「Advanced options for Ubuntu」,然后选择更新前的旧内核版本启动,看看集成网卡能不能被识别。如果旧内核下正常,说明是新内核的问题,可以暂时用旧内核,等待后续内核更新修复,或者手动安装适配的驱动。手动指定网卡命名规则:
有时候udev的网卡命名规则会出问题,你可以手动根据MAC地址指定网卡名称:- 编辑(或新建)udev规则文件:
sudo nano /etc/udev/rules.d/70-persistent-net.rules - 添加以下内容(替换成你集成网卡的MAC地址
00:e0:ff:68:4e:8f):SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:ff:68:4e:8f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="enp3s0" - 保存文件后重启系统,看看网卡能不能被正确识别并命名。
- 编辑(或新建)udev规则文件:
安装适配的DKMS驱动:
如果新内核自带的r8169驱动有兼容问题,可以尝试安装r8168的DKMS版本(针对Realtek网卡的专用驱动):sudo apt update sudo apt install dkms build-essential linux-headers-$(uname -r) sudo apt install r8168-dkms安装完成后重启系统,驱动会自动适配当前内核,试试能不能找回丢失的网卡。
备注:内容来源于stack exchange,提问作者mune72

