от Nuclear man(11-08-2004)

рейтинг (30)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

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 (превод) >>