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

📅 发布时间:2026/7/6 8:26:35 👁️ 浏览次数:
解决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 更新initramfs1.8 确认禁用成功2 安装驱动2.1 查看内核版本2.2 下载驱动2.3 拷贝到ubuntu22.04并解压2.4 安装dkms2.5 创建dkms.conf文件2.6 编译驱动2.7 报错2.7.1 遇到问题2.7.2 尝试方法2.7.3 最终解决方案3 参考博客1 卸载驱动1.1 查看网卡型号lspci|grepnet# 输出网卡型号RTL8125 2.5GbE Controller1.2 查看网卡驱动lspci-k# 输出系统内核的网卡驱动版本Kernel modules: r81691.3 删除网卡驱动modinfo r8169|grepfilename# 查看r8169.ko路径sudormpath/r8169.ko# 删除r8169.ko1.4 卸载驱动模块rmmod r81691.5 查看是否卸载成功lsmod|grepr8169# 没有任何输出就是卸载成功1.6 禁用 r8169 模块# 创建一个黑名单配置文件防止内核自动加载r8169驱动echoblacklist r8169|sudotee/etc/modprobe.d/blacklist-r8169.conf1.7 更新initramfssudoupdate-initramfs-u# 确保在系统启动时r8169驱动不会被加载1.8 确认禁用成功lsmod|grepr8169# 没有任何输出就是卸载成功2 安装驱动2.1 查看内核版本uname-r# 输出本机内核版本5.15.0-119-generic2.2 下载驱动realtek驱动链接根据内核版本选择对应驱动点击下载2.3 拷贝到ubuntu22.04并解压sudotar-xjvfr8125-9.016.01.tar.bz2-C/usr/src2.4 安装dkms# Q: 为什么要安装dkms# A: 每当系统更新或升级内核时内核会发生变化原本编译好的内核模块.ko 文件可能会与新内核不兼容导致无法加载。使用 DKMS后每次内核更新后驱动也会重新构建不需要手动重新编译该模块。sudoaptinstalldkms2.5 创建dkms.conf文件cd/usr/src/r8125-9.016.01/vimdkms.conf# 在dkms.conf中写入以下配置内容PACKAGE_NAMERealtek_r8125# 指定正在安装的模块的名称可以是任意名PACKAGE_VERSION9.016.01# 指定模块的版本号DEST_MODULE_LOCATION/updates/dkms# 使用默认的模块安装路径BUILT_MODULE_NAMEr8125# 指定要编译的模块名称应该与实际模块名称一致BUILT_MODULE_LOCATIONsrc/# 指明了模块源码的相对路径MAKEmake -C src/ all# DKMS在构建模块时执行的命令CLEANmake -C src/ clean# 删除编译过程中产生的中间文件、目标文件等AUTOINSTALLyes# 设置为yes则编译完成后自动安装2.6 编译驱动cd/usr/src/r8125-9.016.01/sudodkmsadd-mr8125-v9.016.01# 向DKMS注册驱动的源码目录sudodkms build-mr8125-v9.016.01# 编译驱动模块sudodkmsinstall-mr8125-v9.016.01# 安装编译好的模块sudodepmod-a# 更新模块依赖sudomodprobe r8125# 加载驱动模块lsmod|grepr8125# 查看模块是否加载iplinkshow# 查看设备信息正常情况以上流程不报错就结束了可以连上网了爽但是成功的道路一定不是一帆风顺的大部分人在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 KERNELRELEASE5.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_NAMEr8125 PACKAGE_VERSION9.016.01 DEST_MODULE_LOCATION/updates/dkms BUILT_MODULE_NAMEr8125 BUILT_MODULE_LOCATIONsrc/ MAKEKERNELDIR/lib/modules/\${kernelver}/build make -C src/ all CLEANKERNELDIR/lib/modules/\${kernelver}/build make -C src/ clean AUTOINSTALLyes2. 移除旧版本# 从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. 查看有线网卡名动态获取ipip 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/145074832https://blog.csdn.net/m0_46569169/article/details/147089228