Linux硬體管理的基礎知識(轉)

gugu99發表於2007-08-10
Linux硬體管理的基礎知識(轉)[@more@]

  摘要:本文主要解說在Linux中,硬體裝置的表示方法及檢視工具等;最主要的目的是當我們遇到硬體問題時,懂得如何根據硬體資訊來解決問題;

  一、在Linux 系統中,對硬體判別的標識的依據;

  在 LinuxSir.Org 討論區,我們經常看到有些弟兄這樣來描述自己的硬體“我的顯示卡是XXX牌子的,Linux 不支援怎麼辦?”。其實這樣描述是最差的,大家也根本沒有辦法提供幫助;因為Linux對硬體的識別是以為晶片組的廠商為依據的,而非硬體的品牌;因為現在硬體廠商大多是OEM的,也就是說硬體的主晶片是他們生產不了的,但他們會從硬體主晶片廠商拿來,焊接在自己的電路板上,這就是OEM 的過程;

  無論什麼硬體都是以晶片組的廠商為標識的,而不是什麼市場看到的這個品牌,那個品牌的;舉個例子,我們在市場上看到有各種各樣的顯示卡,其實看一下他們的晶片,大多是ATI和 NVIDIA的,所有的ATI和NVIDIA的驅動都是ATI和NVIDIA開發出來的。所以我們提問的時候,要把硬體的晶片說出來,晶片是驅動的唯一標識,而不是品牌!!!

  所以我們要找硬體的驅動時,我們一定要根據硬體主晶片的資訊來找相關的驅動;

  二、在Linux中檢視硬體資訊的工具;

  在Linux 中,並不是沒有工具可以檢視硬體的晶片資訊,應該說Linux的工具能把硬體資訊檢視的更清楚;下面介紹幾個常用的工具;我們最常用的工具還是lspci ;其它的工具只是瞭解一下;

  1、lspci 列出所有PCI 裝置;

  lspci - list all PCI devices ,主要是有來列出機器中的PCI 裝置,比如音效卡、顯示卡、貓、網路卡等,主機板整合裝置也能列出來;lspci 是讀取 hwdata 資料庫,hwdata 由軟體包 hwdata 提供;大約有如下檔案;

  [beinan@localhost ~]# rpm -ql hwdata-0.158-1

  /etc/hotplug/blacklist

  /etc/pcmcia

  /etc/pcmcia/config

  /usr/X11R6/lib/X11/Cards

  /usr/share/doc/hwdata-0.158

  /usr/share/doc/hwdata-0.158/COPYING

  /usr/share/doc/hwdata-0.158/LICENSE

  /usr/share/hwdata

  /usr/share/hwdata/CardMonitorCombos

  /usr/share/hwdata/Cards

  /usr/share/hwdata/MonitorsDB

  /usr/share/hwdata/pci.ids

  /usr/share/hwdata/pcitable

  /usr/share/hwdata/upgradelist

  /usr/share/hwdata/usb.ids

  lspci 有兩個引數是我們常用的,-b 和-v ,lspci 也會把usb介面列出來;

  舉例:

  [root@localhost beinan]# lspci -b

  00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

  00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

  00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

  00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)

  00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)

  00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)

  00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)

  00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)

  00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)

  00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)

  00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)

  00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)

  00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)

  00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)

  00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)

  02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

  02:09.0 CardBus bridge: Texas Instruments Texas Instruments PCIxx21/x515 Cardbus Controller

  02:09.2 FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller

  02:09.3 Unknown mass storage controller: Texas Instruments Texas Instruments PCIxx21 Integrated FlashMedia Controller

  02:09.4 Class 0805: Texas Instruments Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD)

  分析一下這臺機器中有什麼裝置,看主要的就行,與我們應用相關的;

  00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)

  00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02) 注:這是顯示卡;

  USB Controller 表示的是USB 介面;我們看到有三個這樣的裝置;我的筆記本上正好有三個USB 介面;

  Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) 注:這是音效卡;

  Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03) 注:這是貓;

  Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 注:這是網路卡,晶片是8139的;

  FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller 注:這是1394介面的資訊;事實上我的筆記本也有這樣的介面;

  那得到這些資訊有什麼用處呢?如果機器中有些裝置支援的不好,我們就可以根據這些資訊在Google 上搜尋,比如我感覺我的音效卡有問題,就可以根據音效卡資訊相關的來搜尋找解決問題的辦法;根據這些資訊,我們也可以到硬體晶片組的官方去找答案或者驅動;

  如果想知道硬體更為詳細的內容,我們可以用 lspci -v 來檢視;

  [root@localhost beinan]# lspci -v

  比如我們可以透過 lspci -v 來檢視硬體的irq中斷什麼的;比如網路卡不好用,是不是irq 存在衝突了?如果您不知道怎麼解決硬體驅動不了的情況,就要把 lspci -v 相應硬體的資訊整段貼出來,這才是解決問題的唯一辦法;所以學會提問也是極為重要的;

  有的系統發行版本,還有lsusb 的工具,自己嘗試一下吧;

  2、儲存裝置檢視和操作工具;

  我們檢視儲存裝置的工具主要有 fdisk ;parted ;cfdisk 等;最常用也是最方便的就是fdisk ;parted 就當一個補充吧,這個工具目前看來並不是太成熟;

  請參考:

  《Linux 檢視磁碟分割槽、檔案系統、使用情況的命令和相關工具介紹》

  《例項解說 fdisk 使用方法》

  3、透過檢視/proc 目錄的相應檔案獲取一些硬體資訊;

  我們在檢視 /etc/fstab 時,會注意到這樣一行;

  /dev/proc /proc proc defaults 0 0

  proc 看起來象是一個檔案系統,其實他並不是一個真正的檔案系統 , 它是“proc - process information pseudo-filesystem”,譯成中文大概的意思是“程式資訊偽裝檔案系統”呵呵,這是我翻譯的,有可能不對,請多多指正;

  “The proc filesystem is a pseudo-filesystem which is used as an interface to kernel data

  structures. It is commonly mounted at /proc. Most of it is read-only, but some files allow

  kernel variables to be changed.”

  我再來亂譯一下然後再根據/proc 的內容自己理解理解。proc 檔案系統做為核心kernel 資料結構的介面,把kernel 的一些資訊(比如硬體資訊,包括CPU 、網路卡、顯示卡、記憶體、檔案系統、SCSI 裝置 ....)寫到 proc 檔案系統中,proc被mont 到 /proc 目錄;/proc 目錄中有大資料大多檔案是隻讀的,但一些資料是根據核心的變化而變化的;/proc 目錄中的資料是經常變動的,對於系統中的每個程式都有一個PID;都可以在/proc 中找到;我們也可以透過 ps -aux |more 來檢視程式;

  我們可以透過 cat 命令來讀取/proc 目錄下的檔案,比如cpu的資訊;

  [root@localhost beinan]# cat /proc/cpuinfo

  詳細的內容還得需要您來慢慢檢視;對於 /proc 的瞭解也是有必要的;

  4、dmesg

  dmesg 是一個顯示核心緩衝區系統控制資訊的工具;比如系統在啟動時的資訊會寫到/var/log/

  注:dmesg 工具並不是專門用來檢視硬體晶片組標識的工具,但透過這個工具能讓我們知道機器中的硬體的一些引數;因為系統在啟動的時候,會寫一些硬體相關的日誌到 /var/log/message* 或 /var/log/boot* 檔案中;

  如果我們用這個工具來檢視一些硬體的資訊;這個工具資訊量太大,的確需要耐心;

  [root@localhost beinan]# dmesg

  [root@localhost beinan]# dmesg -c 注:清理掉緩衝區,下次開機的時候還會自動生成;

  5、 hwbrowser

  hwbrowser 是 您當前硬體配置的圖形化瀏覽器 ,這個工具是圖形的。可能系統在預設的情況下沒有安裝。需要您安裝才行。在Fedora 4.0 中,如果能用yum 或apt 應該是透過如下的命令來安裝;

  [root@localhost beinan]# yum install hwbrowser

  或

  [root@localhost beinan]# apt install hwbrowser

  [root@localhost beinan]# hwbrowser

  當然您也可以透過rpmfind.net 或者freshrpms.net 上尋找rpm 包來安裝

  [root@localhost beinan]# rpm -ivh hwbrowser*.rpm

  我建議您最好是透過軟體包更新工具yum 和apt來安裝,這樣能自動解決依賴關係;

  6、lshal 和 hal-device-manager

  透過 lshal 和hal-device-manager 也能知道硬體相關資訊,不過這個工具對新手操作起來是有點麻煩,但我還是得介紹一下;

  [root@localhost beinan]# lshal

  hwbrowser 是 lshal 的圖形化界;可能系統在預設的情況下沒有安裝,這個工具包是Fedora 擴充套件包,需要您安裝才行。在Fedora 4.0 中,如果能用yum 或apt 應該是透過如下的命令來安裝;

  [root@localhost beinan]# yum install hal-device-manager

  或

  [root@localhost beinan]# apt install hal-device-manager

  [root@localhost beinan]# hal-device-manager

  當然您也可以透過rpmfind.net 或者freshrpms.net 上尋找rpm 包來安裝

  [root@localhost beinan]# rpm -ivh hal-device-manager*.rpm

  我建議您最好是透過軟體包更新工具yum 和apt來安裝,這樣能自動解決依賴關係;

  三、不同的硬體有不同的配置工具和與之相應的配置檔案;

  不同的硬體有不同的配置工具,也有與之相應的配置檔案;比如關於顯示器和顯示卡的配置檔案是/etc/X11/xorg.conf ,對於老的Linux版本應該是/etc/X11/X86Config 或 X86Config-4 ,xorg 或 X86的配置檔案還包括滑鼠、鍵盤等在X桌面環境下的配置和控制等;

  音效卡的配置檔案是/etc/modprobe.conf 或 /etc/modules.conf ;

  檔案系統的配置檔案是 /etc/fstab ;

  音效卡的配置工具,一般情況下是alsaconf

  當然不同的發行版也有相應的硬體配置或管理 工具,比如Fedora Core 4.0 有如下的硬體配置或管理工具;

  [root@localhost beinan]# system-config-mouse

  [root@localhost beinan]# system-config-network-tui

  [root@localhost beinan]# gnome-system-monitor

  [root@localhost beinan]# system-config-network

  [root@localhost beinan]# system-config-printer-gui

  [root@localhost beinan]# system-config-soundcard

  [root@localhost beinan]# setup

  當然這些圖形化的工具並不是萬能的,他們的功能還是有極大的侷限性;所以在硬體配置上,大多還是透過文字模式來操作的;

  四、硬體驅動是由核心支援的,但驅動都存放在哪裡?

  硬體驅動是必須由核心支援的,無論是我們自己安裝驅動,還是核心自帶的驅動都是如此。硬體驅動如果是以核心模組支援的,驅動目錄位於: /lib/modules/核心版本/kernel/目錄 或 /lib/modules/核心版本/kernel/drivers 目錄中;

  [root@localhost beinan]# uname -r

  2.6.11-1.1369_FC4

  [root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel

  arch crypto drivers fs lib net sound

  注:只有驅動在核心中以模組的方法支援的,或者我們自己安裝的驅動,驅動才位於 /lib/modules/相應的目錄;如果是直接置入核心的,不會出現在/lib/modules驅動相關的目錄;

  五、硬體不被系統支援怎麼辦?

  如果一個Linux 系統不支援您的硬體,解決的辦法無非是有兩種,一種是下載驅動自己安裝,Linux的驅動大多是開源社群開發的,廠商提供的比較少;有時也可能要重編核心,主要看驅動內部的說明檔案怎麼說了。因為驅動本來是要核心支援的,編譯核心也極為正常;

  值得注意的是:如果我們要重新編譯核心,最好把硬體情況摸清楚了,比如滑鼠、光碟機、軟碟機、USB 裝置;硬碟、檔案系統... ... 都要仔細的檢視;

  請參考:

  後記:

  Linux 對硬體的支援目前的情況來看是要比前幾年好多了,比如音效卡、網路卡、顯示卡(非3D加速,如果是3D加速的,要下載廠商驅動,如果廠商不提供,那大多是沒有辦法了,因為廠商不公開硬體的相關引數,開源社群也沒有辦法開發,對不對?);對於有些硬體還是需要我們來自己安裝驅動或編譯核心來解決;

  Linux對硬體的驅動的開發,開源社群是相當積極的,但廠商很少提供非Windows的驅動,大多數的Linux的驅動都是開源社群奉獻的;有人可能會說Windows的硬體驅動最容易,但我不是這麼認為,我有一聲ISA介面的音效卡,在windows 98 和winme 中發出怪聲,在windows 2000更是沒有驅動。但在Linux中卻支援的非常好。 呵。。。

  Linux 對硬體並不是大家原來所說的,越老越舊的硬體跑起來最好,Linux對新裝置的支援,可能廠家剛放出來產品,開源社群就有人研究了。解決辦法也會在開源社群可以找到;但有些硬體廠商不會提供驅動的開發引數、資訊之類的,所以開源社群有時對這樣的硬體也是無奈,但這樣的裝置目前看來是比較少;大多硬體都支援Linux ;

  如果您遇到硬體相關的問題,不妨透過我上面所說的來找線索解決,就目前來看也沒有太多的問題。只要仔細一點,細點心,學會用Google 搜尋,大多問題還是能解決的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939760/,如需轉載,請註明出處,否則將追究法律責任。

相關文章