linux系統(tǒng)centos6.0自帶的R8169驅(qū)動(dòng)問題
linux系統(tǒng)centos6.0自帶的R8169驅(qū)動(dòng)問題
本文是linux系統(tǒng)centos 6.0自帶的R8169驅(qū)動(dòng)問題,歡迎大家閱讀借鑒。
最近用PC主板安裝了一臺(tái)centos服務(wù)器,但總是不定時(shí)死機(jī),死機(jī)前的各種負(fù)載均很低,多次測(cè)試找不出具體問題。后來發(fā)現(xiàn)原來系統(tǒng)是把R8168安裝了R8169的驅(qū)動(dòng),雖然能用,但問題多多。
ethtool -i eth0
driver: r8169
哦,集成的r8169芯片啊,不過聽說這個(gè)網(wǎng)卡在Linux下會(huì)出一些問題,從網(wǎng)上搜了下,果然好多人都說這個(gè)網(wǎng)卡CentOS自帶的驅(qū)動(dòng)不好,那就干脆換成官方的吧!
于是就上Realtek去搜索R8169的驅(qū)動(dòng),找到了,幾十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
結(jié)果在這時(shí)候出錯(cuò)了
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
后面省略。這是怎么回事?有很多未定義很多錯(cuò)誤,有網(wǎng)友告訴我要裝kernel-head還有kernel-devel ,可是我這兩個(gè)都裝了啊
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
這可怪了,有幾個(gè)做開發(fā)的朋友告訴我讓我修改驅(qū)動(dòng)源代碼一個(gè)個(gè)指定上面的那些缺少和找不到的變量,我暈還要改源代碼….. 我又一想是不是因?yàn)轵?qū)動(dòng)程序不對(duì)啊,于是 用 lspci 查看了一下
lspci |grep Ethernet
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
咦這不是 R8168B嗎!我說怎么不讓我裝驅(qū)動(dòng)呢…可是為什么系統(tǒng)會(huì)認(rèn)成了R8169呢?于是我把所有關(guān)于 R8169 的模塊和驅(qū)動(dòng)都刪掉了,重新啟動(dòng)了一下,結(jié)果發(fā)現(xiàn)系統(tǒng)仍然把他認(rèn)成 R8169,沒辦法重裝 R8168驅(qū)動(dòng)吧,在官網(wǎng)搜了下
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&
GetDown=false#2
下載最新的驅(qū)動(dòng) 版本是r8168-8.018.00,解壓縮一看,這個(gè)簡(jiǎn)單 直接給個(gè)執(zhí)行權(quán)限 然后 ./autorun.sh 全自動(dòng)執(zhí)行了,呵呵
再看看現(xiàn)在用的是哪個(gè)驅(qū)動(dòng)
ethtool -i eth0
driver: r8168
version: 8.018.00-NAPI
firmware-version:
bus-info: 0000:02:00.0
重啟了一下網(wǎng)絡(luò) ,然后讓開發(fā)的同事繼續(xù)跑測(cè)試程序,ok跑了一個(gè)小時(shí)沒有出現(xiàn)問題,在網(wǎng)上搜索的時(shí)候發(fā)現(xiàn)與我類似的問題還有很多,都是系統(tǒng)自帶R8169網(wǎng)卡驅(qū)動(dòng)造成的,建議大家如果拿到這樣的網(wǎng)卡還是重裝一下驅(qū)動(dòng)吧!
如果安裝需到make: *** /lib/modules/2.6.18-164.el5/build: No such file or
確認(rèn)當(dāng)前內(nèi)核是這個(gè)版本么,是的話安裝 kernel-devel, kernel-headers 一樣版本的軟件包 .