Kuye 发表于 2004-6-2 10:28:44

tr:利用lm_sensors和gkrellm监视CPU温度

[翻译]: 利用 lm_sensors 和 gkrellm 检视 CPU 温度。

原文地址:http://forums.gentoo.org/viewtopic.php?t=52815
译者注:前一段时间我卖了块 Celeron 566 给 winme,并帮助他超频到 850Mhz, winme 问起我如何在 Linux 上检视 CPU 温度,遂翻译此文以献给他。
--------------------------------------------------------------
导言
本文所介绍技巧已经在一台 Athlon XP 1800+ 和一块使用威盛 KT266A 芯片组的磐
英 8KHA+ 主板上实验成功,如果你的实验结果与我不同,请阅读后面其它朋友及其
系统的跟帖。我并没有打算成为一个在 CPU 主板散热方面的问题专家,我只是在两小
时内整理出了一篇介绍自己经验的文章。如果你在 lm-sensors 或者其它平台上有任
何问题,可以在我的一张技术支持帖里回帖咨询:
http://forums.gentoo.org/viewtopic.php?p=326081

开始
当你编译内核时请在字符设备(Character Devices)里启用 I2C 支持,I2C 接口设备
支持以及 I2C /proc 界面,如果你像我一样有一块 tvtuner 卡,应该已经启用了这
些选项了,如果你还未启用他们请这样做以后并进行下面操作:
# make modules && make modules_install

编译完内核后请继续:
emerge i2c lm-sensors gkrellm
如果你使用 kde 你可以使用 ksensors 代替 gkrellm。
# emerge ksensors

然后运行
# sensors-detect
请你在得到下面提示后按下[回车]键继续。
下面将列出系统探测结果,请按下回车键继续:(Now follows a summary

of the probes I have just done. Just press ENTER to continue:
你将得到类似于以下内容的温度及目录:
Driver `eeprom' (should be inserted):
Detects correctly:
* Bus `bt848 #0' (Bit-shift algorithm)
    Busdriver `UNKNOWN', I2C address 0x50
    Chip `Serial EEPROM (SDRAM DIMM)' (confidence: 8)
* Bus `SMBus Via Pro adapter at 5000' (Non-I2C SMBus adapter)
    Busdriver `i2c-viapro', I2C address 0x50
    Chip `Serial EEPROM (SDRAM DIMM)' (confidence: 8)
* Bus `SMBus Via Pro adapter at 5000' (Non-I2C SMBus adapter)
    Busdriver `i2c-viapro', I2C address 0x51
    Chip `Serial EEPROM (SDRAM DIMM)' (confidence: 8)

Driver `w83781d' (should be inserted):
Detects correctly:
* ISA bus address 0x0290 (Busdriver `i2c-isa')
    Chip `Winbond W83697HF' (confidence: 8)

我现在将键入一些命令以加载 I2C 模块,有时芯片可以同时使用于 ISA 总线和 I2C
总线上。ISA 总线存取速度稍快,但你需要为它加载一些附加驱动模块。你是否希望
选择 ISA 总线或者说 I2C/SMBus(ISA/smbus)呢?

警告!如果你将某些功能编译进了内核, 而下面的列表是假设你将所有功能都编译为
内核时产生的,它包含了所有所需模块。请根据你的自身实际情况取消掉部分模块。

所有功能全部需要,请将它们添加到 /etc/rc* 下的某些启动脚本里。
(译者注:其实这一步有多余的嫌疑,这些模块没必要开机便加载,当 gkrellm 启动
并 Call 温度模块中函数时 Linux 内核会自动加载这些模块的,
/etc/modules.autoload 也是比 rc 脚本相对更加实用的选择。不过我更倾向于直接将 I2C 编译进内核,这样这一步更有理由省下了)

#----剪切开始----
# I2C adapter drivers
# modprobe unknown adapter bt848 #0 using Bit-shift algorithm
# modprobe unknown adapter bt848 #0 using Bit-shift algorithm
modprobe i2c-viapro
modprobe i2c-isa
# I2C chip drivers
modprobe eeprom
modprobe w83781d
#----剪切结束----

为了使温度模块工作正常,以下内容需要添加到 /etc/modules.conf 或者

/etc/conf.modules:

#----剪切开始----
# I2C module options
alias char-major-89 i2c-dev
#----剪切结束----


完成以上内容以后,我添加了 i2c-viapro, i2c-isa, eeprom 和 w83791d 到
/etc/modules.autoload)。请确认你的/etc/modules.conf文
件中包含alias char-major-89 i2c-dev。lm_sensors ebuild
已经添加了/etc/init.d/lm_sensors启动脚本。所以运行下面命
令使 lm_sensors 在开机时加载:
# rc-update add lm_sensors default
作为 Linux 用户我们不需要重新启动计算机,只需要直接加载所需模块:
# modprobe i2c-viapro
# modprobe i2c-isa
# modprobe eeprom
# modprobe w83781d
然后启动 lm_sensors:
# /etc/init.d/lm_sensors start

你可以通过下面命令来检查是否工作正常:
# sensors
你将得到一个类似下面的输出:
eeprom-i2c-0-50
Adapter: bt848 #0
Algorithm: Bit-shift algorithm

eeprom-i2c-1-50
Adapter: SMBus Via Pro adapter at 5000
Algorithm: Non-I2C SMBus adapter
Memory type:            DDR SDRAM DIMM SPD
SDRAM Size (MB):      256

eeprom-i2c-1-51
Adapter: SMBus Via Pro adapter at 5000
Algorithm: Non-I2C SMBus adapter
Memory type:            DDR SDRAM DIMM SPD
SDRAM Size (MB):      256

w83697hf-isa-0290
Adapter: ISA adapter
Algorithm: ISA algorithm
VCore:   +1.76 V(min =+0.00 V, max =+0.00 V)
+3.3V:   +1.52 V(min =+2.97 V, max =+3.63 V)
+5V:       +4.89 V(min =+4.50 V, max =+5.48 V)
+12V:   +12.58 V(min = +10.79 V, max = +13.11 V)
-12V:      +2.10 V(min = -13.21 V, max = -10.90 V)
-5V:       +0.58 V(min =-5.51 V, max =-4.51 V)
V5SB:      +5.53 V(min =+4.50 V, max =+5.48 V)
VBat:      +3.13 V(min =+2.70 V, max =+3.29 V)
fan1:      0 RPM(min = 3000 RPM, div = 2)
fan2:      0 RPM(min = 3000 RPM, div = 2)
temp1:       +28癈(limit =+60癈)                     sensor = thermistor
                                                                              
temp2:   +41.5癈(limit =+60癈, hysteresis =+50癈) sensor = thermistor
                                                                              
alarms:
beep_enable:
          Sound alarm disabled


现在,我想我的输出内容并不完全正常,但你的未必如此。
例如:我并没有使用一个普通的3口插头 CPU 风扇,我使用了一个80毫米的巨型水冷
散热器,我也知道我的核心温度并不是1.52伏。这些可以修正于:
/etc/sensors.conf

介于本教程中使用主板的特殊性质(希望新教程正在撰写中),但是你可以在下面主
页中找到更多关于你主板的内容:
[*]http://www2.lm-sensors.nu/~lm78/cvs/lm_sensors2/doc/lm_sensors-FAQ.html
[*]http://www2.lm-sensors.nu/~lm78/cvs/lm_sensors2/etc/sensors.conf.eg

结束
现在你可以运行 gtkrellm2了,在 gkrellm 中按下 F1 键。展开内置菜单并单击温度(
sensors)。在这里你可以设置你想在 gkrellm 中查看哪些设备的温度。一个小技巧是
因为我在美国所以可以在选项页里选择华氏温度计量方式。Ksensors 页可以同样在右
键属性窗口中设置。

这是我在本论坛中第一次发表经验,请多加批评指正!

修改历史:修正 typo,添加 ksensors 相关内容,添加 sensors 命令内、添
加 categories,添加了超酷的紫色标题,添加了刻度
信息(感谢 puddpunk),将lm_sensors修改为lm-sensors。

sunmoon1997 发表于 2004-6-2 12:40:39

只支持2.4.x内核
郁闷~~~~~~

Kuye 发表于 2004-6-2 15:43:59

只支持2.4.x内核
郁闷~~~~~~
-_-b .....

2.6 应该可以吧?好像2.6的也有 I2C 设备。
手头没 linux,不乱说。。。

cnhnln 发表于 2004-6-2 22:31:05

2.6内核包含了I2C的驱动,编译内核时选中就行了,内核需要对isa的支持。奇怪的是2.4不需要。

winme 发表于 2004-6-3 10:52:11

哈哈,好久没上来看了
非常感谢KUYE !
真是不好意思了 ……
我暂时无法实验了,因为我电脑里的LINUX无法上网,没有网络支持的GENTOO简直就是噩梦 ……
所以我删了 ……
最近因为需要,下了MAGIC装上,有空试试 :)

sunmoon1997 发表于 2004-6-7 01:40:14

lm-sensors要2.8.1以上才支持2.6.x的内核
而gentoo的lm-sensors-2.8.1以上的都mask掉了
所以就会报错不支持2.6.x的内核
上次装的时候没有注意报错信息,
就以为lm-sensors不支持2.6.x的内核
这次认真的看了一下
然后就重新emerge lm-sensors-2.8.1
由于上一次编译内核的时候, 把i2c的设备给去掉了
现在只能重新编译内核了,比较晕.
不知道能不能行,等内核编译好再说吧~~
页: [1]
查看完整版本: tr:利用lm_sensors和gkrellm监视CPU温度