欢迎光临
我们一直在努力

解决ubuntu22.04 server安装Realtek RTL8125网卡驱动问题

ubuntu22.04 server安装Realtek RTL8125网卡驱动

  • 1 卸载驱动
    • 1.1 查看网卡型号
    • 1.2 查看网卡驱动
    • 1.3 删除网卡驱动
    • 1.4 卸载驱动模块
    • 1.5 查看是否卸载成功
    • 1.6 禁用 r8169 模块
    • 1.7 更新initramfs
    • 1.8 确认禁用成功
  • 2 安装驱动
    • 2.1 查看内核版本
    • 2.2 下载驱动
    • 2.3 拷贝到ubuntu22.04并解压
    • 2.4 安装dkms
    • 2.5 创建dkms.conf文件
    • 2.6 编译驱动
    • 2.7 !!!报错
      • 2.7.1 遇到问题
      • 2.7.2 尝试方法
      • 2.7.3 最终解决方案
  • 3 参考博客

1 卸载驱动

1.1 查看网卡型号

lspci | grep net # 输出网卡型号:RTL8125 2.5GbE Controller

1.2 查看网卡驱动

lspci -k # 输出系统内核的网卡驱动版本:Kernel modules: r8169

1.3 删除网卡驱动

modinfo r8169 | grep filename # 查看r8169.ko路径
sudo rm path/r8169.ko # 删除r8169.ko

1.4 卸载驱动模块

rmmod r8169

1.5 查看是否卸载成功

lsmod | grep r8169 # 没有任何输出,就是卸载成功

1.6 禁用 r8169 模块

# 创建一个黑名单配置文件,防止内核自动加载r8169驱动
echo "blacklist r8169" | sudo tee /etc/modprobe.d/blacklist-r8169.conf

1.7 更新initramfs

sudo update-initramfs -u
# 确保在系统启动时r8169驱动不会被加载

1.8 确认禁用成功

lsmod | grep r8169 # 没有任何输出,就是卸载成功

2 安装驱动

2.1 查看内核版本

uname -r # 输出本机内核版本5.15.0-119-generic

2.2 下载驱动

realtek驱动链接 根据内核版本选择对应驱动,点击下载

2.3 拷贝到ubuntu22.04并解压

sudo tar -xjvf r8125-9.016.01.tar.bz2 -C /usr/src

2.4 安装dkms

# Q: 为什么要安装dkms?
# A: 每当系统更新或升级内核时,内核会发生变化,原本编译好的内核模块(.ko 文件)可能会与新内核不兼容,导致无法加载。使用 DKMS后,每次内核更新后,驱动也会重新构建,不需要手动重新编译该模块。

sudo apt install dkms

2.5 创建dkms.conf文件

cd /usr/src/r8125-9.016.01/
vim dkms.conf

# 在dkms.conf中写入以下配置内容
PACKAGE_NAME=Realtek_r8125 # 指定正在安装的模块的名称,可以是任意名
PACKAGE_VERSION=9.016.01 # 指定模块的版本号
DEST_MODULE_LOCATION=/updates/dkms # 使用默认的模块安装路径
BUILT_MODULE_NAME=r8125 # 指定要编译的模块名称,应该与实际模块名称一致
BUILT_MODULE_LOCATION=src/ # 指明了模块源码的相对路径
MAKE="make -C src/ all" # DKMS在构建模块时执行的命令
CLEAN="make -C src/ clean" # 删除编译过程中产生的中间文件、目标文件等
AUTOINSTALL="yes" # 设置为yes则编译完成后自动安装

2.6 编译驱动

cd /usr/src/r8125-9.016.01/
sudo dkms add -m r8125 -v 9.016.01 # 向DKMS注册驱动的源码目录
sudo dkms build -m r8125 -v 9.016.01 # 编译驱动模块
sudo dkms install -m r8125 -v 9.016.01 # 安装编译好的模块
sudo depmod -a # 更新模块依赖
sudo modprobe r8125 # 加载驱动模块
lsmod | grep r8125 # 查看模块是否加载
ip link show # 查看设备信息

正常情况,以上流程不报错,就结束了,可以连上网了,爽! 但是成功的道路一定不是一帆风顺的,大部分人在sudo dkms build -m r8125 -v 9.016.01 这一步就报错了,如有类似的错误,可以参考解决。

2.7 !!!报错

2.7.1 遇到问题

# 这一步编译报错
sudo dkms build -m r8125 -v 9.016.01

# 报错内容
Kernel preparation unnecessary for this kernel. Skipping…
Building module:
cleaning build area…
make -j32 KERNELRELEASE=5.15.0-119-generic -C src all…(bad exit status: 2)
ERROR (dkms apport): binary package for r8125: 9.016.01 not found
Error! Bad return status for module build on kernel: 5.15.0-119-generic (x86_64)
Consult /var/lib/dkms/r8125/9.016.01/build/make.log for more information.

2.7.2 尝试方法

# 从DKMS中完全移除r8125驱动模块的所有版本
sudo dkms remove -m r8125 -v 9.016.01 –all
# 手动删除内核模块构建路径下与r8125驱动相关的目录
sudo rm -rf /lib/modules/$(uname -r)/updates/dkms/r8125/

# 重新编译
sudo dkms build -m r8125 -v 9.016.01

# wtf还是报错,查找各种解决办法,尝试各种方案,仍然不行!
# autorun.sh运行都可以,为什么dkms不行?
# dkms不行就无法自动管理!
# 经过千辛万苦,终于找到了方法!!!

2.7.3 最终解决方案

1. 修改配置文件

PACKAGE_NAME="r8125"
PACKAGE_VERSION="9.016.01"
DEST_MODULE_LOCATION="/updates/dkms"
BUILT_MODULE_NAME="r8125"
BUILT_MODULE_LOCATION="src/"
MAKE="KERNELDIR=/lib/modules/\\${kernelver}/build make -C src/ all"
CLEAN="KERNELDIR=/lib/modules/\\${kernelver}/build make -C src/ clean"
AUTOINSTALL="yes"

2. 移除旧版本

# 从DKMS中完全移除r8125驱动模块的所有版本
sudo dkms remove -m r8125 -v 9.016.01 –all
# 手动删除内核模块构建路径下与r8125驱动相关的目录
sudo rm -rf /lib/modules/$(uname -r)/updates/dkms/r8125/

3. 再次编译

sudo dkms add -m r8125 -v 9.016.01 # 向DKMS注册驱动的源码目录
sudo dkms build -m r8125 -v 9.016.01 # 编译驱动模块

4. 看到如下所示,就是编译成功 在这里插入图片描述 5. 安装(这一步基本不会报错)

sudo dkms install -m r8125 -v 9.016.01 # 安装编译好的模块
sudo depmod -a # 更新模块依赖
sudo modprobe r8125 # 加载驱动模块
lsmod | grep r8125 # 查看模块是否加载
ip link show # 查看设备信息

6. 查看有线网卡名,动态获取ip

ip addr # 查看有线网卡名
sudo dhclient enp3s0 # 动态获取ip,以enp3s0为例,具体以ip addr输出为准

!!!—————-至此可以上网了—————-!!! Q1:为什么报错? A1:因为make命令没有正确地找到内核的构建目录,显式指定 KERNELDIR,让make命令能够正确地找到内核的构建目录,就编译成功了! Q2:为什么要显示指定目录? A2:因为DKMS在临时隔离环境中构建,KERNELDIR是一个环境变量,它的作用是告诉Makefile内核构建系统的位置,${kernelver}这是DKMS系统内置的变量,在构建时会被自动替换为当前正在构建的内核版本

3 参考博客

  • https://blog.csdn.net/t279470720/article/details/145074832
  • https://blog.csdn.net/m0_46569169/article/details/147089228
  • 赞(0)
    未经允许不得转载:171主机测评 » 解决ubuntu22.04 server安装Realtek RTL8125网卡驱动问题
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址