关于Centos7自带网卡驱动r8169重装为r8168的经验(网卡:RTL8111/8168/8411)

centos7降级网卡驱动r8168 ,经过整整一天半的尝试,基本把全网的都试了一遍,现在成功装好。
linux内核版本是3.10,编译器版本gcc为4.8.5.

查看linux系统信息

看网卡驱动

lspci |grep net

发现网卡名称是

网卡是Realtek的网卡,版本是RTL8111/8168/8411

查看当前eth0使用网卡驱动版本:

ethtool -i eth0

drive:r8169 代表驱动是r8169,而我们的网卡是r8168.现在需要安装

重点

网上的各种博客都是说去官网下载。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
***但是你会发现,各种报错。***下面说下我的安装过程。

升级gcc版本至12

首先必须升级gcc版本,我是直接升级到gcc 12(个人猜测是自带的gcc版本较低导致编译失败)。这个编译过程非常的浪费时间,下载后进行编译,建议晚上睡觉前编译,一觉醒来就好了。
具体的升级到gcc12的教程参考这篇博文。连接

下载较低版本的驱动。

版本下载链接:链接
里面有安装教程,也就是这个

解压安装:

tar -jxvf r8168-8.050.03.tar.bz2
cd r8168-8.050.03
#解压后有一个README文件,发现已经写好脚本了,直接执行脚本安装,简单
./autorun.sh
果然,事情不会那么顺利,这里发现无法直接编译通过。报了三处错误,如下图所示:
在这里插入图片描述

2.1编译错误处理
2.1.1、‘ether_addr_copy’重定义
根据报错提示的文件及行数,编辑文件:r8168.h,找到53行。
在这里插入图片描述

这里需要修改第52行内容,根据系统内核版本修改,我这个是3.10.0

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
改为:

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
2.1.2、初始值设定项里有未知的字段‘ndo_change_mtu’
先查看系统内核:

cat /usr/src/kernels/3.10.0-1160.el7.x86_64/include/linux/netdevice.h |grep ndo_change_mtu
在这里插入图片描述

发现有这个字段:ndo_change_mtu_rh74 ,修改r8168_n.c文件的第26768行,把ndo_change_mtu修改为ndo_change_mtu_rh74

.ndo_change_mtu = rtl8168_change_mtu,
改为

.ndo_change_mtu_rh74 = rtl8168_change_mtu,
在这里插入图片描述

2.1.3、‘struct net_device’没有名为‘last_rx’的成员
这个错误,直接注释掉即可,修改r8168_n.c文件的第29487行,将改行注释掉
在这里插入图片描述

修改完成后,继续编译:

在这里插入图片描述

没有报错,查看网卡驱动版本:

在这里插入图片描述

改过来了,重启后,发现系统加载的还是r8169,查了资料发现,Centos7版本替换驱动文件后,需要执行dracut --force命令来更新initrd/initramfs,以防止加载旧版本的驱动。

在这里插入图片描述

执行完后,重启系统。查看网卡驱动信息:
在这里插入图片描述

加载的是r8168,这样,即使eth0/eth1不插网线,开机界面也不会提示网卡信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值