realtek 瑞昱r8168千兆网卡芯片编译安装驱动及解决出现问题
销售名称可以是:RTL8111e/8168B/8411 PCI EXPRESS 等等芯片基本上千兆的芯片都是的,说白了就是"换汤不换药".
首先下载驱动地址:
官方(选择linux r8168): https://www.realtek.com/zh-tw/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
这个目测能打开,验证码输入后,可能需要科学上网下载.未全国验证,我这边是这样的,不开科学上网,换好多浏览器都下载不了.
github下载: https://github.com/mtorromeo/r8168
安装说明文件.
<用于Realtek以太网控制器的Linux设备驱动程序>
这是针对具有PCI-Express接口的千兆以太网控制器的RealTek RTL8168B / 8111B,RTL8168C / 8111C,RTL8168CP / 8111CP,RTL8168D / 8111D,RTL8168DP / 8111DP和RTL8168E / 8111E千兆位以太网控制器发布的Linux设备驱动程序。
<要求>
-内核源代码树(受支持的Linux内核2.6.x和2.4.x)
-对于Linux内核2.4.x,此驱动程序支持2.4.20及更高版本。
-编译器/ binutils,用于内核编译
<使用正确的内核设置快速安装>
打开压缩包:
#tar vjxf r8168-8.aaa.bb.tar.bz2
转到目录:
#cd r8168-8.aaa.bb
如果您正在运行目标内核,则应该能够:
#./autorun.sh(以root或sudo身份)
您可以使用以下命令检查驱动程序是否已加载。
#lsmod | grep r8168
#ifconfig -a
如果监视器上显示的是设备名称ethX,则为linux
驱动程序已加载。然后,您可以使用以下命令激活
ethX。
#ifconfig ethX up
,其中X = 0,1,2,...
<设置网络相关信息>
1.手动设置
一个。设置机器的IP地址。
#ifconfig ethX“您计算机的IP地址”
b。设置DNS的IP地址。
在/etc/resolv.conf中插入以下配置。
名称服务器“ DNS的IP地址”
C。设置网关的IP地址。
#route添加默认gw“网关的IP地址”
2.通过在/ etc / sysconfig / network-scripts中进行配置来设置
/ ifcfg-ethX用于Redhat和Fedora,或/ etc / sysconfig / network
/ ifcfg-ethX用于SuSE。设置网络有两个示例
配置。
a。固定配置:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=ethernet
NETMASK=255.255.255.0
IPADDR=192.168.1.1
GATEWAY=192.168.1.254
BROADCAST=192.168.1.255
b。 动态配置:
DEVICE = eth0
BOOTPROTO = DHCP
ONBOOT =yes
<修改MAC地址>
有两种方法可以修改NIC的MAC地址。
1.使用ifconfig:
#ifconfig ethX hw ether YY:YY:YY:YY:YY:YY
,其中X是Linux内核分配的设备号,以及
YY:YY:YY:YY:YY:YY是用户分配的MAC地址。
2.使用ip:
# ip link set ethX address YY:YY:YY:YY:YY:YY
,其中X是Linux内核分配的设备号,以及
YY:YY:YY:YY:YY:YY是用户分配的MAC地址。
<强制链接状态>
1.插入驱动程序时强制链接状态。
如果用户在路径〜/ r8168中,则可以强制链接状态
进入以下5种模式之一。
#insmod ./src/r8168.ko speed = SPEED_MODE duplex = DUPLEX_MODE autoneg = NWAY_OPTION
,哪里
SPEED_MODE = 1000 表示1000Mbps
= 100 表示100Mbps
= 10 表示10Mbps
DUPLEX_MODE = 0 表示半双工
= 1 代表全双工
NWAY_OPTION = 0,表示自动协商关闭(真强制)
= 1 表示自动协商(向后强制)
例如:
#insmod ./src/r8168.ko speed=100 duplex=0 autoneg=1
将强制PHY以100Mpbs半双工(正向力)运行。
2.使用ethtool强制链接状态。
a。首先插入驱动程序。
b。确保/ sbin中存在ethtool。
C。按以下命令强制链接状态。
#ethtool -s ethX speed SPEED_MODE duplex DUPLEX_MODE autoneg NWAY_OPTION
,哪里
SPEED_MODE = 1000 表示1000Mbps
= 100 表示100Mbps
= 10 表示10Mbps
DUPLEX_MODE = half 半双工
=full 全双工
NWAY_OPTION =off,表示自动协商关闭(真强制)
= on(自动协商开启)(向后强制)
例如:
#ethtool -s eth0 speed 100 duplex full autoneg on
将强制PHY以100Mpbs全双工(正向力)运行。
<巨型帧>
传输数据包大小大于1500字节的巨型帧,请通过以下命令更改mtu。
#ifconfig ethX mtu MTU
,其中X = 0,1,2,...,并且MTU由用户配置。
RTL8168B / 8111B支持最大4 KB的巨型帧。
RTL8168C / 8111C和RTL8168CP / 8111CP支持超大帧,最大大小为6 KB。
RTL8168D / 8111D支持最大9 kBytes的巨型帧
安装包安装
导入elrepo后可以使用 yum install -y kmod-r8168 安装驱动 参考: http://elrepo.org/tiki/tiki-index.php
也可以直接下载 kmod-r8168安装包使用yum localinstall ,rpm -ivh安装.
yum install https://elrepo.org/linux/elrepo/el7/x86_64/RPMS/kmod-r8168-8.048.00-1.el7_7.elrepo.x86_64.rpm
编译安装
基于最新的rpm系统内核或者自行修改编译的内核安装.
yum -y install git pciutils net-tools.x86_64
yum install kernel-devel kernel-headers
yum install gcc gcc-c++ autoconf automake
如果还有正常能使用的网卡
git clone https://github.com/mtorromeo/r8168.git
cd r8168
./autorun.sh
或者
wget 看你情况可以先下载好文件到相应目录然后切换至需要驱动的系统或者挂载U盘安装
tar -xjvf r8168-8.048.03.tar.bz2 版本号可能要修改
cd r8168-8.048.03
检查一下是否加载了驱动或者驱动是否正常
# lsmod | grep r8168
或者
# lspci -v
modinfo r8168 #查看驱动
modprobe r8168 #测试驱动
出现问题一:
如果报错
Makefile:972: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
centos 6/7需要安装 yum install elfutils-libelf-devel
Ubuntu:apt install libelf-dev
问题二:
出现:"cc1: some warnings being treated as errors"
这个是因为编译系统内核的编译工具和现在系统使用的编译工具不一致或者说是系统内核编译工具更新导致的.特别是使用最新的内核.
解决更新使用新版的gcc.
gcc -v
# 升级gcc到5.3及以上,如下:
升级到gcc 9.3:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
当然编译源码安装gcc也可以,配置不能太差,我在1G内存下加了2Gsawp安装gcc10.1版本失败.具体安装步骤,以后更新或者重新开文详细描述.
安装好的驱动在
/lib/modules/5.7.8-1.el7.elrepo.x86_64/kernel/drivers/net/ethernet/realtek
5.7.8-1.el7.elrepo.x86_64为你机器安装的内核版本.
驱动只针对内核,与发行版关联较小,linux都可以装,仅需注意系统个别命令.
实测r8168-8.048.03.tar.bz2在kernel 5.8.1上正常使用,说明只有 up to 5.6.