在項目中有時候會遇見網卡明明在物理上顯示有2塊,在系統上只看到一塊。這種情況延伸到系統中如何識別一個硬件,到其發揮作用。
和windows一樣,一個硬件要首先別識別,識別之後可以加載驅動,然後正常工作。
在linux中,有一個命令kudzu,這個命令檢查是否這個硬件能被系統識別,如果這個都沒發現,說明硬件出問題了。
例kudzu --probe --class=network lspci | grep "Ethernet" 這裏面顯示能看到幾個網卡。
linux系統識別之後。會自動在系統中裏面內核裏找相就驅動,
/lib/modules/release/kernel/drivers,p 這個目錄裝了系統自帶的很多驅動,如果很不幸這個硬件比較
偏僻,系統裏沒有對應的驅動,這是你要從廠家那裏下一個驅動進行安裝和編譯。
例子來說明:
如果很不幸的,您使用的是比較罕見的一些網卡,或者是 Linux 核心支持不夠的網卡,以致於在安裝 Linux 時,並無法檢測到網卡,那也不用擔心,我們可以使用較爲簡單的核心模塊編譯來支持這張網卡。下面以筆者的3Com的3CR990-TX-97 網卡爲例(一款具有安全特性網卡)看看如何進行模塊編譯。首先在其網站http://www.3com.com/infodeli/tools/nic/linuxdownload.htm 下載合適你使用內核版本的相關驅動程序,這裏以2.4內核爲例。
#wegt http://www.3com.com/infodeli/tools/nic/3c990-1.0.0a.tar.gz
另外在開始編譯核心模塊之前,因爲驅動程序需要配合核心來編譯,所以會使用到 kernel source 或者是 kernel header 的數據,此外,也需要編譯器 ( compiler ) 的幫助,因此,先確定您的 Linux 系統當中已經下列軟件的存在 :kernel-source 、kernel 、gcc 、make。
#tar zxvf 3c990-1.0.0a.tar.gz
#make
此時會產生3c990.o 驅動模塊。然後使用命令拷貝到相應地方然後查看加載是否正常。
#modprobe 3c990 ********加載改驅動
#cp 3c990.o /lib/modules/2.4.20-8/kernel/drivers/net
# depmod -a ********depmod -a的輸出/lib/modules/version/modules.dep全部模塊。
然後使用lsmod 命令檢查加載情況,如果一切正常的話。可以讓系統啓動時自動加載該模塊:
#echo “alias eth0 3c990”>;>; /etc/modules.conf *****寫你硬件別名,方便人來識別。
$modprobe -l
至此完成整個硬件加載了。