近来编译hotapplet时发现lm_sensors这个监测系统状态好东东,正为在rh8.0上的编译问题大费周章,无意中发现,原来redhat8.0已经自带了lm_sensors,而且内核也已经打上相应的i2c补丁(最新版本的lm_sensors需要新版本的i2c,似乎2.4.19内核才已经打上相应的补丁),
下面以我的机器环境为例,简说一下过程,希望能起到抛砖引玉的作用。
1.环境:
redhat8.0,内核2.4.18-26(发行版自带的也行,后来更新的几个内核没有更新到i2c和sensors部分),主板是精英的P6ISA2,属于旧款的815E,带CPU温度监测,机箱温度监测,CPU风扇监测,电源风扇监测(我将显卡风扇接到电源风扇的插座上去,因此监测到的是显卡风扇的转速),CPU核心电压、BIOS设置维持锂电池电压等监测
2.所需软件:
lm_sensors,rh8.0自带,假如没装,请在那些安装盘上找找,我也不知道具体是哪张盘;gkrellm2.1.7,不是必需的,不过安装它后监测时更直观方便点,gkrellm的1.2.3版本可能也行,但要自己编译sensors支持插件。
3.步骤:
开一个终端,输入sensors-detect命令,出现一堆提示信息,是关于lm_sensors使用基本知识的,大家喜欢就看看,不喜欢就接着看下面的:
We can start with probing for (PCI) I2C or SMBus adapters.
You do not need any special privileges for this.
Do you want to probe now? (YES/no):
粗译:预备检测PCI和SMBus形式的监测硬件,是否继续
当然选Yes
Probing for PCI bus adapters...
Use driver `i2c-riva' for device 01:00.0: GeForce2 MX2
Probe sUCcesfully concluded.
We will now try to load each adapter module in turn.
Load `i2c-riva' (say NO if built into your kernel)? (YES/no):
粗译:找到和显卡有关的东东,是否加载i2c-riva模块
估计是nvidia显卡监控用的,可惜我的Geforce2MX200不支持这个,选no(其实就算选Yes也没用,rh8.0的内核没有i2c-riva这个模块,可能是新版本的i2c才有吧)
Do you now want to be prompted for non-detectable adapters? (yes/NO):
这个不知道是干什么的,选默认的NO,回车就行
To continue, we need module `i2c-dev' to be loaded.
If it is built-in into your kernel, you can safely skip this.
i2c-dev is not loaded. Do you want to load it now? (YES/no):
粗译:继续的话,需要加载i2c-dev这个模块,假如你用的是自己编译的内核,而且这个模块的功能已经编译进内核里,则可以略过这步。
Rh8.0将这些功能都置为模块,选默认的Yes
Some chips are also Accessible through the ISA bus. ISA probes are
typically a bit more dangerous, as we have to write to I/O ports to do
this. Do you want to scan the ISA bus? (YES/no):
粗译:一些芯片组通过ISA总线访问,而检测ISA有一点点危险,因为需要写I/O口。是否检测ISA总线
不管它,选Yes
出现一堆检测结果,失败(Failed)的我就不说了,我的主板是有两个是成功的,检测信息是:
Character in "C" format wrapped at /usr/sbin/sensors-detect line 963.
Trying address 0x0290... Success!
(confidence 7, driver `lm78')
Character in "C" format wrapped at /usr/sbin/sensors-detect line 963.
Trying address 0x0290... Success!
(confidence 8, driver `it87')
这信息说明,共有两个模块都能支持我主板上的监测芯片,分别是lm78和it87这两个(后来试验的结果证实,it87这个模块的效果好点)
这步最重要,假如全部都失败,那标明要么你的主板没有监测功能,要么此半版本的lm_sensors和i2c不支持你的主板,考虑一下升级内核和lm_sensors的版本吧!
Now follows a summary of the probes I have just done.
Just press ENTER to continue: 按回车键继续
I will now generate the commands needed to load the I2C modules.
Sometimes, a chip is available both through the ISA bus and an I2C bus.
ISA bus access is faster, but you need to load an additional driver module
for it. If you have the choice, do you want to use the ISA bus or the
I2C/SMBus (ISA/smbus)?
粗译:现在给出加载模块的相应命令。
有时,一种芯片可能都能通过ISA和PCI两种总线访问,ISA总线访问较快,但需要另外的模块支持。选择哪种访问方式?
不管它,我选ISA,默认也是ISA(我试过,我的环境下就算选smbus,也是一样的结果)
WARNING! If you have some things built into your kernel, the
below list will contain too many modules. Skip the appropriate ones!
To load everything that is needed, add this to some /etc/rc* file:
粗译:警告!假如你已经将某些功能编译进内核里,则可以跳过不加载下面列表中的一些模块。要加载下面列表中的模块,将它们加入到/etc/rc*file中
#----cut here----
# I2C adapter drivers
modprobe i2c-isa
# I2C chip drivers
modprobe it87
#----cut here----
编辑/etc/rc.local,将这几行粘贴进去,保存,这样系统每次开机后自动加载相关模块,让监测起作用。(最好先手工加载一下,看上面列出的模块是否存在,假如报告modprobe: Can't locate module xxx,则说明需要的模块不存在,可能是内核不支持)
To make the sensors modules behave correctly, add these lines to either
/etc/modules.conf or /etc/conf.modules:
粗译:为了让sensors模块工作正常,将下面几行加入到/etc/modules.conf或者/etc/conf.modules里
#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----
redhat8.0上的模块配置文件是/etc/modules.conf,将上面几行加入到/etc/modules.conf里,保存。
重起,重新进入系统后在终端运行一下sensors命令,看是否有类似下面的输出,假如有,那么,恭喜你,成功了!
[root@llc root]# sensors
it87-isa-0290
Adapter: ISA adapter
Algorithm: ISA algorithm
VCore 1: +1.72 V (min = +1.53 V, max = +1.87 V)
+5V: +5.02 V (min = +4.50 V, max = +5.48 V)
+12V: +12.92 V (min = +11.36 V, max = +13.80 V)
VBat: +3.12 V
fan1: 5532 RPM (min = 3000 RPM, div = 2)
fan2: 5625 RPM (min = 3000 RPM, div = 2)
Temp1/CPU: +26度(min = +20度, max = +60度)
上面的信息中,VCore 1是CPU核心电压,VBat是BIOS锂电池电压,fan1是CPU风扇转速,fan2是电源风扇转速(对于我的机器其实就是显卡风扇转速了),Temp1是CPU温度。这里需要提醒的是,sensors检测到的信息,(对我的机器)有些是明显错误的,具体原因我不清楚,可能是支持还不是很好吧(win下speedfan的监测结果比这个准一点,起码没有明显错误的),也有可能是设置的问题。
最后,建议大家安装gkrellm2.1.7(公社就有下载,http://www.Linuxfans.org/nuke/modules.PHP?name=Site_Downloads&op=geninfo&did=421,有源码及rpm包),在作了相应设置,加载了相关模块后,gkrellm的设置里关于sensors的选项就可用了,同样有温度,风扇转速,电压的监测项,还可以为它们设置警告范围,越出范围的话执行相关的警告动作。正确设置后,gkrellm的面板上能直接显示各种状态,一目了然,非常直观、方便,无需敲sensors命令来看状态了。