今天早上我安装的 2 个 Ubuntu 都22.04.3 LTS运行 HWE 升级到了 Kernel 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\nr8168-dkms:\n Installed: 8.049.02-1ubuntu1\n Candidate: 8.049.02-1ubuntu1\n Version table:\n *** 8.049.02-1ubuntu1 100\n 100 /var/lib/dpkg/status\n 8.049.02-1ubuntu1.2 500\n 500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages\n 500 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe i386 Packages\n 8.049.02-1ubuntu1 500\n 500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages\n 500 http://us.archive.ubuntu.com/ubuntu jammy/universe i386 Packages\nRun Code Online (Sandbox Code Playgroud)\n当您尝试8.049.02在中构建驱动程序时6.5.0-14-generic内核中构建驱动程序时,您会收到以下错误消息:
$ sudo dkms build r8168/8.049.02\nBuilding module:\ncleaning build area...\nmake -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)\nERROR (dkms apport): binary package for r8168: 8.049.02 not found\nError! Bad return status for module build on kernel: 6.5.0-14-generic (x86_64)\nConsult /var/lib/dkms/r8168/8.049.02/build/make.log for more information.\n\n$ cat /var/lib/dkms/r8168/8.049.02/build/make.log\n/var/lib/dkms/r8168/8.049.02/build/r8168_n.c:27733:24: error: implicit declaration of function \xe2\x80\x98skb_gso_segment\xe2\x80\x99; did you mean \xe2\x80\x98skb_gso_reset\xe2\x80\x99? [-Werror=implicit-function-declaration]\n27733 | segs = skb_gso_segment(skb, features);\n | ^~~~~~~~~~~~~~~\n | skb_gso_reset\nRun Code Online (Sandbox Code Playgroud)\n即使您更改源代码以匹配它did you mean...仍然会失败。但是,该驱动程序在较旧的内核8.049.02中构建得很好。6.25.15
我可以使用更新的驱动程序吗?
\nPS 我不会为r8169我的r8168芯片组使用该驱动程序,因为它一开始工作正常,但过了一会儿就会出现不可预测的行为,有些甚至需要硬重启我的系统才能恢复接口。
注意:我注意到,如果我启动到 Windows 10,那么当我在没有硬重启的情况下启动回 Ubuntu 时,NIC 将无法正常工作。这实际上是由于 Windows 中的驱动程序版本由于某种原因造成此问题。为了解决这个问题,我重新启动到 Windows,并10.69从Realtek自己下载并安装了驱动程序。现在从 Windows 重新启动到 Ubuntu 就没有问题了。
驱动安装:
我会提交一个错误r8168-dkms,但它指出它不是官方包。
当前 22.04 LTS 存储库中的版本8.049.02或r8168-dkms驱动程序似乎与6.5.0-14-generic内核不兼容,dkms无法安装该驱动程序。
启动回工作内核并8.052.01从此处下载 Realtek 驱动程序。
ps 该autorun.sh文件未设置驱动程序,因此dkms需要您在下一次内核更新时重新安装驱动程序。
在安装新驱动程序之前,我建议8.049.02从树中删除该驱动程序,这样就dkms不会尝试将其安装到新的内核中,否则会失败。
sudo dkms remove r8168/8.049.02 --all
Run Code Online (Sandbox Code Playgroud)
下载驱动程序后,继续提取文件。
tar xvf r8168-8.052.01.tar.bz2
Run Code Online (Sandbox Code Playgroud)
输入创建的新目录。
cd r8168-8.052.01/src
Run Code Online (Sandbox Code Playgroud)
为驱动程序创建一个新的内核源目录。
sudo mkdir /usr/src/r8168-8.052.01
Run Code Online (Sandbox Code Playgroud)
并将所有文件复制到新目录中。
sudo cp -v * /usr/src/r8168-8.052.01/
Run Code Online (Sandbox Code Playgroud)
dkms.conf为驱动程序创建一个新文件。
sudo nano /usr/src/r8168-8.052.01/dkms.conf
Run Code Online (Sandbox Code Playgroud)
现在将以下内容添加到文件中。
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"
Run Code Online (Sandbox Code Playgroud)
保存文件并运行下一行来构建和安装驱动程序。
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
Run Code Online (Sandbox Code Playgroud)
确保更改上面 2 行中的内核版本 (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
Run Code Online (Sandbox Code Playgroud)
重新启动系统并启动到最新的内核,RTL8111/8168/8411 PCI Express 千兆位以太网控制器应该可以正常运行。
| 归档时间: |
|
| 查看次数: |
2912 次 |
| 最近记录: |