Linux RTL8111/RTL8168 不能联网 / 最新版驱动下载安装

news2024/11/13 11:00:24

注: 机翻,未校对。


如何让 Realtek RTL8111/RTL8168 在 Linux 下工作

这篇文章于 2016 年 8 月在我原来的博客上发布。尽管如今 Linux 下的 RTL8111/RTL8168 网络接口的情况变得越来越稳定,但它们仍然会导致数据包丢失或网络连接不稳定等问题。

通过这个简短的指南,展示如何安装 r8168 而不是 r8169 驱动程序。如今,大多数 Linux 发行版都默认使用 r8169 驱动程序。r8168 驱动程序有时更稳定,但由于许可证限制,默认情况下未启用。本指南介绍了安装 r8168 驱动程序的两种方法。

要求

本指南假定有一个有效的网络连接。仅当无法下载包含实际 RTL8111/RTL8168 和 r8169 驱动程序的软件包时,才需要额外的网络适配器(例如,因为已经遇到大量数据包丢失 / 连接中断)。另一种方法是从另一台计算机单独下载每个软件包(r8168 驱动程序和依赖项),然后使用 U 盘传输它。但是使用 USB 以太网适配器绝对是更方便的方式。

自动方式(仅适用于 Debian 和 Ubuntu)

Debian 几年前将 r8168 驱动程序添加到他们的非自由存储库中。话虽如此,如果还没有在 Debian 安装中启用非自由存储库,那么现在就必须这样做。如果使用的是最新的 Debian 版本(在撰写本文时,最新的版本是 bookworm),必须像这样调整 /etc/apt/sources.list 文件:

deb http://deb.debian.org/debian/bookworm main contrib non-free

对于 Ubuntu,它们的非自由存储库称为 universe。在 Ubuntu 22.04 中,它很可能已经启用。可以检查 /etc/apt/sources.list,如果 * 缺少 universe* 存储库,请调整文件,使其包含如下内容:

deb http://archive.ubuntu.com/ubuntu/jammy main restricted universe

启用 non-free / universe 存储库后,可以刷新软件包列表并安装 r8168 驱动程序,如下所示:

~$ sudo apt update && sudo apt install r8168-dkms

驱动程序是针对正在运行的 Linux 内核编译的。这些软件包利用 DKMS 来执行此操作。DKMS 确保在安装 Linux 内核更新时始终重建驱动程序。根据 CPU,编译可能需要几分钟时间。编译 / 安装完成后,重新启动计算机。现在应该能够按预期使用网络接口,而不会出现任何网络问题或包丢失。还可以在命令行上检查正在使用的驱动程序:

~$ lspci -v | grep -A8 Ethernet | grep -A8 Realtek
[...]
Kernel driver in use: r8168

手动方式(适用于所有分发,不推荐)

手动方式有点复杂,我绝对不再推荐这样做。但是,如果 Linux 发行版没有以一种或另一种方式提供 r8168 驱动程序,可能会被迫走这条路。这样做的一个巨大缺点是,每次更新内核时,都必须自行重新编译驱动程序。所以请记住这一点。否则,在内核更新和系统重新启动后,网卡很可能无法工作。

为了自行编译 r8168 驱动程序,必须安装内核头文件和编译实用程序,如 gcc、make 和 configure。对于 Debian 和 Ubuntu 系统,可以像这样安装所有依赖项:

~$ sudo apt update && sudo apt install build-essentials linux-headers-$(uname -r)

下一步是下载驱动程序。Realtek 的官方主页似乎不再提供驱动程序(斐夷所非注:在翻译本文时,官方可用)。因此,必须在 GitHub 上使用 mtorromeo 提供的镜像。你可以像这样使用 wget 直接下载驱动程序(请务必先在 GitHub 上查看最新版本):

~$ wget https://github.com/mtorromeo/r8168/archive/refs/tags/8.052.01.tar.gz

必须确保将来启动机器时不会加载 r8169 驱动程序。以下命令可确保这一点:

~$ sudo sh -c 'echo blacklist r8169 >> /etc/modprobe.d/blockr8169.conf'

接下来,可以提取以前下载的驱动程序存档:

~$ tar xfvz r8168-8.052.01.tar.gz

通过提取驱动程序存档,有一个具有相同名称方案的新文件夹,可以将其更改为:

~$ cd r8168-8.052.01
  • 注意:该数字可能会更改,具体取决于将来的驱动程序版本。因此,如果需要,请不要忘记更改版本号。*

现在在正确的目录中,终于可以开始编译驱动程序了。为此,只需输入以下命令:

~/r8168-8.052.01$ sudo ./autorun.sh

然后,应该会看到如下所示的输出:

Check old driver and unload it.
rmmod r8168
Build the module and install
At main.c:222:
- SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: bss_file.c:178
sign-file: certs/signing_key.pem: No such file or directory
Backup r8169.ko
rename r8169.ko to r8169.bak
DEPMOD 4.4.0-31-generic
load module r8168
Updating initramfs. Please wait.
update-initramfs: Generating /boot/initrd.img-4.4.0-31-generic
Completed.

现在可以忽略 SSL 错误。驱动程序应已成功编译并安装到系统中。驱动程序已加载,应该可以工作。

若要确保真正使用和加载驱动程序,可以使用与上述相同的命令:

~$ lspci -v | grep -A8 Ethernet | grep -A8 Realtek
[...]
Kernel driver in use: r8168

在我的旧博客上,一位名叫 Tim 的用户也提到了 ethtool,它也有同样的作用,并帮助检查是否使用了正确的驱动程序:

~$ sudo ethtool -i enp1s0
driver: r8168
version: 8.042.00-NAPI
firmware-version:
expansion-rom-version:
bus-info: 0000:07:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
  • 注意:必须将 enp1s0 更改为网卡的设备名称。这可以是 eth0、eth1、enp2s0 等。

    如果提到 r8168,则驱动程序已正确安装,现在应该能够使用网卡,而不会丢失或中断任何包。


via: How to get an Realtek RTL8111/RTL8168 working under Linux TUXBYTE FEB 07, 2024

https://tuxbyte.com/p/how-to-get-an-realtek-rtl8111rtl8168


驱动下载

  • Realtek 官方最新驱动下载()

    https://www.realtek.com/Download/List?cate_id=584

  • GitHub - mtorromeo/r8168: Linux device driver for Realtek Ethernet controllers (unofficial mirror)

    https://github.com/mtorromeo/r8168

  • 其他型号 r 系列老驱动下载 r8168dl/files at master・bfanger/r8168dl・GitHub

    https://github.com/bfanger/r8168dl/tree/master/files


注:来自下文 csdn 博主“小怪物爱吹牛”的安装提示 :…网卡信息还有 8111,但逐个试过之后只有 8168 可以用。

ubuntu20 解决网线不能联网 RTL8111/8168/8411

这种问题一般是驱动没有正确安装。

----RTL8111/8168/8411 是一块比较坑的网卡。

1、 查看网卡信息

lspci |grep Ethernet

在这里插入图片描述
2、 对于高版本的 Ubuntu,能直接使用命令安装驱动。下面的 r8168-dkms 需根据网卡信息修改,上面的网卡信息还有 8111,但逐个试过之后只有 8168 可以用。

sudo apt install r8168-dkms

3、 测试手动能不能加载内核模块,如果 lsmod 能够显示信息,表明模块安装成功。

sudo modprobe r8168
lsmod |grep r8168

如果手动都不能加载 r8168,那就只能手动安装驱动。

a) 官网下载

在这里插入图片描述

b) 解压

tar -jxvf r8168-8.053.00.tar.bz2

c) 编译安装

cd r8168-8.053.00/src
sudo make all
cd ../
sudo ./autorun.sh

4、重启电脑,看 r8168.ko 会不会被自动加载,如果重启后下面的命令没有显示信息,表明网卡内核驱动模块不能被自动加载。

lsmod |grep r8168

5、解决模块不能被自动加载的问题,系统服务的方法更安全

sudo vim /etc/systemd/system/load-r8168.service

添加如下配置

[Unit]  
Description=Load r8168 module at boot  
After=network.target  

[Service]  
Type=oneshot  
ExecStart=/sbin/modprobe r8168  

[Install]  
WantedBy=multi-user.target

执行命令

sudo systemctl enable load-r8168.service

重启电脑,即可自动加载模块 r8168.ko


via:

  • ubuntu20 解决网线不能联网 RTL8111/8168/8411-CSDN 博客 小怪物爱吹牛 于 2024-04-18 16:15:43

    https://blog.csdn.net/naibula/article/details/137924693

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【错题集】ruby 和薯条(排序 + 二分 / 双指针)

牛客对应题目链接:ruby和薯条 (nowcoder.com) 一、分析题目 1、解法一:排序 二分。 先排序,然后枚举较⼤值,在 [1, i - 1] 区间找差值的左右端点即可。 2、解法二:排序 前缀和 双指针。 先排序; …

数据结构(Java):力扣Stack集合OJ题

1、括号匹配问题 . - 力扣(LeetCode) 1.1 思路分析 根据栈的先进后出原则,我们可以这样解决问题: 遍历字符串,遇见左括号就将左括号push入栈;遇见右括号就pop出栈,将出栈的元素和该右括号比较…

JDK14新特征最全详解

JDK 14一共发行了16个JEP(JDK Enhancement Proposals,JDK 增强提案),筛选出JDK 14新特性。 - 343: 打包工具 (Incubator) - 345: G1的NUMA内存分配优化 - 349: JFR事件流 - 352: 非原子性的字节缓冲区映射 - 358: 友好的空指针异常 - 359: Records…

游戏的无边框模式是什么?有啥用?

现在很多游戏的显示设置中,都有个比较特殊的选项“无边框”。小伙伴们如果尝试过,就会发现这个效果和全屏几乎一毛一样,于是就很欢快地用了起来,不过大家也许会发现,怎么和全屏比起来,似乎有点不够爽快&…

单例模式Singleton

设计模式 23种设计模式 Singleton 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 饿汉式 public class BankTest {public static void main(…

[图解]SysML和EA建模住宅安全系统-14-黑盒系统规约

1 00:00:02,320 --> 00:00:07,610 接下来,我们看下一步指定黑盒系统需求 2 00:00:08,790 --> 00:00:10,490 就是说,把这个系统 3 00:00:11,880 --> 00:00:15,810 我们的目标系统,ESS,看成黑盒 4 00:00:18,030 --> …

Kafka基础入门篇(深度好文)

Kafka简介 Kafka 是一个高吞吐量的分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。 1. 以时间复杂度为O(1)的方式提供消息持久化能力。 2. 高吞吐率。(Kafka 的吞吐量是MySQL 吞吐量的30…

数据结构初阶(C语言)-复杂度的介绍

在学习顺序表之前,我们需要先了解下什么是复杂度: 一,复杂度的概念 我们在进行代码的写作时,通常需要用到许多算法,而这些算法又有优劣之分,区分算法的优劣则是通过算法的时间复杂度和空间复杂度来决定。 …

【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow

一、项目介绍 眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练(‘白内障’, ‘糖尿病性视网膜病变’, ‘青光眼’, ‘正常’&…

Python+wxauto=微信自动化?

Pythonwxauto微信自动化? 一、wxauto库简介 1.什么是wxauto库 wxauto是一个基于UIAutomation的开源Python微信自动化库。它旨在帮助用户通过编写Python脚本,轻松实现对微信客户端的自动化操作,从而提升效率并满足个性化需求。这一工具的出现&…

SAP PP学习笔记26 - User Status(用户状态)的实例,订单分割中的重要概念 成本收集器,Confirmation(报工)的概述

上面两章讲了生产订单的创建以及生产订单的相关内容。 SAP PP学习笔记24 - 生产订单(制造指图)的创建_sap 工程外注-CSDN博客 SAP PP学习笔记25 - 生产订单的状态管理(System Status(系统状态)/User Status(用户状态)),物料的可用性检查,生…

语音识别概述

语音识别概述 一.什么是语音? 语音是语言的声学表现形式,是人类自然的交流工具。 图片来源:https://www.shenlanxueyuan.com/course/381 二.语音识别的定义 语音识别(Automatic Speech Recognition, ASR 或 Speech to Text, ST…

数字探秘:用神经网络解密MNIST数据集中的数字!

用神经网络解密MNIST数据集中的数字! 一. 介绍1.1 MNIST数据集简介1.2 MLP(多层感知器)模型介绍1.3 目标:使用MLP模型对MNIST数据集中的0-9数字进行分类 二.数据预处理2.1 数据集的获取与加载2.2 数据集的探索性分析(E…

编写商品列表和商品编辑和商品新增页面

addvue <template><!-- 传过来的id --> <!-- {{ $route.query.id }} --> <el-formref"FormRef"style"max-width: 600px":model"FormData":rule"rules"status-iconlabel-width"auto"class"demo-r…

【中台】数字中台建设方案(PPT)

数字中台建设要点&#xff1a; 数据采集与整合&#xff1a; 打破企业内部各个业务系统的数据隔阂&#xff0c;通过数据采集和数据交换实现数据的集中管理&#xff0c;形成统一的数据中心&#xff0c;为后续数据价值的挖掘提供基础。 利用自研或第三方ETL&#xff08;Extract, T…

最长下降序列

如何理解这个题目呢,我们可以每个人的分数放到排名上&#xff0c;然后求解最长下降序列即可 #include<bits/stdc.h> using namespace std;int n; const int N (int)1e5 5; int a[N]; int b[N]; int d[N]; int dp[N]; int t;int main() {cin >> t;while (t--) {…

排序——归并排序及排序章节总结

前面的文章中 我们详细介绍了排序的概念&#xff0c;插入排序&#xff0c;交换排序与选择排序&#xff0c;大家可以通过下面的链接再去学习&#xff1a; ​​​​​​排序的概念及插入排序 交换排序 选择排序 这篇文章就详细介绍一下另一种排序算法&#xff1a;归并排序以及…

PE文件(十)重定位表

重定位表的引入 程序加载过程 在win32下&#xff0c;每一个PE文件&#xff08;其可能由多个子PE文件组成&#xff09;在运行时&#xff0c;操作系统会给分配一个独立的4GB虚拟内存&#xff0c;内存地址从0x00000000到0xFFFFFFFF。其中低2G为用户程序空间&#xff0c;高2G为操…

【Linux】进程间通信——消息队列和信号量

目录 消息队列&#xff08;message queue&#xff09; 信号量&#xff08;Semaphore&#xff09; system V版本的进程间通信方式有三种&#xff1a;共享内存&#xff0c;消息队列和信号量。之前我们已经说了共享内存&#xff0c;那么我们来看一下消息队列和信号量以及它们之间…