LINUX 硬件如何被識別

在項目中有時候會遇見網卡明明在物理上顯示有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

 

至此完成整個硬件加載了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章