от Nick Angelow(24-02-2005)

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

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

НАБЛЮДЕНИЕ НА СЪСТОЯНИЕТО НА ДЪННИ ПЛАТКИ В LINUX

http://www.linuxcenter.ru/lib/articles/hardware/i2c.phtml?style=print

Виталий Колесник

31 януари 2005 || Библиотека на Линукс Център


Ефективната експлоатация на различни сложни технически комплекси, в частност на компютри, е невъзможна без изчерпателна и непрекъснато постъпваща информация за основните параметри на функциониране на системата. Този проблем е особено актуален при системи, работещи по схемата 24х7х365, както и за системи, до които персонала има ограничен достъп.

Във всеки конкретен случай, списъкът на тези параметри може да съдържа стотици позиции, но практически за всяка работна станция, сървър или клъстър особено важна е информацията за техническото състояние на апаратурата. Основните характеристики на дънните платки, които трябва да се следят са следните:

  • напрежението на захранването;

  • скоростта на въртене на вентилаторите за охлаждане;

  • температурата на процесора;

  • температурата във вътрешността на компютъра.

Производителите на дънни платки и операционни системи предлагат собствени решения за наблюдение. Също така съществуват и програмни средства от трети производители.

В дистрибуциите на Linux, които в последно време намират широко разпространение при сървърните системи, дефакто в стандарт за програма за наблюдение на дънните платки се е превърнал пакетът lm_sensors (www.lm-sensors.nu). Той влиза в състава на някои дистрибуции на Linux и има широки възможности. Но колкото по-сложна и универсална е програмата, толкова по-трудно е нейното усвояване.

Настоящата статия има за цел да осветли практическите въпроси при настройката на пакета lm_sensors за контрол на дънните платки TYAN S2460 Tiger MP.

За съжаление, в документацията към пакета (файлът quickstart) не са описани някои тънки особености при неговата настройка и ние ще се опитаме да запълним този пропуск.

СТЪПКА 1

Най-напред ще проверим дали има инсталирани изходният код и/или готови модули за контрол на компютъра. Готовите модули се намират в

    • /lib/modules/(номер_на_версията_на_ОС)/kernel/drivers/sensors

    • /lib/modules/(номер_на_версията_на_ОС)/kernel/drivers/i2c.

В първата директория търсим модул с име w83781d, а във втората – модулите i2c-core, i2c-amd756, i2c-dev, i2c-proc.

Ако ги има, значи модулите за контрол във вашата операционна система са инсталирани.

Също така ще са ни необходими и изходните кодове.

СТЪПКА 2

Не е излишно да проверим дали споменатите модули са заредени при зареждането на операционната система (възможно е покрай вас, още някой да наблюдава дъното). Необходимо е в конзола (по-нататък всички действия се изпълняват в конзола, а където има нужда – и с права на root) да напишем командата:

lsmod

В изхода на командата търсим имената на модулите:

i2c-core, i2c-amd756, i2c-dev, i2c-proc, w83781d.

Ако те са там, това означава че имаме късмет и някой вече се е погрижил за наблюдението.

Но нека допуснем, че не ви е провървяло и не сте намерили нищо, тоест започваме работа на машина, на която няма инсталирани изходни текстове и готови модули от пакета lm_sensors. Тези, при които пакета вече е инсталиран, прочели са и са разбрали документацията, а също така внимателно и творчески са изучили този документ, ще успеят без проблеми да постигнат успех.

СТЪПКА 3

Ще започнем с намирането на пакета lm_sensors. Най-добре е да го изтеглите от сайта на неговите създатели – http://secure.netroedge.com/~lm78/download.html, където е оставен за свободно теглене. По този начин ще получим последната версия на пакета. Ако по някаква причина нямате достъп до Internet, то пакета под формата на rpm файл може да бъде намерен и във вашата дистрибуция. Но забележете – необходим ви е именно изходният код.

СТЪПКА 4

Полученият изходен код разопаковаме в някаква произволна директория, например
/usr/src/linux.

СТЪПКА 5

Сега идва ред на най-интересното – компилацията и инсталацията на пакета lm_sensors. Нека изпълним в директорията usr/src/linux/lm_sensors-номер_версия следните команди:

make
 make install
 depmod -a
СТЪПКА 6

Нека проверим дали в директорията /usr/src/linux/lm_sensors-номер_версия/kernel/busses се е появил модулът i2c-amd756.o, датата на създаване на който трябва да съвпада с текущата дата.

СТЪПКА 7

По същият начин трябва да проверим за наличието на „свеж“ модул w83781d.o в директорията /usr/src/linux/lm_sensors-номер_версия/chips. Нека погледнем във файла /etc/ld.so.conf и да намерим в него реда, съдържащ /usr/local/lib. Ако не намерим такъв ред, трябва да го добавим там ръчно, след което да изпълним командата:

ldconfig

А сега внимавайте – до този момент ние само компилирахме и инсталирахме необходимите за извършване на наблюдението програмни компоненти. Част от компонентите, съгласно концепцията на Linux, които ще се наблюдават са файлове на устройства. На елементите от дънната платка – такива като температурни датчици, датчици за следене оборотите на вентилатора и датчиците за напрежението на захранването – в пакета lm-sensors отговарят файловете на виртуалните устройства, намиращи се в директорията /proc/sys/dev/sensors. И вече е крайно време да погледнем в споменатата директория.

При този поглед в /proc/sys/dev ние няма да намерим поддиректория sensors, което е разбираемо – тя още не е създадена, поради което датчиците на дъното са недостъпни. Следващата команда е предназначена именно за създаване на файловете на датчиците на дъното. Изпълнете

/usr/src/linux/lm_sensors-номер_версия/prog/mkdev/mkdev.sh

Изходът на командата ще ви покаже имената на създадените устройства.

СТЪПКА 8

Най-после необходимите програмни файлове са компилирани и файловете на устройствата са създадени. Сега е необходимо да извършим настройката на системата. С нея ще осигурим зареждането на необходимите модули, ще коригираме файловете за инициализация, за да може всичко необходимо да се стартира със старта на операционната система; ще създадем шаблон за извеждане на конзолата на информация с контролираните параметри. По-нататък кратко и практически без коментари се описва последователността на извършване на необходимите действия за настройване на lm_sensor за работа с дънна платка TYAN S2460 Tiger MP.

СТЪПКА 9

В директорията /usr/src/linux/lm_sensors-номер_на_версия/lib намираме файла libsensors.so.x.x.x (например, libsensors.so.1.2.1), който копираме в /lib. Заедно с този файл се съхраняват и две връзки към него – libsensors.so и libsensors.so.1, които също копираме в /lib (ако тези връзки не съществуват, тогава трябва да ги създадем в /lib).

СТЪПКА 10

В директорията /usr/src/linux/lm_sensors-номер_версия/prog/init намираме файла lm_sensors.init и го копираме в директорията /etc/rc.d/init.d под името lm_sensors.

СТЪПКА 11

В директорията /usr/src/linux/lm_sensors-номер_версия/prog/init редактираме ръчно файла lm_sensors.sysconfig – в неговия край оставяме незакоментирани само следните редове:

MODULE_1=i2c-amd756
 MODULE_2=i2c-dev
 MODULE_3=w83781d

След това копираме този файл в директорията /etc/sysconfig под името lm_sensors.

СТЪПКА 12

От директорията /usr/src/linux/lm_sensors-номер_версия/prog/sensors копираме в директорията /usr/bin файла sensors. Той трябва да има права за изпълнение.

СТЪПКА 13

В края на файла /etc/modules.conf добавяме следния ред:

alias char-major-89 i2c-dev
СТЪПКА 14

В края на файла /etc/rc.d/rc ще добавим показаните по-долу редове (за зареждане на необходимите модули по време на стартиране на операционната система):

modprobe i2c-amd756
 modprobe i2c-dev
 modprobe w83781d init=0
СТЪПКА 15

В директорията /usr/src/linux/lm_sensors-номер_версия/kernel/busses намерете файла i2c-amd756.o и го архивирайте с командата:

gzip i2c-amd756.o.

След нейното изпълнение би трябвало да сте получили файла i2c-amd756.o.gz, който копирате в директорията /lib/modules/(номер_версия_Линукс)kernel/drivers/i2c.

СТЪПКА 16

В директорията /usr/src/linux/lm_sensors-номер_версия/kernel/chips намерете файла w83781d.o и го архивирайте с помощта на командата:

gzip w83781d.o

След нейното изпълнение, трябва да сте получили файла w83781d.o.gz, който копирате в директорията /lib/modules/(номер_версия_Линукс)kernel/drivers/sensors.

СТЪПКА 17

След всичко това, може последователно да изпълним в конзола командите, описани в предишната точка:

modprobe i2c-amd756
 modprobe i2c-dev
 modprobe w83781d init=0

ВНИМАНИЕ – последната команда, изпълнена без параметъра init=0 ще доведе до „увисване“ на машината, поради което не я изпълнявайте, ако в момента изпълнявате критични приложения, тъй като ще се наложи рестартиране на машината. За да се избегне „увисването“ на машината, при планирано рестартиране не забравяйте този параметър нито при ръчното изпълнение на програмата, нито да го опишете във файла /etc/rc.d/rc.

След изпълнението на трите посочени команди нека проверим какво се е променило в системата. Първо да изпълним командата

lsmod

Трябва да получим информация за това, че са заредени модулите:

i2c-core, i2c-amd756, i2c-dev, i2c-proc, w83781d

Вече дойде момента да погледнем в /proc/sys/dev. Там трябва да се е появила директория sensors, а в нея – директория w83782d-i2c-0-2d и файл chips. Във файла chips няма нищо интересно, но си струва да погледнем в w83782d-i2c-0-2d. Там ще видим достатъчно много файлове, между които по имената може да познаем датчиците за контрол на дънната платка. Например fan1, fan2, fan3 – датчици за вентилаторите, temp1, temp2 – датчици за температурата и т. н. Това са файловете на виртуалните устройства, които създадохме по-рано. Те стават достъпни, както видяхме, при зареждане на съответните модули. Под същите тези имена те се използват и във файла за конфигуриране шаблона за извеждане на информация на конзолата.

СТЪПКА 18

Този файл за конфигуриране на шаблона за извеждане на информация на конзолата трябва да се намира в директорията /etc/sysconfig и да се казва sensors.conf. Копираме го (с преименуване) там от директорията /usr/src/linux/lm_sensors-номер_версия/etc, където той носи името sensors.conf.eg.

Файлът е написан с отчитане на всички поддържани микросхеми за контрол. Но на нас не ни е нужно чак толкова много. Достатъчна ни е само секцията, започваща със следния ред:

chip "w83782d-*" "w83783s-*" "w83627hf-*"

Всичко, което се намира над този ред чак до коментарите може да бъде премахнато. Коментарите е добре да оставите – ще са ви полезни. Отстранете и останалите секции, започващи с ред (заедно със самият ред):

chip "w83697hf-*"

Честно казано, премахването на излишните неща въобще не е задължително – то изобщо няма да се отрази на работата на системата. Просто в по-малкият файл, където няма нищо излишно ще е по-лесно да се ориентираме при настройката на изхода към конзолата. Коментарите, които са в началото на този файл са толкова изчерпателни, че просто няма какво да се добави към тях.

Само ще отбележим, че за правилно изобразяване на температурата на процесорите е необходимо на съответните редове в sensors.conf да посочим втори тип на датчика, тоест редовете с описание на типа на температурните датчици трябва да изглеждат така:

set sensor1 2
 set sensor2 2
 set sensor3 2
СТЪПКА 19

За удобство при получаване на информация за състоянието на системата ще създадем скрипт и ще го сложим в директорията /usr/bin. Скриптът прочита файла sensors.conf за правилно изобразяване на информацията и изпълнява командата sensors за нейното извеждане на конзолата. Нека наречем скрипта sensors, като неговото съдържание е много просто:

#! /bin/bash
 cd /etc/sysconfig
 bash /usr/bin/sensors -s -c /etc/sysconfig/sensors.conf
 /usr/bin/sensors

Не забравяме да дадем на скрипта права за изпълнение. Сега, ако модулите са заредени, командата sensor от конзолата ще изведе информация за състоянието на датчиците върху дънната платка. Как да се постъпи след това с тази информация – да я изпратим по пощата, в SMS до системния администратор или да я запишем в дневник, всеки решава сам.

ДОПЪЛНЕНИЕ

Ако е необходимо да организираме контрол на няколко дънни платки S2460 Tiger MP (например в клъстър), то не е задължително да провеждаме всички посочени операции, включително и компилация на всички компютри. Достатъчно е да го направим веднъж и след това да използваме получените файлове на останалите компютри. За това е нужно само да ги поставим в съответните директории.

Изложеният подход може да с успех да се използва за организиране на наблюдение на други дънни платки (в това число и от други производители). За целта е нужно да отчетем разликите в изпълнението на конкретната дънна платка, например какъв схемен набор се използва, каква е вътрешната шина, от която пакета lm_sensors чете данните, какъв е външният чип (в разгледания случай това бяха съответно AMD 760MP, I2C и W83781d). Поддържаните схемни набори и външни чипове са посочени във файла / lm_sensors/etc/sensors.conf.eg на пакета lm_sensors.

Авторът изказва особена благодарност на разработчиците на пакета lm_sensors, на всички участвали в неговото шлифоване и които споделиха информация за употребата му, а също и на производителите на дънната платка TYAN S2460 Tiger MP, създали отличен хардуер.


Виталий Колесник

Статията е взета от сайта на издателска къща Комиздат.


Превод: Николай Ангелов



<< Linux + FreeBSD мини ръководство | Как да използваме dmix в alsa >>