cnhnln 发表于 2003-9-4 23:02:52

linux下实现硬件监测

win下实现硬件监测的软件不胜枚举,主板的驱动光盘里往往也带有主板厂商自己制作的工具。可以方便的实现电压,温度,风扇转速等的实时监测。
其实linux下只需要借助一个软件Lm_sensors( http://secure.netroedge.com/~lm78)也可以实现相同的功能。这是个字符终端下的工具。当然,它也有各种图形界面的。例如:功能强大的gkrellm( http://web.wt.net/~billw/gkrellm/gkrellm.html)KDE自带的KSIM( http://ksim.sourceforge.net);专职的ksensors( http://ksensors.sourceforge.net)类似的还有很多,但无一例外是用的Lm_sensors。
下面以就FC1为例介绍一下Lm_sensors的安装使用。

Lm_sensors是以驱动的形式存在的,依赖于I2C总线驱动(Philips极力推动的微控制应用中使用的低速串行总线协议)。它与内核版本有直接的关系。下面就分开说

1.Lm_sensors for 2.4

2.4系列内核的官方发布不包括i2c和lm_sensors驱动,所以你如果要使用2.4的官方原码编译内核的话就要在 http://secure.netroedge.com/~lm78/download.html分别下载i2c和lm_sensors(目前的最新版都是2.8.3)。

在绝大部分发行版中,厂商已经为内核打过了补丁并编译成了模块(没有编译进内核),所以只需要加载相应模块就行了。
以Fedora core 1为例,看一下有没有/lib/modules/2.4.22-1.2115.nptl/kernel/drivers/sensors和/lib/modules/2.4.22-1.2115.nptl/kernel/drivers/i2c这两个目录就可以确定你的系统是否支持(当然不能是空目录)。
确认后在终端下运行
sensors-detect
(如果提示没有这个命令,下载安装 http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/Fedora/RPMS/lm_sensors-2.8.1-1.i386.rpm ,
http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/Fedora/RPMS/lm_sensors-devel-2.8.1-1.i386.rpm ,也可以在安装光盘里找。其它系统也类似)
按提示进行,基本是一路回车。最后会得到类似
To make the sensors modules behave correctly, add these lines to
/etc/modules.conf:

#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----

To load everything that is needed, add this to some /etc/rc* file:

#----cut here----
# I2C adapter drivers
modprobe i2c-i801
modprobe i2c-isa
# I2C chip drivers
modprobe eeprom
modprobe w83781d
# sleep 2 # optional
/usr/local/bin/sensors -s # recommended
#----cut here----
的信息。按提示分别写到/etc/rc.local和/etc/conf.modules里,然后重新启动就行了。

注:这里的显示信息依个人硬件的不同而不同。我的主板我的主板是epox 3pta, 南桥为82801,I/O芯片为Winbond W83627HF-AW(它除了负责输入输出外还负责监测系统)。所以要加载i2c-i801和w83781d模块才能进行正常的监测。i2c-dev和i2c-isa则是每个系统都必须的。eeprom模块根据DRAM的SPD芯片读取内存的相关参数(你也可用这一功能来检测商家卖给你的内存是否是假冒的)。
你主板所用的硬件监测芯片可以在主板厂商的网站或说明书中寻找。

以后只要在终端下运行
sensors
就可以显示硬件状态了。想要实时监测就要用到gkrellm、KSIM、ksensors等工具了。

如果你用的不是发行商提供的内核而是从官方网站下载的2.4系列内核,那你就要自己安装驱动了。
不论是i2c还是lm_sensors都有两种安装方法,一种就是直接编译安装(此时只能作为模块挂装),另一种就是作为补丁打进内核(此时既可以编译成模块,在启动时挂装。也可以直接编译进内核)。
如果你不想重编译内核,那就用第一种方法。下载i2c、lm_sensors后分别解压缩。
./configure
make
make install
就完成了。运行
sensors-detect
修改配置文件,既可使用
sensors
第二种方法(打补丁)解压后,分别运行
mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux
(官方站点:http://secure.netroedge.com/~lm78/index.html )上有一些已经做好的patch和rpm包,方便使用。但是一定要选对)编译时就会有相关选项。但是lm_sensors仍然要装,否则没有sensors-detectsensors命令

编译内核时,如果你不知道你用的硬件监测芯片是什么,那就全编译成模块吧。如果你知道你的是什么,而且经常用的话,就可以编译进内核(我个人喜欢把常用的都编译进内核)。
那个“i2c-isa”并不是真实的isa总线,也不依赖它。即便你便以内核时没有选择isa,也可以正常工作。(但是2.6系列的内核必须打开isa总线的支持才可以)
2.4内核“I2C support”里的“I2C /proc interface(required for hardware sensors)”一定要打开,Y或者M都行。
2.6内核“I2C support”里的“I2C device interface”

这里是Lm_sensors支持的监测芯片的列表: http://secure.netroedge.com/~lm78/supported.html

2.Lm_sensors for 2.6

2.6的官方( http://www.kernel.org)发布已经包括了i2c和lm_sensors的驱动,照常编译就行。只要在“Character devices”的“I2C support”下的“I2C Hardware Bus support”和“I2C Hardware Sensors Chip support”里选择并编译相应的驱动就行。
然后下载Lm_sensors的新版,解压,安装:
make user
make user_install
进入根目录,新建/sys目录
cd /
mkdir /sys

在你的/etc/fstab文件里新加一行
none                  /sys                  sysfs   defaults      0 0
重启才可正常运行sensors

注:2.6.0内核必须Lm_sensors 2.8.2以上版本,2.6.1需要Lm_sensors 2.8.3以上

附:I2C由飞利浦公司开发并推出,是一种多端控制能力的双线双向串行数据总线系统,用于替代标准的并行总线,能连接各种集成电路和功能模块。
SMBus是System Management Bus(系统管理总线)的缩写,1995年由intel提出,应用于移动PC和桌面PC系统中的低速率通讯接口。SMBus基于I2C的操作原理,主要是希望通过一条廉价并且功能强大的总线(两条线组成)来控制主板上的设备并收集相应的信息,从而代替独立的控制总线。这不但可以减少芯片的引脚数目,还可以保证今后的可扩充性。使用SMBus可以监测和配置内存(即SPD功能);设备可以提供制造商信息,告诉系统它的型号或部件号;报告不同类别的错误;拔除内存条时将相应的DIMM插槽的时钟信号关闭;检测电池低电压状态等。目前SMBus已经发展到了2.0版。





很少写东西,由于技术和文笔所限难免有疏漏之处,还望大方之家多多斧正。也欢迎每个人提出宝贵意见和建议



我觉得我写的乱七八糟的,逻辑性不够强 :mrgreen:

cnhnln 发表于 2003-9-4 23:19:01

继续

cnhnln 发表于 2003-9-4 23:27:57

sensors

ksensors

cnhnln 发表于 2003-9-4 23:35:44

gkrellm

ksim

flyaway 发表于 2003-9-5 11:27:34

楼主谦虚了,非常棒的文章 :P
linux真是无所不能。
前一段时间我在看关于INTER提出的IPMI标准的时候,说IPMB其实就是I2C的一个子
集,我开始还以为I2C是inter的总线标准呢。 :wink:
我有个问题,不知道linux下lm_sensors 或者其它什么工具有没有Serial/Modem的能
力?也就是说,能不能通过类似的接口于远程管理系统传递信息。还望指教。

cnhnln 发表于 2003-9-8 00:44:49

呵呵,过奖了。
你说的那个就不知道了 :oops:

cnhnln 发表于 2004-1-23 23:14:24

04/01/23更新
for 2.6

lovewilliam 发表于 2004-1-24 12:07:35

顶一下
页: [1]
查看完整版本: linux下实现硬件监测