Linux 硬件管理的基础知识

本文详细介绍在Linux系统中如何识别和使用硬件驱动,通过使用工具如lspci、fdisk、dmesg等,获取硬件信息并进行驱动查找与安装。强调硬件描述应以芯片组厂商为准,而非品牌,并提供了获取硬件驱动的方法与步骤。
一、 在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提供;
    lspci有两个参数是我们常用的,-b 和-v ,lspci也会把usb接口列出来;
    # lspci -b
    分析一下这台机器中有什么设备,看主要的就行,与我们应用相关的;
    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)
    USB Controller表示的是USB接口;我们看到有四个这样的设备;我的笔记本上正好有四个USB接口;

    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)
    注:这是猫;

    01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
    注:这是网卡,芯片是8139的;

    01:05.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04)
    注:这是1394接口的信息;

    那得到这些信息有什么用处呢?如果机器中有些设备支持的不好,我们就可以根据这些信息在Google上搜索,比如我感觉我的声卡有问题,就可以根据声卡信息相关的来搜索找解决问题的办法;根据这些信息,我们也可以到硬件芯片组的官方去找答案或者驱动;

    如果想知道硬件更为详细的内容,我们可以用 lspci -v 来查看
    # lspci -v

    比如我们可以通过lspci -v来查看硬件的irq中断什么的;比如网卡不好用,是不是irq存在冲突了?如果您不知道怎么解决硬件驱动不了的情况,就要把lspci -v相应硬件的信息整段贴出来,这才是解决问题的唯一办法;所以学会提问也是极为重要的;
    有的系统发行版本,还有lsusb的工具,自己尝试一下吧;

2、存储设备查看和操作工具
------------------------------------------------------
    我们查看存储设备的工具主要有fdisk; parted; cfdisk 等;最常用也是最方便的就是fdisk; parted就当一个补充吧,这个工具目前看来并不是太成熟;

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的信息:
    # cat /proc/cpuinfo
    详细的内容还得需要您来慢慢查看;对于/proc的了解也是有必要的;

4、dmesg
------------------------------------------------------
    dmesg是一个显示内核缓冲区系统控制信息的工具;比如系统在启动时的信息会写到/var/log/
    注: dmesg工具并不是专门用来查看硬件芯片组标识的工具,但通过这个工具能让我们知道机器中的硬件的一些参数;因为系统在启动的时候,会写一些硬件相关的日志到/var/log/message* 或/var/log/boot*文件中;
    如果我们用这个工具来查看一些硬件的信息;这个工具信息量太大,的确需要耐心;
    # dmesg
    # dmesg -c
    注:清理掉缓冲区,下次开机的时候还会自动生成;

5、 hwbrowser
------------------------------------------------------
    hwbrowser是您当前硬件配置的图形化浏览器 ,这个工具是图形的。可能系统在默认的情况下没有安装。需要您安装才行。在Fedora 4.0 中,如果能用yum或ap 应该是通过如下的命令来安装;
    # yum install hwbrowser
    或
    # apt install hwbrowser
    # hwbrowser

6、lshal和hal-device-manager
------------------------------------------------------

    通过lshal和hal-device-manager 也能知道硬件相关信息,不过这个工具对新手操作起来是有点麻烦,但我还是得介绍一下:
    # lshal
    hwbrowser是lshal的图形化界;可能系统在默认的情况下没有安装,这个工具包是Fedora扩展包,需要您安装才行。在Fedora 4.0 中,如果能用yum或apt应该是通过如下的命令来安装:
    # yum install hal-device-manager
    或
    # apt install hal-device-manager
    # hal-device-manager

三、硬件驱动是由内核支持的,但驱动都存放在哪里?
    硬件驱动是必须由内核支持的,无论是我们自己安装驱动,还是内核自带的驱动都是如此。硬件驱动如果是以内核模块支持的,驱动目录位于:/lib/modules/`uname -r`/kernel/ 或 /lib/modules/`uname -r`/kernel/drivers/;

    注:只有驱动在内核中以模块的方法支持的,或者我们自己安装的驱动,驱动才位于/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搜索,大多问题还是能解决的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值