前言
前幾個星期,自己攢了一台電腦,主板是Gigabit的Z77-DS3H,系統裝了CentOS 6.4。郁悶的是,這個系統不支持主板自帶點的網卡。沒辦法,自己一個人折騰了好久,終於被我解決了,在此過程中各種碰壁,故特此記錄。
正文
問題出現
如圖:
這是我剛安裝好系統之后的截圖。在終端可以發現只有一個lo連接而沒有eth0,而在右上角,聯網圖標下面的提示上顯示了“No network device availabal”。由此判斷,是系統沒有合適的驅動所致。
查看設備
使用以下命令查看網卡信息:
1 lspci | grep -i eth
顯示的結果為:
02:00.0 Ethernet controller: Atheros Communications Inc. AR8161 Gigabit Ethernet (rev 10)
在CentOS論壇上找了一下,發現了一則帖子。在#6的回復里面,我找到了可行的解決方案。
之前試過了無數次,簡直是個噩夢。。。
在那則回復里面,作者要我們去這里下載驅動。
我這里直接給出文件的鏈接,大家可以用wget或者其他下載工具直接下載:
http://fichiers.touslesdrivers.com/34178/alx-linux-v2.0.0.6.rar
下載下來的文件名是alx-linux-v2.0.0.6.rar
根據您在看這則文章時使用的操作系統:
Windows系統
建議安裝7Z這個壓縮軟件,他可以將文件夾或多個文件打包並壓縮為tar.gz/bz2格式,(當然也支持rar格式,而且和rar不同,他是免費軟件。。。這里當成是對7Z的推廣好了)當然也支持將tar.gz/bz2等文件解壓縮。
這樣一來,如果你下載的是rar文件,也可以將其解壓后重新壓縮為tar格式,然后用U盤之類的存儲器轉移到Linux下進行編譯安裝。不然,Linux一般是解壓不了rar文件的,但是網上大部分的壓縮文件都是rar格式了。
Linux系統
可能是有其他網卡,所以還能聯網,還能看到這篇文章。或者就是兩台Linux主機,用其中一台可以上網的來下載。
下載到tar之類的格式的不用擔心,下載到rar格式的,用yum搜索一下rar好了。
啊,悲劇了,下載來的文件是rar格式的。我是在windows下下載的,所以用7Z解壓再壓縮,然后用手機轉移過去(因為沒有U盤Orz...)
編譯和安裝
編譯前提
你要安裝了kernel-headers 和 kernel-devel。當然,還有gcc。
不過悲劇的是,CentOS默認是沒有安裝好gcc的。如果你不確定是否有安裝gcc的話,請直接在終端里輸入gcc,如果沒有安裝,就會提示bash: gcc: comman not found。
要是真的悲劇了,gcc沒有安裝怎么辦?我是插入一張bin DVD,然后更改了yum的配置文件,讓yum的軟件源變成本地的光盤。這個方法有機會以后再介紹。
要安裝kernel-headers 和 kernel-devel,你需要以下兩條命令:
1 sudo yum install kernel-headers 2 sudo yum install kernel-devel
以上兩個只需要安裝一次,以后編譯其他驅動就不用再安裝了。
編譯
將下載下來的壓縮包解壓后,出現一個目錄(alx-linux-v2.0.0.6),我們進入這個目錄之后,直接執行make就可以了。
之后,我們再進入當前目錄的src目錄,用ls可以發現,有一個叫做alx.ko的文件,這個就是我們要用的網卡驅動了。
安裝驅動
執行一下pwd,我們應該是在xxxx/alx-linux-v2.0.0.6/src目錄下。接下來,我們只要再把那個alx.ko復制到指定目錄下就可以了。
這里直接上圖:
只要按照上面顯示的步驟來,馬上就會有效果了——請看此圖右上角,從原來的紅叉叉變成綠圈圈了。
命令:
1 sudo mkdir /lib/modules/$(uname -r)/kernrl/net/wireled #這里的$(uname -r)會替換成系統當前的版本號 2 sudo cp alx.ko /lib/modules/$(uname -r)/kernrl/net/wireled #將驅動文件拷貝到指定位置 3 sudo depmod -a #檢測模塊的相依性,lib下驅動文件改變后最好執行一下 4 sudo modprobe alx #在默認位置上加載了alx.ko
至於lsmod | grep alx是為了查看該驅動是加載成功。如果該驅動沒有被加載的話,那么就什么都不顯示。
在上圖,執行modprobe之前和之后有明顯不同。
顯示:alx 90654 0 說明該驅動成功被載入了。
重啟之后,該驅動也還在。所以,不用像那個論壇里那個人寫的那么麻煩了。
解決問題
好了,用不管是用ifconfig看,還是用右上角的圖標看,問題似乎都完全解決了。接下來,就隨你怎么配置網卡了。我是配置了撥號連接。
后記
- 如果載入驅動成功后,使用ifconfig還無法看到eth0的話,使用:
1 ifconfig -a #這樣就可以發現eth0了(eth0是第一個,如果你有其他網卡,就會有eth1,2,3...) 2 sudo ifconfig eth0 up #根據上面看到的替換eth0,一般是eth0
-
要想編譯驅動之類的東西,必須先安裝kernel-headers 和 kernel-devel
- 查看設備信息,使用:
1 lspci #加上 -v 選項更完整