CPU, System Hőmerséklet lekérdezése linux alatt

Címkék

fabokzs összeütött egy howtot, melynek segítségével lekérdezhetővé válik a CPU, System hőmerséklet linux alatt. Lássuk:



Hogy ezen információhoz hozzájussunk szükség van egy olyan alaplapra, ami tartalmaza megfelelő szenzorokat. Ezt megtudhatjuk a BIOS-ból, ha van olyan opció, hogy CPU health status és azon belül kiírja a hőmérsékletet akkor sirály. De az, hogy mindig kilépjünk a BIOS -ba nem éppen a leghatékonyabb módszer. Linux alatt a következő két dologra van szükség: i2c, és lm-sensors.


A kernelnek legalább 2.4.13-asnak kell lennie!!!


Aki 2.5 -ös kernellel rendelkezik annak nagyon ajánlott a lenti címre ellátogatni, mert másképpen kell eljárni, mint a 2.4 -es kernel szériánál!!!Az lm-sensors hivatalos oldala

A gépem:

Alaplap: Abit kg7-raid

Processzor: AMD athlon 1333Mhz

kernel: 2.4.19-rc1-ac3

Ezt az oldalt érdemes azért átnézni mielőtt bármit is tennénk. Mert ha nincs az oldalon az alaplapunk

chipsetje (BUS drivere) akkor nem nagyon valószínű, hogy menni fog a dolog. Ha nem tudod hirtelen, hogy milyen a chipset akkor nézd meg az alaplap dobozát, vagy a kézikönyvét. Ha nem találod akkor az lspci paranccsal megtudhatod.

Csak pár a támogatott chipsetek közül:

Acer Labs M1533, M1535, and M1543C

AMD 756, 766, and 768

Apple Hydra (used on some PPC machines)

DEC 21272/21274 (Tsunami/Typhoon - on Alpha boards)

Intel I801 ICH/ICH0/ICH2/ICH3 (used in Intel 810, 810E, 815E, 820, 840 chipsets)

Intel PIIX4 (used in many Intel chipsets)

Intel I810/I815 GMCH

Intel 82443MX (440MX)

NVidia nForce

ServerWorks OSB4, CSB5

SiS 5595

SMSC Victory66, 74M1xx

3Dfx Voodoo 3 and Banshee

VIA Technologies VT82C586B, VT82C596A/B, VT82C686A/B, VT8231, VT8233, és VT8233A.

stb.

Nálam:

/home/fabokzs $ lspci | grep SMBus | cut -f3 -d':'

VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)

/home/fabokzs $

Hasonló van a listán, jó esélyem van, hogy fog menni.

(Ez az oldal segíthet, ha nem esetleg kesőbbiekben nem talalja meg a SMBus vezérlőt, vagy nem tudod milyen chipseted van.)

Fontos, hogy mind i2c -ból és lm-sensors -ból a verziószámnak meg kell egyezni, és érdemes mindkettőből a legújabb verziót feltenni (most a legújabb verzió a 2.6.4-as).

Feltehetjük csomagból:

apt-get install i2c-source lm-sensors-source

(/home/fabokzs $ apt-cache show i2c-source | grep ^Version

Version: 2.6.3-5

/home/fabokzs $
)

Letölthetjük őket:

lm_sensors-2.6.4.tar.gz

i2c-2.6.4.tar.gz

(Itt a verzió már 2.6.4 !!!)

CVS

cvs -d :pserver:anon@cvs.lm-sensors.nu:/home/cvs login

jelszó "anonymous"

cvs -d :pserver:anon@cvs.lm-sensors.nu:/home/cvs checkout lm_sensors

cvs -d :pserver:anon@cvs.lm-sensors.nu:/home/cvs checkout i2c

Én a második verziót választottam, és a /usr/src be tettem a két forrást, majd:



/usr/src # tar fxz lm_sensors-2.6.4.tar.gz

/usr/src # tar fxz i2c-2.6.4.tar.gz

/usr/src # ls

i2c-2.6.4 lm_sensors-2.6.4 NVIDIA_kernel-1.0-2880 patch-2.4.19-rc1

i2c-2.6.4.tar.gz lm_sensors-2.6.4.tar.gz patch-2.4.19-pre10 patch-2.4.19-rc1-ac3

linux NVIDIA_GLX-1.0-2880 patch-2.4.19-pre10-ac2

Mielőtt bármit is tennél győződj meg arról, hogy ezen bejegyzések szerepelnek-e a .config fájlban:

CONFIG_I2C_PROC=m

CONFIG_PROC_FS=y

Ha esetleg nem, akkor fordítsd újra a kernelt a fenti két opcióval.

Ahhoz, hogy be lehessen üzemelni a sensor-okhoz szükséges modulokat 3 mószer van:

Modulok lefordítása a "kernelen kívűl"

(én ezt a mószert használtam)



/usr/src # cd i2c-2.6.4/

/usr/src/i2c-2.6.4 # make clean all install

...

/usr/src/i2c-2.6.4 # cd ../lm_sensors-2.6.4/

/usr/src/lm_sensors-2.6.4 # make clean all install

A kernel patchelése:

(Ezt akkor érdemes választani, ha tudod pontosan milyen modulokra lesz szükség, vagy ha ha konkrét modulokat szeretnél a kernelbe belefordítani)



/usr/src # cd i2c-2.6.4/

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

...

/usr/src/i2c-2.6.4 # cd ../lm_sensors-2.6.4/

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



Ha ez készen van, mehet a make menuconfig.

Ott a Character devices-ban lehet beállítani mindent.

A fenti két módszer keveréke

Részletesebben lásd az INSTALL fájlt a /usr/src/lm_sensors-2.6.4/ -ban, vagy a /usr/src/i2c-2.6.4/-ban.

Ha mindent jól csináltál, akkor a sensors és sensors-detect programokkal bővült az

arzenálod.

Ha kész vannak a modulok akkor meg kell keresni a megfelelő modulokat. Erre a legalkalmasabb:



/root # sensors-detect



Itt lehetőség szerint mindent "detektáltass fel", majd a végén kiirja, hogy mely modulokra lesz szükség ahhoz, hogy a sensors parancs megfelelően működjön.

Részlet az én sensors-detect végeredményemből:

WARNING! If you have some things built into your kernel, the below list will contain too many modules. Skip the appropriate ones! To load everything that is needed, add this to some /etc/rc* file:

#----cut here----

# I2C adapter drivers

modprobe i2c-isa

# I2C chip drivers

modprobe via686a

#----cut here----

To make the sensors modules behave correctly, add these lines to either

/etc/modules.conf or /etc/conf.modules:

#----cut here----

# I2C module options

alias char-major-89 i2c-dev

#----cut here----


Előfordulhat, hogy a sensors-detect nem talál semmit. Ekkor a chipseted nem támogatott ezen i2c illetve lm-sensors verziókkal, vagy csak nem találta meg.

Ilyenkor érdemes ezt az oldalt átolvasni.

Tehát nekem az i2c-isa, via686a modulokat kell betölteni, hogy le tudjam majd kérdezni az értékeket.

Először irjuk be a " alias char-major-89 i2c-dev " sort a /etc/modutils/aliases-ba:



/root # cat >> /etc/modutils/aliases

alias char-major-89 i2c-dev

/root #



(editorral is megcsinálhatjuk)

Majd:



/root # update-modules

/root #

Ezzel a sensors-detect által javasolt két müvelet közül a másodikkal meg is lennénk. Most gondoskodjunk arról, hogy indításnál a modulok betöltödjenek.



/root # cd /etc/init.d

/etc/init.d # cat > sensors

echo A sensors mukodesehez szukseges modulok betoltese

modprobe i2c-isa

modprobe via686a

echo betoltes befejezve

/etc/init.d # cd /etc/rcS.d

/etc/rcS.d # ln -s /etc/init.d/sensors S80Sensors

/etc/rcS.d #

A fenti műveletek elvégzése előtt se a /etc/init.d/sensors se a /etc/rcS.d/S80Sensors

NEM LÉTEZETT !!!!!!!!

És lássuk, hogy miért szenvedtünk eddig:



/home/fabokzs $ sensors

via686a-isa-6000

Adapter: ISA adapter

Algorithm: ISA algorithm

CPU core: +1.74 V (min = +1.79 V, max = +2.18 V) ALARM

+2.5V: +2.60 V (min = +2.24 V, max = +2.74 V)

I/O: +3.44 V (min = +2.95 V, max = +3.62 V)

+5V: +4.97 V (min = +4.47 V, max = +5.49 V)

+12V: +12.16 V (min = +10.79 V, max = +13.18 V)

CPU Fan: 0 RPM (min = 3000 RPM, div = 2)

P/S Fan: 4720 RPM (min = 3000 RPM, div = 2)

SYS Temp: +40.3°C (limit = +60°C, hysteresis = +50°C)

CPU Temp: +52.2°C (limit = +60°C, hysteresis = +50°C)

SBr Temp: +23.8°C (limit = +60°C, hysteresis = +50°C)

Ha szertnék, hogy a hőmérséklet értékeket loggolja a rendszer akkor telepítsd fel a sensord programot. (az adatok lekérdezéséhez NEM szükséges a sensord)



/root # apt-get install sensord

Az értékeket le lehet kerdezni grellm-mel is. Van beépített modulja, ami le tudja kerdezni.

Készítette: fabokzs [ZiB]


Utolsó módosítás dátuma: 2002-07-20

Hozzászólások

Jó a cikk. Nálam minden rendben működik egy P4+MSI6389 alaplapon. Bár a leírás alapján nem jött össze , u.i. nem ismerte fel a hardwert. Ezért CVS-ből szedtem le a motyót, de így is csak az lm_sensors2-vel találta meg a sensor_detect a chipet: ami egyébként egy w83627hf-isa-0290 típusú. Ha valaki tudja, hogy a vason van szenzor, de mégsem működik akkor érdemes ezt kiprópálni a cikkbeli cvs helyett:

cvs -d :pserver:anon@cvs.lm-sensors.nu:/home/cvs checkout lm_sensors2

ize, egy linket tehettel volna melle, hogy mi is ki tudjuk probalni ;)

marad a google -> searching......

Ez sem tart tovabb mint 5 perc.

Udv.