Linux硬體管理的基礎知識(轉)
摘要:本文主要解說在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 嵌入式基礎(2)---硬體基礎知識
- 伺服器的基礎軟硬體知識伺服器
- [轉]Linux基礎知識Linux
- Linux的圖形化桌面管理→目錄管理的基礎知識(轉)Linux
- linux基礎知識Linux
- Linux磁碟管理基礎知識全彙總Linux
- 硬體知識
- 用JAVA轉換簡繁體的基礎知識 (轉)Java
- HTML基礎知識(轉)HTML
- 【轉】JavaScript物件的基礎知識JavaScript物件
- Linux基礎知識(Ubuntu)LinuxUbuntu
- 交換機基礎知識(轉)
- korn shell基礎知識(轉)
- Linux下Shell基礎知識深入淺出(轉)Linux
- oracle架構的基礎知識(轉)Oracle架構
- linux基礎知識大綱Linux
- linux 基礎知識彙總Linux
- 軟體專案管理Follow Me--軟體專案管理基礎知識專案管理
- Linux驅動入門基礎基礎知識Linux
- 裸裝置基礎知識(轉)
- 加密和 PKI 基礎知識 (轉)加密
- Java基礎知識_記憶體Java記憶體
- 軟體測試基礎知識
- node記憶體基礎知識記憶體
- 報表軟體基礎知識
- Go語言:包管理基礎知識Go
- 基礎知識6——建立和管理角色
- HTML 基礎知識(特殊字元的轉義)HTML字元
- 執行緒的基礎知識(轉載)執行緒
- linux基礎知識整理(備忘)Linux
- Linux shell基礎知識_8(下)Linux
- Linux系統基礎知識整理Linux
- Linux基礎知識題解答(二)Linux
- Linux基本知識與基礎命令Linux
- 基礎知識
- 程式猿必備的Linux基礎知識Linux
- 超全面的Linux基礎知識的梳理Linux
- LUA的基礎知識