2010年11月11日星期四

CentOS CPU Temperature Detection

我最近想查看一下 server 的 CPU 溫度,碰到很大困難,原來系統本身並沒有這樣的程式。yum回來的 lm_sensors 又辨認不到 CPU sensor ,不過問題最終還是解決了。結果是這樣子:

$> sensors
it8720-isa-0290
Adapter: ISA adapter
in0: +1.06 V (min = +0.00 V, max = +4.08 V)
in1: +1.50 V (min = +0.00 V, max = +4.08 V)
in2: +3.38 V (min = +0.00 V, max = +4.08 V)
in3: +2.99 V (min = +0.00 V, max = +4.08 V)
in4: +3.09 V (min = +0.00 V, max = +4.08 V)
in5: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
in6: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
in7: +3.04 V (min = +0.00 V, max = +4.08 V)
Vbat: +3.07 V
fan1: 5973 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
temp1: -55.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +64.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +50.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
cpu0_vid: +1.700 V

coretemp-isa-0002
Adapter: ISA adapter
Core 1: +35.0°C (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +35.0°C (crit = +100.0°C)


我的系統
---------------------------------------------
OS: CentOS 5.5
MB: GA-D525TUD
CPU: Intel Atom D525

解決方法
---------------------------------------------
http://elrepo.org/linux/elrepo/el5/i386/RPMS/ 下載 最新的 lm_sensors。如果是64bit請把i386轉做x86_64
運行:
$> wget http://elrepo.org/linux/elrepo/el5/i386/RPMS/lm_sensors-2.10.8-2.el5.elrepo.i386.rp
$> rpm -ivh lm_sensors-2.10.8-2.el5.elrepo.i386.rpm //如果之前已安裝過lm_sensors,-i 變 -U,以下不贅。
$> sensors-detect
---- 跳過對話 ----
Driver `it87':
* ISA bus, address 0x290
Chip `ITE IT8720F Super IO Sensors' (confidence: 9)

Driver `coretemp':
* Chip `Intel Atom thermal sensor' (confidence: 9)


得知要用 it87 和 coretemp,it87 是底板,coretemp 是intel 的 CPU
系統本身已有這兩個driver,但由於版本太舊辨認不到硬體,出現錯誤:
$> modprobe coretemp
Error inserting coretemp (path/to/coretemp.ko) No such device.


這樣就需要更新 coretemp 的 driver,運行下列指令:
$> wget http://elrepo.org/linux/elrepo/el5/i386/RPMS/kmod-coretemp-1.1-8.el5.elrepo.i686.rpm
$> rpm -Uvh kmod-coretemp-1.1-8.el5.elrepo.i686.rpm
$> modprobe coretemp


沒有任何事發生就代表成功了。運行:
$> sensors

coretemp-isa-0002
Adapter: ISA adapter
Core 1: +35.0°C (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +35.0°C (crit = +100.0°C)


大功告成。it87 的 Driver 安裝和 coretemp 差不多,在此就不重覆了。


過程
---------------------------------------------
最初不知如何觀看 CPU 的溫度,Google後知道要用 lm_sensors,用 yum 安裝。
運行:
$> yum install lm_sensors


安裝後運行
$> sensors-detect


但找不到任何 sensor。後來發現原來 CPU太新,CentOS 的 lm_sensors 辨認不到。

之後搜尋lm_sensors,找到了最新版本,但要自己 make。

按著 INSTALL 檔案的指示安裝新的lm_sensors,但 make 有很多 dependency,用 yum 安裝。dependency 都安裝完後,運行:
$> make all
$> make install


但安裝完後找不到運行檔。原來在 /usr/local/sbin 和 /usr/local/bin,不想加進PATH,於是把它們抄到 /usr/bin 和 /usr/sbin。
運行 :
$> sensors-detect
---- 跳過對話 ----
Driver `it87':
* ISA bus, address 0x290
Chip `ITE IT8720F Super IO Sensors' (confidence: 9)

Driver `coretemp':
* Chip `Intel Atom thermal sensor' (confidence: 9)


認到 Atom 的 CPU sensor了!但最後出現錯誤說No sensor

原來要用 modprobe 加入相關 sensor 的 module 進 Kernel
$> modprobe tempcore
Error inserting coretemp (path/to/coretemp.ko) No such device.


tempcore 認不到 Atom 的CPU
然後找到一個網頁教人更新coretemp
$> modinfo tempcore
$> xxx //進行安裝,指令是甚麼並不重要
$> depmod -a //refresh the modules
$> modinfo tempcore


安裝前後用modinfo查看一下,發現 tempcore.ko 並沒有更新。

運行下列指令得知 linux 版本
$> uname -r
2.6.18-194.17.1.el5


原來那個程式把tempcore.ko放進了 /lib/modules/2.6.18-194.17.1.el5/weakupdates/ 這個資料夾,似乎這個資料夾的讀入次序比較後,原本放在 /lib/modules/2.6.18-194.17.1.el5/kernel/drivers/hwmon/ 裏的tempcore.ko 還比較優先。覆蓋了 Kernel 裏的好似不太好,搜尋了一下知道要放在extra裏,再試一次,成功。但後來發現下載回來的這個 coretemp 比 CentOS 裏的還要舊……

最後找到這個網站,按著它的指示去做,問題終於解決了…
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=27562&forum=39

我總結了一下,成為上面的解決方法。

沒有留言: