QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1009|回复: 7

linux下实现硬件监测

[复制链接]
发表于 2003-9-4 23:02:52 | 显示全部楼层 |阅读模式
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 ,也可以在安装光盘里找。其它系统也类似)
按提示进行,基本是一路回车。最后会得到类似
[code:1]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----[/code:1]
的信息。按提示分别写到/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-detect
sensors
命令

编译内核时,如果你不知道你用的硬件监测芯片是什么,那就全编译成模块吧。如果你知道你的是什么,而且经常用的话,就可以编译进内核(我个人喜欢把常用的都编译进内核)。
那个“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文件里新加一行
[code:1]none                    /sys                    sysfs   defaults        0 0[/code:1]
重启才可正常运行
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版。





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



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2003-9-4 23:19:01 | 显示全部楼层
继续

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2003-9-4 23:27:57 | 显示全部楼层
sensors

ksensors

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2003-9-4 23:35:44 | 显示全部楼层
gkrellm

ksim

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2003-9-8 00:44:49 | 显示全部楼层
呵呵,过奖了。
你说的那个就不知道了
回复

使用道具 举报

 楼主| 发表于 2004-1-23 23:14:24 | 显示全部楼层
04/01/23更新
for 2.6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2004-1-24 12:07:35 | 显示全部楼层
顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 18:32 , Processed in 0.093023 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表