Ubuntu 22.04.3,内核 6.5.0-XX-generic 和 RTL8111/8168/8411 PCI Express 千兆以太网控制器

Ubuntu 22.04.3,内核 6.5.0-XX-generic 和 RTL8111/8168/8411 PCI Express 千兆以太网控制器

今天早上,我将两个22.04.3 LTS运行 HWE 的 Ubuntu 安装升级到内核6.5.0-14-generic。重启两个系统后,网卡没有RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller出现。启动到较旧的 6.2.0-39-generic 内核后,网卡工作正常。尝试重新安装r8168-dkms驱动程序时,安装驱动程序版本8.049.02失败。运行时sudo lshw -C network显示网卡为UNCLAIMED

问题是r8168-dkms默认存储库中的驱动程序运行的版本8.049.02-1ubuntu1与内核不兼容6.5.0-14-generic

$ apt-cache policy r8168-dkms
r8168-dkms:
  Installed: 8.049.02-1ubuntu1
  Candidate: 8.049.02-1ubuntu1
  Version table:
 *** 8.049.02-1ubuntu1 100
        100 /var/lib/dpkg/status
     8.049.02-1ubuntu1.2 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe i386 Packages
     8.049.02-1ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy/universe i386 Packages

当您尝试8.049.026.5.0-14-generic内核中构建驱动程序时,您会收到以下错误消息:

$ sudo dkms build r8168/8.049.02
Building module:
cleaning build area...
make -j8 KERNELRELEASE=6.5.0-14-generic -C /lib/modules/6.5.0-14-generic/build M=/var/lib/dkms/r8168/8.049.02/build..........(bad exit status: 2)
ERROR (dkms apport): binary package for r8168: 8.049.02 not found
Error! Bad return status for module build on kernel: 6.5.0-14-generic (x86_64)
Consult /var/lib/dkms/r8168/8.049.02/build/make.log for more information.

$ cat /var/lib/dkms/r8168/8.049.02/build/make.log
/var/lib/dkms/r8168/8.049.02/build/r8168_n.c:27733:24: error: implicit declaration of function ‘skb_gso_segment’; did you mean ‘skb_gso_reset’? [-Werror=implicit-function-declaration]
27733 |                 segs = skb_gso_segment(skb, features);
      |                        ^~~~~~~~~~~~~~~
      |                        skb_gso_reset

即使您更改源代码以匹配它did you mean...仍会失败。但是,驱动程序在较旧的内核8.049.02中构建得很好。6.25.15

是否有更新的驱动程序可供我使用?

PS:我不会使用r8169我的r8168芯片组的驱动程序,因为它一开始可以正常工作,但过一会儿就会出现不可预测的行为,有时甚至需要硬重启我的系统才能恢复界面。

答案1

笔记:我注意到,如果我启动 Windows 10,当我在没有硬电源循环的情况下重新启动 Ubuntu 时,NIC 将无法正常工作。这实际上是由于 Windows 中的驱动程序版本出于某种原因造成了此问题。为了解决这个问题,我重新启动 Windows 并10.69Realtek自己。现在从 Windows 重新启动回到 Ubuntu 就没有任何问题了。


驱动程序安装:

我想提交一个错误,r8168-dkms但是它表明它不是一个官方软件包。

22.04 LTS 存储库中的当前版本8.049.02r8168-dkms驱动程序似乎与内核不兼容6.5.0-14-genericdkms无法安装该驱动程序。

启动回正常工作的内核并8.052.01从以下位置下载 Realtek 驱动程序这里

ps 该autorun.sh文件未设置驱动程序,dkms需要您在下次内核更新时重新安装该驱动程序。

在安装新的驱动程序之前,我建议8.049.02从树中删除该驱动程序,这样dkms就不会尝试将其安装到会失败的较新的内核中。

sudo dkms remove r8168/8.049.02 --all

下载驱动程序后,继续并提取文件。

tar xvf r8168-8.052.01.tar.bz2

输入新创建目录。

cd r8168-8.052.01/src

为驱动程序创建一个新的内核源目录。

sudo mkdir /usr/src/r8168-8.052.01

并将所有文件复制到新目录。

sudo cp -v * /usr/src/r8168-8.052.01/

dkms.conf为驱动程序创建一个新文件。

sudo nano /usr/src/r8168-8.052.01/dkms.conf

现在将以下内容添加到文件中。

PACKAGE_NAME="r8168"
PACKAGE_VERSION="8.052.01"
BUILT_MODULE_NAME[0]="$PACKAGE_NAME"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="YES"
REMAKE_INITRD="YES"

保存文件并运行下一行来构建和安装驱动程序。

sudo dkms add r8168/8.052.01
sudo dkms build r8168/8.052.01 -k 6.5.0-14-generic
sudo dkms install r8168/8.052.01 -k 6.5.0-14-generic

确保更改上面两行的内核版本 (6.5.0-XX-generic) 以匹配您当前尝试安装的内核。

现在,当您检查时,dkms status您应该会看到新的驱动程序已安装到内核中。

$ dkms status
r8168/8.052.01, 5.15.0-91-generic, x86_64: installed
r8168/8.052.01, 6.2.0-39-generic, x86_64: installed
r8168/8.052.01, 6.5.0-14-generic, x86_64: installed

重新启动系统并启动到最新的内核,RTL8111/8168/8411 PCI Express 千兆以太网控制器应该可以正常运行。

答案2

检查内核内置的 r8169 现在是否能与控制器配合良好。清除r8168-dkms对我来说有效

答案3

下载版本 8.052.01驱动程序

执行sudo autorun.sh

重新开始需要

相关内容