LINUX-BG   Адрес : http://www.linux-bg.org
lm_sensors + Superkaramba
От: Nuclear man
Публикувана на: 11-08-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=programs&key=364078593
lm_sensors + Superkaramba

Тествано e на Slackware 10.0, kernel 2.6.7 и Slackware 9.1, kernel 2.4.22
1. Необходими пакети:
- KDE (няма начин без него)
- lm_sensors-2.8.6.tar.gz - http://secure.netroedge.com/~lm78/ (за тези, които са с ядро 2.4.*)
- superkaramba-0.32-i386-1.tgz - http://netdragon.sourceforge.net/
- произволна тема за superkaramba (в моя случай picknic) – http://www.kde-look.org/content/show.php?content=13400
- i2c-2.8.4.tar.bg (за тези, които са с ядро 2.4.*)
2. Подкарване на lm_sensors (ядро 2.6.7)

В секцията: /device drivers/i2c Support/ Всичко трябва да изглежда по този начин:


А в секциите i2c Hardware Bus support и Hardware Sensors Chip support съответно си избирате модулът, който съответства на вашия хардуер:


В Sensors Chip support нищо не пречи всичко да оставим като модули, особено ако не се знае какъв сензор отговаря на нашето дъно... :)

След това с командата sensors-detect “детектваме” кои модули ще ни трябват. Ако изпише нещо от рода на: No i2c device files found. Use prog/mkdev/mkdev.sh to create them, ще трябва да се разархивира пакетът lm_sensors-2.8.6.tar.gz и с помощта на скрипта:
/lm_sensors-2.8.6/prog/mkdev/mkdev.sh да се създадат devise files.
Следва зареждането на модулите:

За Slackware най-добре да се редактира файлът /etc/rc.d/rc.local

#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local setup commands in here:

# I2C adapter drivers
modprobe i2c-nforce2 # това е в моя случай.
modprobe i2c-isa
# I2C chip drivers
modprobe eeprom
modprobe it87 # това е в моя случай.
# sleep 2 # optional
/usr/local/bin/sensors -s # recommended

И в /etc/modules.conf:
# I2C module options
alias char-major-89 i2c-dev

Рестарт на rc.local и след това вече е крайно време да си поиграем със sensors :)

При първото стартиране sensors най-вероятно ще покаже нещо от рода на:


Ясно е, че половината информация не става за нищо. Основният проблем при мен беше M/B Temp – 103 градуса???? Ако това беше вярно тази статия просто нямаше как да види бял свят. Оказа се, че:

# The A7V8X-X (моето дъно) has temperatures inverted, and needs a conversion for CPU temp. Thanks to Preben Randhol for the formula.
Т.е. CPU Temp=103, a M/B Temp=35 – което пак не може да бъде. Нямаше значение какъв датчик избирам да мери температурата – термистор или резистор. Все 103 :)
Затова се заех да преработя малко /etc/sensors.conf
Първо формулата на Preben Randhol:
compute temp1 (-15.096+1.4893*@), (@+15.096)/1.4893
я поправих на:
compute temp1 (-15.096+0.89*@), (@+15.096)/0.89
По този начин CPU Temp стана около 55 градуса. Точно толкова, колкото показва bios-a и asus probe под Windows... След това игнорирах редовете, които не ми трябват:

chip "it87-*"
label in0 "VCore"
# label in1 "VCore 2"
ignore in1
# label in2 "+3.3V"
ignore in2
label in3 "+5V"
label in4 "+12V"
ignore in5
ignore in6
# label in5 "3.3 Stdby"
# label in6 "-12V"
# label in7 "Stdby"
# label in8 "VBat"
ignore in7
ignore in8
# in0 will depend on your processor VID value, set to voltage specified in
# bios setup screen
set in0_min 1.7 * 0.95
set in0_max 1.7 * 1.05
# set in1_min 2.4
# set in1_max 2.6
# set in2_min 3.3 * 0.95
# set in2_max 3.3 * 1.05
set in3_min 5.0 * 0.95
set in3_max 5.0 * 1.05
# +- 12V are very poor tolerance on this board. Verified with voltmeter
set in4_min 12 * 0.90
set in4_max 12 * 1.10
# set in5_min 3.3 * 0.95
# set in5_max 3.3 * 1.05
# set in6_max -12 * 0.90
# set in6_min -12 * 1.10
# set in7_min 5 * 0.95
# set in7_max 5 * 1.05
# vid not monitored by IT8705F
ignore vid

# compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
compute in4 ((30/10) +1)*@ , @/((30/10) +1)
# compute in6 (1+232/56)*@ - 4.096*232/56, (@ + 4.096*232/56)/(1+232/56)
# compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1)

# Temperature
label temp1 "CPU Temp"
compute temp1 (-15.096+0.89*@), (@+15.096)/0.89
label temp2 "M/B Temp"
ignore temp3

# Fans
set fan1_min 2500
ignore fan2
ignore fan3


Като резултат sensors вече вадеше следната информация:


Това вече е съвсем друго! Много по-естетично и сбито. За Vcore = 1.47V не съм сигурен, че е вярно (Athlon 1800+ май бяха по подразбиране на 1.60V), за мен са най-важни показанията на +5V линията. Засега захранването ми Q-TEC 450W Double Fan Gold държи перфектни показатели, но тези, които имат бомби със закъснител в компютрите си – JNC, Codegen, Shido, KMI, Maxpower и т.н. трябва да внимават – отклонения с повече от 5% не са допустими.
Сега вече е време е за Superkaramba. Инсталираме пакета (или компилираме от sors – няма значение, поне при Slackware...). Сваляме си някоя от многобройните теми – аз си харесах picknic, но на www.kde-look.org има буквално стотици, да не кажа хиляди :) По точно на адрес: http://www.kde-look.org/index.php?xcontentmode=38
Сега вече стартираме Superkaramba-та, но при мен когато стартирах и заредих темата ... пак нещо не беше наред! Superkaramba-та постоянно се опитваше да намери isdn и други интерфейси, които ги нямам и се наложи пак да бърникам конфиг файлове. В случая това беше /superkaramba/themes/picknic.theme
Коментирах редовете с ISDN и ippp0 и проблема се оправи. Обаче на мен ми дойде идеята – защо темата ще ми показва неща, които много добре знам (CPU Mhz и L2 cash), а няма да ми показва важна информация, като например температури и волтажи? Затова реших да подобря малко picknic.theme :)
Вместо:
text x=50 y=98 value="MHz:" color=0,0,0 fontsize=9 font="Cure"
text x=110 y=98 sensor=program program="cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //'" color=111,111,111 fontsize=9 font="Cure"

написах:
text x=50 y=84 value="CPU Temp:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=84 sensor=temp1 format="%v%" color=246,237,223 fontsize=9 font="Cure" interval=1000
text x=110 y=84 sensor=program program="sensors | grep 'CPU Temp' | awk '{print $3}'" color=246,237,223 fontsize=9 font="Cure"

X и Y са координати, т.е. къде в темата да се изпише резултата;
color=0,0,0 – ако искаме текста да е с черен цвят. При мен нямаше как цветът да остане черен, защото фона за десктоп-а ми е тъмносин и нямаше да се вижда нищо. Затова: find and replace
color=0,0,0 с color=246,237,223 (бял цвят).
format="%v%" - формат на показване на информацията. Не го разбирам достатъчно, че да го описвам :)
Fontsize и font са ясни за какво са.
На втория ред е избран типа на сензора, който ще се показва, а interval=1000, значи – през 10 сек. ще се опреснява информацията.
Третия ред е по-интересен:
sensor=program program="sensors | grep 'CPU Temp' | awk '{print $3}'"
означава --> Подай като параметър на sensor резултата от изпълнението на програмата sensors, но само реда, съдържащ CPU Temp, и то само третата колона от този ред.
Използвал съм awk вместо sed, защото awk ме кефи повече и според мен е по-разбираем.
Иначе няма проблеми който иска да ползва и Perl, Piton, c# или Assembler :))
По същия начин си настроих MB Temp и волтажите. Ето полученият при мен – в раздел Галерия. Ето и цялата модифицирана тема:

karamba x=0 y=0 w=270 h=536 interval=500 locked=true

# Icons
#image x=150 y=10 path="icons/tux.png"
image x=0 y=10 path="icons/go2.png"
image x=0 y=84 path="icons/amd.png"
image x=0 y=144 path="icons/mem.png"
image x=0 y=204 path="icons/hdd.png"
image x=0 y=298 path="icons/net.png"
image x=0 y=379 path="icons/clock.png"
image x=0 y=439 path="icons/xmms.png"

# Misc Information
text x=50 y=10 sensor=program program="echo ${USER}@`hostname`" color=246,237,223 fontsize=13 font="Cure" shadow=1
text x=50 y=24 value="Kernel:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=24 sensor=program program="uname -r" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=38 value="KDE:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=38 sensor=program program="kde-config --version | grep KDE | sed -e 's/.*: //'" line=1 color=246,237,223 fontsize=9 font="Cure"

text x=50 y=52 value="Powered by: Slackware 10.0" color=246,237,223 fontsize=9 font="Cure"


# CPU Information
text x=50 y=70 sensor=program program="cat /proc/cpuinfo | grep 'model name' | sed -e 's/.*: //'" color=246,237,223 fontsize=9 font="Cure"

text x=50 y=84 value="CPU Temp:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=84 sensor=temp1 format="%v%" color=246,237,223 fontsize=9 font="Cure" interval=1000
text x=110 y=84 sensor=program program="sensors | grep 'CPU Temp' | awk '{print $3}'" color=246,237,223 fontsize=9 font="Cure"

text x=50 y=112 value="MB Temp:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=112 sensor=program program="sensors | grep 'M/B Temp' | awk '{print $3}'" color=246,237,223 fontsize=9 font="Cure"

#text x=50 y=112 value="MHz:" color=246,237,223 fontsize=9 font="Cure"
#text x=110 y=112 sensor=program program="cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //'" #color=246,237,223 fontsize=9 font="Cure"

text x=50 y=98 value="CPU Fan:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=98 sensor=program program="sensors | grep 'CPU fan' | awk '{print $3, $4}'" color=246,237,223 fontsize=9 font="Cure"

#text x=50 y=112 value="Cache:" color=246,237,223 fontsize=9 font="Cure"
#text x=110 y=112 sensor=program program="cat /proc/cpuinfo | grep 'cache size' | sed -e 's/.*: //'" #color=246,237,223 fontsize=9 font="Cure"

text x=50 y=126 value="CPU Usage:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=126 sensor=cpu format="%v%" color=246,237,223 fontsize=9 font="Cure" interval=1000

# Memory Information
text x=50 y=152 value="RAM:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=152 sensor=memory format="%um/%tm MB" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=164 value="Swap:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=164 sensor=memory format="%us/%ts MB" color=246,237,223 fontsize=9 font="Cure"

# Harddrive Information
text x=50 y=190 value="root" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=190 sensor=disk mountpoint="/" format="%u MB / %up%" color=246,237,223 fontsize=9 font="Cure" interval=60000
text x=50 y=204 value="Mariela" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=204 sensor=disk mountpoint="/mnt/mariela" format="%u MB / %up%" color=246,237,223 fontsize=9 font="Cure" interval=60000
text x=50 y=218 value="Disk (d:)" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=218 sensor=disk mountpoint="/mnt/d:" format="%u MB / %up%" color=246,237,223 fontsize=9 font="Cure" interval=60000
text x=110 y=112 sensor=program program="cat /proc/cpuinfo | grep 'cac
text x=50 y=232 value="+5V: " color=246,237,223 fontsize=9 font="Cure"
text x=110 y=232 sensor=program program="sensors | grep '+5V' | awk '{print $2, $3}'" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=246 value="+12V: " color=246,237,223 fontsize=9 font="Cure"
text x=110 y=246 sensor=program program="sensors | grep '+12V' | awk '{print $2, $3}'" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=260 value="VCore: " color=246,237,223 fontsize=9 font="Cure"
text x=110 y=260 sensor=program program="sensors | grep 'VCore' | awk '{print $2, $3}'" color=246,237,223 fontsize=9 font="Cure"

# Network Information
text x=110 y=284 value="nvnet" color=246,237,223 fontsize=9 font="Cure"

text x=50 y=298 value="Down:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=298 sensor=network device="eth0" format="%in kb/s" color=246,237,223 fontsize=9 font="Cure" interval=1000 decimals=2
text x=50 y=312 value="Up:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=312 sensor=network device="eth0" format="%out kb/s" color=246,237,223 fontsize=9 font="Cure" interval=1000 decimals=2

text x=50 y=326 value="Total" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=340 value="Down:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=340 sensor=program program="/sbin/ifconfig eth0 | grep 'RX byte' | awk '{print $3 $4}'" color=246,237,223 align=left fontsize=9 font="Cure" interval=1000
text x=50 y=354 value="Up:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=354 sensor=program program="/sbin/ifconfig eth0 | grep 'RX byte' | awk '{print $7 $8}'" color=246,237,223 align=left fontsize=9 font="Cure" interval=1000
sensor=program program="cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //'" color=246,237,223 fontsize=9 font="Cure"

# Time Information
text x=50 y=379 value="Uptime:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=379 sensor=uptime format="%dd %H:%M" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=393 value="Time:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=393 sensor=time format="hh:mm:ss" color=246,237,223 fontsize=9 font="Cure" interval=1000

# Date Information
text x=50 y=407 value="Date:" color=246,237,223 fontsize=9 font="Cure"
text x=110 y=407 sensor=time format="dd. MMM yyyy" color=246,237,223 fontsize=9 font="Cure"

# XMMS Information
text x=50 y=439 value="Title:" color=246,237,223 fontsize=9 font="Cure"
text x=50 y=452 sensor=xmms color=246,237,223 fontsize=9 font="Cure" format="%title"
text X=65 Y=464 sensor=xmms color=246,237,223 fontsize=20 font="Cure" format="%time"

# XMMS Control
image x=50 y=504 path="icons/xmmslast.png"
image x=80 y=504 path="icons/xmmsplay.png"
image x=110 y=504 path="icons/xmmsstop.png"
image x=140 y=504 path="icons/xmmspause.png"
image x=170 y=504 path="icons/xmmsnext.png"
clickarea x=50 y=504 w=32 h=32 onclick="xmms --rew" preview=false
clickarea x=80 y=504 w=32 h=32 onclick="xmms --play" preview=false
clickarea x=110 y=504 w=32 h=32 onclick="xmms --stop" preview=false
clickarea x=140 y=504 w=32 h=32 onclick="xmms --pause" preview=false
clickarea x=170 y=504 w=32 h=32 onclick="xmms --fwd" preview=fase

# XMMS Start
clickarea x=0 y=439 w=46 h=46 onclick="xmms" preview=fase


3. Ядро 2.4.*

Подкарване на i2c (ядро 2.4.*)

Тук трябва леко да се пачне ядрото, както е описано в /i2c-2.8.4/install:

/i2c-2.8.4/mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux

След това в секцията: `Character Devices' се появява меню за конфигурация на i2c. Поддръжката на i2c в ядрото трябва задължително да е като модул! Достатъчно условие за успешна инсталация е само базова поддръжка на i2c.

Подкарване на lm_sensors (ядро 2.4.*)

Как става е написано в /lm_sensors-2.8.6/install. Отново трябва да се пачне:

/lm_sensors-2.8.6/mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux

Пачовете трябва да бъдат изпълнени в следната последователност: i2c и след това lm_sensors

След прекомпилиране на ядрото, компилираме lm_sensors:
cd /lm_sensors-2.8.6
make && make install && depmod -a && ldconfig

Същите операции се правят и за i2c:
cd /i2c-2.8.4
make && make install && depmod -a && ldconfig

След това всичко е както е описано по-горе.

Ето резултатът при мен:


Успех на всички с инсталирането и настройката на lm_sensors + Superkaramba!

<< AbiWord срещу MS Word (превод) | Сигурни Уеб-услуги: основи на PKI - Част 2 (превод) >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.16 usr + 0.03 sys = 0.19 CPU)