IPMI で温度監視

IPMI(Intelligent Platform Management Interface)
を使いたい

実は客先のサーバルームの…エアコン…(;゚×゚)ゝ”ごにょごにょ。

OS

Vine3.1(kernel:2.4.27-0vl7smp)
Vine3.2(kernel:2.4.31-0vl1.12smp)

H/W

HP:DL140G2


i2c と lm_sensors でやろうとしたけど、何ともできない。
両方インストールして
# sensors-ditect とすると
—–
# You must also install and load the IPMI modules
modprobe i2c-ipmi
—–
と言われる

うーん。/lib/module 以下には無いなぁ。。

カーネルのモジュールかな…。configでipmi関係のオプションがある。
有効になっていないのでカーネルコンパイルする。モジュールを有効に…。

# apt-get install kernel-source
# cd /usr/src/linux
# make mrproper
# Makefile 変更 EXTRAVERSION = -0vl1.12_ipmi
# cp configs/kernel-2.4.31-i686-smp.config ./.config
# make oldconfig
# apt-get install ncurses-devel
# make menuconfig

Character devices —>

IPMI top-level message handler        # Mに変更

[ ] Generate a panic event to all BMCs on a panic
Device interface for IPMI          # Mに変更
IPMI KCS handler              # Mに変更
IPMI Watchdog Timer             # Mに変更

# make dep
# make clean
# make bzImage

# make modules
# make modules_install

# cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.4.27-0vl1.12_ipmi
# cp ./System.map /boot/System.map-2.4.27-0vl1.12_ipmi
# cd /boot
# ln -sf vzlinuz-2.4.27-0vl1.12_ipmi vmlinuz
# mkinitrd /boot/initrd-2.4.27-0vl1.12_ipmi.img 2.4.27-0vl1.12_ipmi

再起動

※Module だけ作ってインストールでもOKかな。それなら再起動しなくてもOK。

でも、できない。あ゙〜あ゙〜う゛〜。

Webで調べてみると、『OpenIPMI』でできるっぽい。
はい、lm-sensors あきらめた。
Redhat とか Debian では apt なんかで取れるらしい。Vineはない。
Fedra に SourceRPMがあったので Rebuild。いろいろ必要とされてるので全部インストール。ビルド完了。。ありがとうFedra。。
インストール。実はまだこれだけでは。ダメで。

# modprobe ipmi_kcs_drv    # kernel 2.6 の時は modprobe ipmi_si
# modprobe ipmi_devintf

# grep ipmi /proc/devices
254 ipmidev

この番号でデバイスファイルを作成
# mknod –mode=644 /dev/ipmi0 c 254 0

これで
# ipmitool sensor
# ipmitool sdr
とすると、ゆるゆる数値が出てくる。
[root@localhost root]# ipmitool sdr
ACPI STATE | 0x01 | ok
CPU0 Pres | 0x02 | ok
CPU1 Pres | 0x01 | ok
CPU0 IERR | 0x01 | ok
CPU1 IERR | Not Readable | ns
CPU0 THERMTRIP | 0x01 | ok
CPU1 THERMTRIP | Not Readable | ns
CPU0 PROCHOT | 0x01 | ok
CPU1 PROCHOT | Not Readable | ns
CPU0 TEMP | 33 degrees C | ok
CPU1 TEMP | no reading | ns
SYS TEMP | 26 degrees C | ok
CPU FAN1 | 6000 RPM | ok
CPU FAN2 | 6000 RPM | ok
……

完了。
あとはシェルスクリプトで整形して、異常な温度だったらメールを飛ばすことにする。

あ、客先はRedhat ES4 もあったので、カンタンにできました。
デバイスファイルは作ってくれなかったので、自分で作ったけど…。いいのかなあれで…。