来自:LinuxSir.Org
摘要:本文主要解说在Linux中,硬件设备的表示方式及查看工具等;最主要的目的是当我们遇见硬件问题时蓝牙拨号器 linux驱动,懂得怎样按照硬件信息来解决问题;
一、在Linux系统中,对硬件判断的标示的根据;
在LinuxSir.Org讨论区,我们常常见到有些弟兄这样来描述自己的硬件“我的显示卡是XXX牌子的,Linux不支持如何办?”。虽然这样描述是最差的,你们也根本没有办法提供帮助;由于Linux对硬件的辨识是以为芯片组的厂商为根据的,而非硬件的品牌;由于现在硬件厂商大多是OEM的,也就是说硬件的主芯片是她们生产不了的,但她们会从硬件主芯片厂商用来redhat linux 9.0,点焊在自己的电路板上,这就是OEM的过程;
无论哪些硬件都是以芯片组的厂商为标示的,而不是哪些市场见到的这个品牌,那种品牌的;举个反例,我们在市场上看见有各类各样的主板,虽然看一下他们的芯片,大多是ATI和NVIDIA的,所有的ATI和NVIDIA的驱动都是ATI和NVIDIA开发下来的。所以我们提问的时侯,要把硬件的芯片说下来,芯片是驱动的惟一标识,而不是品牌!!!
所以我们要找硬件的驱动时,我们一定要按照硬件主芯片的信息来找相关的驱动;
二、在Linux中查看硬件信息的工具;
在Linux中,并不是没有工具可以查看硬件的芯片信息,应当说Linux的工具能把硬件信息查看的更清楚;下边介绍几个常用的工具;我们最常用的工具还是lspci;其它的工具只是了解一下;
1、lspci列举所有PCI设备;
lspci-listallPCIdevices,主要是有来列举机器中的PCI设备,例如声卡、显卡、猫、网卡等,显卡集成设备也能列下来;lspci是读取hwdata数据库,hwdata由软件包hwdata提供;大概有如下文件;
[beinan@localhost~]#rpm-qlhwdata-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@localhostbeinan]#lspci-b
00:00.0Hostbridge:IntelCorporation82852/82855GM/GME/PM/GMVProcessortoI/OController(rev02)
00:00.1Systemperipheral:IntelCorporation82852/82855GM/GME/PM/GMVProcessortoI/OController(rev02)
00:00.3Systemperipheral:IntelCorporation82852/82855GM/GME/PM/GMVProcessortoI/OController(rev02)
00:02.0VGAcompatiblecontroller:IntelCorporation82852/855GMIntegratedGraphicsDevice(rev02)
00:02.1Displaycontroller:IntelCorporation82852/855GMIntegratedGraphicsDevice(rev02)
00:1d.0USBController:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)USBUHCIController#1(rev03)
00:1d.1USBController:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)USBUHCIController#2(rev03)
00:1d.2USBController:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)USBUHCIController#3(rev03)
00:1d.7USBController:IntelCorporation82801DB/DBM(ICH4/ICH4-M)USB2EHCIController(rev03)
00:1e.0PCIbridge:IntelCorporation82801MobilePCIBridge(rev83)
00:1f.0ISAbridge:IntelCorporation82801DBM(ICH4-M)LPCInterfaceBridge(rev03)
00:1f.1IDEinterface:IntelCorporation82801DBM(ICH4-M)IDEController(rev03)
00:1f.3SMBus:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)SMBusController(rev03)
00:1f.5Multimediaaudiocontroller:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)AC'97AudioController(rev03)
00:1f.6Modem:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)AC'97ModemController(rev03)
02:00.0Ethernetcontroller:RealtekSemiconductorCo.,Ltd.RTL-8139/8139C/8139C+(rev10)
02:09.0CardBusbridge:TexasInstrumentsTexasInstrumentsPCIxx21/x515CardbusController
02:09.2FireWire(IEEE1394):TexasInstrumentsTexasInstrumentsOHCICompliantIEEE1394HostController
02:09.3Unknownmassstoragecontroller:TexasInstrumentsTexasInstrumentsPCIxx21IntegratedFlashMediaController
02:09.4Class0805:TexasInstrumentsTexasInstrumentsPCI6411,PCI6421,PCI6611,PCI6621,PCI7411,PCI7421,PCI7611,PCI7621SecureDigital(SD)
剖析一下这台机器中有哪些设备,看主要的就行,与我们应用相关的;
00:02.0VGAcompatiblecontroller:IntelCorporation82852/855GMIntegratedGraphicsDevice(rev02)
00:02.1Displaycontroller:IntelCorporation82852/855GMIntegratedGraphicsDevice(rev02)注:这是显示卡;
USBController表示的是USB插口;我们见到有三个这样的设备;我的电脑上刚好有三个USB插口;
Multimediaaudiocontroller:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)AC'97AudioController(rev03)注:这是声卡;
Modem:IntelCorporation82801DB/DBL/DBM(ICH4/ICH4-L/ICH4-M)AC'97ModemController(rev03)注:这是猫;
Ethernetcontroller:RealtekSemiconductorCo.,Ltd.RTL-8139/8139C/8139C+(rev10)注:这是网卡,芯片是8139的;
FireWire(IEEE1394):TexasInstrumentsTexasInstrumentsOHCICompliantIEEE1394HostController注:这是1394插口的信息;事实上我的电脑也有这样的插口;
那得到这种信息有哪些好处呢?假如机器中有些设备支持的不好,我们就可以按照这种信息在Google上搜索,例如我觉得我的声卡有问题,就可以按照声卡信息相关的来搜索找解决问题的办法;按照这种信息,我们也可以到硬件芯片组的官方去找答案或则驱动;
假如想晓得硬件更为详尽的内容,我们可以用lspci-v来查看;
[root@localhostbeinan]#lspci-v
例如我们可以通过lspci-v来查看硬件的irq中断哪些的;例如网卡不好用,是不是irq存在冲突了?倘若您不晓得如何解决硬件驱动不了的情况,就要把lspci-v相应硬件的信息整段贴下来,这才是解决问题的惟一办法;所以学会提问也是极为重要的;
有的系统发行版本,还有lsusb的工具,自己尝试一下吧;
2、存储设备查看和操作工具;
我们查看储存设备的工具主要有fdisk;parted;cfdisk等;最常用也是最便捷的就是fdisk;parted就当一个补充吧,这个工具目前看来并不是太成熟;
请参考:
《Linux查看c盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说fdisk使用方式》
3、通过查看/proc目录的相应文件获取一些硬件信息;
我们在查看/etc/fstab时,会注意到这样一行;
/dev/proc/procprocdefaults00
proc看上去象是一个文件系统,虽然他并不是一个真正的文件系统,它是“proc-processinformationpseudo-filesystem”,译成英文大约的意思是“进程信息伪装文件系统”呵呵,这是我翻译的,有可能不对,请多多见谅;
“Theprocfilesystemisapseudo-filesystemwhichisusedasaninterfacetokerneldata
structures.Itiscommonlymountedat/proc.Mostofitisread-only,butsomefilesallow
kernelvariablestobechanged.”
我再来乱译一下之后再依据/proc的内容自己理解理解。proc文件系统做为内核kernel数据结构的插口,把kernel的一些信息(例如硬件信息,包括CPU、网卡、显示卡、内存、文件系统、SCSI设备....)讲到proc文件系统中,proc被mont到/proc目录;/proc目录中有大数据大多文件是只读的,但一些数据是按照内核的变化而变化的;/proc目录中的数据是时常变动的,对于系统中的每位进程都有一个PID;都可以在/proc中找到;我们也可以通过ps-aux|more来查看进程;
我们可以通过cat命令来读取/proc目录下的文件,例如cpu的信息;
[root@localhostbeinan]#cat/proc/cpuinfo
详尽的内容还得须要您来渐渐查看;对于/proc的了解也是有必要的;
4、dmesg
dmesg是一个显示内核缓冲区系统控制信息的工具;例如系统在启动时的信息会讲到/var/log/
注:dmesg工具并不是专门拿来查看硬件芯片组标示的工具,但通过这个工具能让我们晓得机器中的硬件的一些参数;由于系统在启动的时侯,会写一些硬件相关的日志到/var/log/message*或/var/log/boot*文件中;
假如我们用这个工具来查看一些硬件的信息;这个工具信息量太大,的确须要耐心;
[root@localhostbeinan]#dmesg
[root@localhostbeinan]#dmesg-c注:清除掉缓冲区,上次开机的时侯都会手动生成;
5、hwbrowser
hwbrowser是您当前硬件配置的图形化浏览器,这个工具是图形的。可能系统在默认的情况下没有安装。须要您安装才行。在Fedora4.0中,倘若能用yum或apt应当是通过如下的命令来安装;
[root@localhostbeinan]#yuminstallhwbrowser
或
[root@localhostbeinan]#aptinstallhwbrowser
[root@localhostbeinan]#hwbrowser
其实您也可以通过或则上找寻rpm包来安装
[root@localhostbeinan]#rpm-ivhhwbrowser*.rpm
我建议您最好是通过软件包更新工具yum和apt来安装,这样能手动解决依赖关系;
6、lshal和hal-device-manager
通过lshal和hal-device-manager也能晓得硬件相关信息,不过这个工具对菜鸟操作上去是有点麻烦,但我还是得介绍一下;
[root@localhostbeinan]#lshal
hwbrowser是lshal的图形化界;可能系统在默认的情况下没有安装,这个工具包是Fedora扩充包,须要您安装才行。在Fedora4.0中,倘若能用yum或apt应当是通过如下的命令来安装;
[root@localhostbeinan]#yuminstallhal-device-manager
或
[root@localhostbeinan]#aptinstallhal-device-manager
[root@localhostbeinan]#hal-device-manager
其实您也可以通过或则上找寻rpm包来安装
[root@localhostbeinan]#rpm-ivhhal-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
其实不同的发行版也有相应的硬件配置或管理工具,例如FedoraCore4.0有如下的硬件配置或管理工具;
[root@localhostbeinan]#system-config-mouse
[root@localhostbeinan]#system-config-network-tui
[root@localhostbeinan]#gnome-system-monitor
[root@localhostbeinan]#system-config-network
[root@localhostbeinan]#system-config-printer-gui
[root@localhostbeinan]#system-config-soundcard
[root@localhostbeinan]#setup
其实这种图形化的工具并不是万能的,她们的功能还是有极大的局限性;所以在硬件配置上,大多还是通过文本模式来操作的;
四、硬件驱动是由内核支持的,但驱动都储存在那里?
硬件驱动是必须由内核支持的,无论是我们自己安装驱动,还是内核自带的驱动都是这么。硬件驱动假如是以内核模块支持的,驱动目录坐落:/lib/modules/内核版本/kernel/目录或/lib/modules/内核版本/kernel/drivers目录中;
[root@localhostbeinan]#uname-r
2.6.11-1.1369_FC4
[root@localhostbeinan]#ls/lib/modules/2.6.11-1.1369_FC4/kernel
archcryptodriversfslibnetsound
注:只有驱动在内核中以模块的方式支持的,或则我们自己安装的驱动,驱动才坐落/lib/modules/相应的目录;假如是直接置入内核的,不会出现在/lib/modules驱动相关的目录;
五、硬件不被系统支持如何办?
假如一个Linux系统不支持您的硬件,解决的办法无非是有两种,一种是下载驱动自己安装,Linux的驱动大多是开源社区开发的,厂商提供的比较少;有时也可能要重编内核,主要看驱动内部的说明文件如何说了。由于驱动原本是要内核支持的,编译内核也极为正常;
值得注意的是:假如我们要重新编译内核,最好把硬件情况摸透楚了,例如键盘、光驱、软驱、USB设备;硬碟、文件系统......都要仔细的查看;
请参考:
自序:
Linux对硬件的支持目前的情况来看是要比前几年很多了,例如声卡、网卡、显示卡(非3D加速,倘若是3D加速的,要下载厂商驱动,假如厂商不提供,那大多是没有办法了,由于厂商不公开硬件的相关参数,开源社区也没有办法开发,对不对?);对于有些硬件还是须要我们来自己安装驱动或编译内核来解决;
Linux对硬件的驱动的开发,开源社区是相当积极的,但厂商甚少提供非Windows的驱动,大多数的Linux的驱动都是开源社区奉献的;有人可能会说Windows的硬件驱动最容易,但我不是那么觉得,我有一声ISA插口的声卡,在windows98和winme中发出吼声,在windows2000更是没有驱动。但在Linux中却支持的特别好。呵。。。
Linux对硬件并不是你们原先所说的,越老越旧的硬件跑上去最好,Linux对新设备的支持,可能厂家刚放下来产品,开源社区就有人研究了。解决办法也会在开源社区可以找到;但有些硬件厂商不会提供驱动的开发参数、信息之类的,所以开源社区有时对这样的硬件也是无奈蓝牙拨号器 linux驱动,但这样的设备目前看来是比较少;大多硬件都支持Linux;
倘若您遇见硬件相关的问题,不妨通过我前面所说的来找线索解决,就目前来看也没有太多的问题。只要仔细一点,细茶点linux运维招聘,学会用Google搜索,大多问题还是能解决的。