歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS自帶R8169驅動與R8168網卡之間的煩惱

CentOS自帶R8169驅動與R8168網卡之間的煩惱

日期:2017/2/28 16:36:34   编辑:Linux教程

前幾周我裝了5台高性能PC機用來性能測試,網卡是板載的並沒有太在意。這周開始做測試了,開始跑測試程序的時候總出問題,沒跑一會兒服務器就卡死了。開始開發的同事以為是測試程序的問題,開始從頭到尾找問題(多好的同事啊,先從自己身上挑毛病)^_^。可是後來發現不對啊,程序沒問題。開始來找我讓我看看是不是系統哪裡出毛病了,於是我讓他們重新執行測試程序不斷的給服務器加壓。果然沒過一會兒5台機器裡的一台就卡住了,如果用ping 檢查發現還是能通的,不過延遲會上萬……
奇怪的是我直接接上顯示器登錄機器的時候發現 機器負載並不高,而且各種資源都很閒,這是為什麼?再ping 別的機器,延遲也是上萬。第一反應是網卡有問題,重啟了一下網絡 /etc/init.d/network restart 再ping 一切正常,拷貝了一個大文件,10MB/s 的速度拷貝了5分鐘,並沒有發現問題。這是為什麼呢?先看看網卡類型吧,
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徹底消失
vim /etc/modprobe.conf
alias eth0 r8168 #這裡原來是 r8169 把他改成r8168就好了

重啟了一下網絡 ,然後讓開發的同事繼續跑測試程序,ok跑了一個小時沒有出現問題,在網上搜索的時候發現與我類似的問題還有很多,都是系統自帶R8169網卡驅動造成的,建議大家如果拿到這樣的網卡還是重裝一下驅動吧!
看來有時候Linux系統自帶的驅動雖然能用但也會帶來一些麻煩,O(∩_∩)O~

Copyright © Linux教程網 All Rights Reserved