最近用PC主板安装了一台centos服务器,但总是不定时死机,死机前的各种负载均很低,多次测试找不出具体问题。后来google搜索到一遍文章http://www.linuxidc.com/Linux/2010-05/25880.htm,发现原来系统真的是把R8168安装了R8169的驱动,虽然能用,但问题多多。
ethtool -i eth0
driver: r8169
哦,集成的r8169芯片啊,不过听说这个网卡在Linux下会出一些问题,从网上搜了下,果然好多人都说这个网卡CentOS自带的驱动不好,那就干脆换成官方的吧!
于是就上Realtek去搜索R8169的驱动,找到了,几十K很快就down下来,http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=4&PFid=4&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8110S-32/RTL8110SB%28L%29/RTL8169SB%28L%29/RTL8169SC%28L%29%3Cbr%3ERTL8169
解压缩,lsmod |grep r8169 然后 rmmod r8169 删除之后 再make clean modules
结果在这时候出错了
make clean modules
make -C src/ clean
make[1]: Entering directory `/soft/r8169-6.012.00/src’
rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers rset modules.order Module.markers
make[1]: Leaving directory `/soft/r8169-6.012.00/src’
make -C src/ modules
make[1]: Entering directory `/soft/r8169-6.012.00/src’
make -C /lib/modules/2.6.18-128.el5/build SUBDIRS=/soft/r8169-6.012.00/src modules
make[2]: Entering directory `/usr/src/kernels/2.6.18-128.el5-x86_64′
CC [M] /soft/r8169-6.012.00/src/r8169_n.o
/soft/r8169-6.012.00/src/r8169_n.c: In function ‘rtl8169_alloc_rx_skb’:
/soft/r8169-6.012.00/src/r8169_n.c:3012: error: ‘uintptr_t’ undeclared (first use in this function)
/soft/r8169-6.012.00/src/r8169_n.c:3012: error: (Each undeclared identifier is reported only once
…………
后面省略。这是怎么回事?有很多未定义很多错误,有网友告诉我要装kernel-head还有kernel-devel ,可是我这两个都装了啊
代码如下 | 复制代码 |
rpm -qa |grep kernel kernel-devel-2.6.18-164.15.1.el5 kernel-devel-2.6.18-128.el5 kernel-headers-2.6.18-164.15.1.el5 kernel-2.6.18-128.el5 |
这可怪了,有几个做开发的朋友告诉我让我修改驱动源代码一个个指定上面的那些缺少和找不到的变量,我晕还要改源代码….. 我又一想是不是因为驱动程序不对啊,于是 用 lspci 查看了一下
lspci |grep Ethernet
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
咦这不是 R8168B吗!我说怎么不让我装驱动呢…可是为什么系统会认成了R8169呢?于是我把所有关于 R8169 的模块和驱动都删掉了,重新启动了一下,结果发现系统仍然把他认成 R8169,没办法重装 R8168驱动吧,在官网搜了下
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&
GetDown=false#2
下载最新的驱动 版本是r8168-8.018.00,解压缩一看,这个简单 直接给个执行权限 然后 ./autorun.sh 全自动执行了,呵呵
再看看现在用的是哪个驱动
代码如下 | 复制代码 |
ethtool -i eth0 driver: r8168 version: 8.018.00-NAPI firmware-version: bus-info: 0000:02:00.0 |
重启了一下网络 ,然后让开发的同事继续跑测试程序,ok跑了一个小时没有出现问题,在网上搜索的时候发现与我类似的问题还有很多,都是系统自带R8169网卡驱动造成的,建议大家如果拿到这样的网卡还是重装一下驱动吧!
如果安装需到make: *** /lib/modules/2.6.18-164.el5/build: No such file or
确认当前内核是这个版本么,是的话安装 kernel-devel, kernel-headers 一样版本的软件包