LXF92:Lm-sensors HOWTO
|
|
|
- Lm-sensors HOWTO Простой способ слежения за состоянием «железа»
Содержание |
Hardware: Следи за работой системы
- Предупрежден – значит, вооружен. Слежение за устройствами – лучший способ предотвратить неожиданный крах системы, утверждает Грэм Моррисон.
Важных причин для отслеживания состояния ваших устройств немало. К примеру, вы «разогнали» свою крутую Linux-машину и должны отслеживать температуру и напряжение на процессоре, чтобы не поджарить его; или втиснули все части компьютера в крошечный корпус, чтобы уместить его под телевизором, и хотите убедиться, что он не сгорит вместе со своим высоким экранным разрешением.
Большинство современных комплектующих, включая центральный процессор, жесткие диски, видеокарты и материнские платы, имеют один-два датчика, и слежение за их показаниями поможет вам создать более стабильную систему – ликвидируя проблемы до их превращения в отказ или утрату данных. Наблюдение за вентилятором позволит превратить замену дорогого устройства в покупку дешевого кулера. Но, пожалуй, самая веская из причин заняться слежкой за устройствами – ведь это же круто! На данном уроке я покажу, как применять продвинутые инструменты для контроля за датчиками вашей материнской платы и других устройств.
Мой первый датчик
За температурой процессора можно следить обычной командой. Дело
в том, что модуль ядра, включенный во многие дистрибутивы Linux,
умеет считывать показания прямо с чипа вашего процессора. Модуль
называется thermal, и при загрузке он добавляет /proc/acpi/thermal_zone в файловую систему /proc. Наберите lsmod |grep thermal
от имени
системного администратора, чтобы узнать, загружен модуль или нет.
Если да, то вы увидите его в списке вместе с модулем processor. Если
нет, попытайтесь набрать modprobe thermal
и загрузить его вручную.
Теперь вы можете смерить температуру вашего процессора, набрав
следующее:
cat /proc/acpi/thermal_zone/THRM/temperature temperature: 40 C
[не во всех дистрибутивах; так, для Mandriva 2007.0 команда будет cat /proc/acpi/thermal_zone/THM/temperature
прим. пер.]
Выведется температура по шкале Цельсия. С тем же успехом вы можете набрать acpi -t
. Проблема обоих этих подходов в том, что они
работают не на всех машинах: модуль thermal может не дружить с
вашим оборудованием, или его поддержка может быть не встроена
в ядро в вашем дистрибутиве. Другая проблема – таким образом вы
узнаете только температуру процессора. А другая информация, вроде температуры материнской платы или насколько быстро вращается вентилятор для предотвращения перегрева, недоступна
[это не совсем так – в каталоге /proc/acpi
есть множество других файлов, доступных при загрузке соответствующих модулей ядра и содержащих, к примеру, степень заряда батареи ноутбука, – прим.ред.].
К счастью, есть решение получше, названное Lm-sensors – монолитный инструмент для слежения практически за всеми датчиками, имеющимися в вашей системе. Это раскидистый набор модулей ядра, файлов конфигурации, GUI для настройки и данных. Не пугайтесь трудных слов: Lm-sensors – настоящая нирвана мониторинга устройств.
Установка Lm-sensors
Ваш дистрибутив должен содержать Lm-sensors в виде установочного пакета. Просто откройте менеджер пакетов и поищите ‘Lm-sensors’. Вы должны увидеть несколько пакетов, включая сам Lm-sensors, отдельную библиотеку (libsensors3) и фоновый демон (sensord), а также несколько графических оболочек для показа сведений, выдаваемых Lm-sensors в виде приборных досок и циферблатов. Но пока просто убедитесь, что необходимый пакет Lm-sensors установлен.
Lm-sensors имеется в менеджере пакетов большинства дистрибутивов; как и демон, протоколирующий показания в фоне.
Все комбинации устройств предусмотреть невозможно, поэтому для работы Lm-sensors требует тщательной настройки. Он должен опросить различные компоненты устройств, проверить сигнатуры доступных датчиков ваших устройств и составить опись оборудования.
Инструмент, точно определяющий, что и где находится, называется sensors-detect. Он запускается из командной строки от имени администратора. Если при его первом запуске (хотя это маловероятно) произойдет ошибка, похожая на ‘No i2c device files found’, поищите на сайте Lm-sensors (http://www.lm-sensors.org) скрипт mkdev.sh. Он создаст недостающие ссылки в вашей файловой системе, потому что Lm-sensors сканирует устройства, только если видит ссылки на них.
Поисковый скрипт задаст пару вопросов, и практически все правильные ответы даны по умолчанию. Например, первый вопрос – хотите ли вы проверять I2C- или Smbus-адаптеры. Это первейшие кандидаты на информацию о датчиках, способные предоставить данные о потреблении энергии и состоянии батарей, если вы используете ноутбук, так что следует ответить «Да». Не беспокойтесь если при первом поиске не выявится ни одного датчика – второй проход выявит недостачу.
На современных компьютерах, весьма вероятно, датчики не обнаружатся, и программе поиска понадобится другой подход. При нем опрашиваются все подключенные к системе устройства, с целью определить, можно ли извлечь какие-либо данные о датчиках из их драйверов. Есть малый шанс краха системы при опросе плохо реализованного драйвера – не забудьте о нем, особенно если ваш свежесозданный в порыве вдохновения шедевр еще не сохранен. Именно по этой причине инструмент поиска датчиков информирует вас о каждом устройстве, которое тестируется в данный момент: если что-то пойдет не так, вы сможете пропустить проблематичное устройство при следующем запуске поискового скрипта. Но как правило, можно без опаски ответить «Да» на все вопросы. Типичный порядок опроса – сначала видеокарта, потом любые датчики на материнской плате, которые могут быть опрошены по шине ISA.
sensors-detect задаст столько вопросов, сколько обнаружит устройств.
По окончании опроса устройств на предмет наличия датчиков, вам будет выдан список найденных датчиков, вместе с модулями, необходимыми Lm-sensors для чтения информации с них. Этот список важен, потому что фрагмент его необходимо перенести в файл конфигурации: там перечислены все драйвера ядра, которые необходимо загрузить до того, как можно будет получать данные с датчиков, и находится он между двумя маркерами #----cut here----. Этот фрагмент нужно вставить в конец вашего файла /etc/modules, чтобы драйвера загружались при запуске вашей машины.
Внесение изменений вполне можно доверить поисковому скрипту, но все же неплохо и проверить файл конфигурации на наличие ошибок. Если у вас не обнаружились заведомо присутствующие датчики, будет полезно обратиться к Интернету. Иногда утилита поиска не распознает ваши датчики, особенно если у вас новые устройства, и вы можете достигнуть большего успеха, скопировав и вставив чьи-то готовые настройки. Почти всегда находится кто-то, уже проторивший для вас дорогу.
Калибровка
В моей тестовой системе по результатам поискового скрипта потребовалось загрузить только три модуля: i2c-viapro, eeprom и it87. Вы можете сделать это вручную (от имени администратора), набрав modprobe и затем имя модуля – то есть опробовать конфигурацию можно без перезагрузки машины. Простейшая команда опроса драйвера называется sensors, и выполнение ее от имени root обычно приводит к выводу одной или двух страниц (см. рисунок). Вывод достаточно сырой: некалиброванный, часто без меток и с ошибками. Но его достаточно, чтобы понять: ваши датчики хоть что-то сообщают.
При корректной настройке Lm-sensors, ввод ‘sensors’ снимет показания со всех аппаратных датчиков вашей системы: обычно на страницу или две.
Файл конфигурации Lm-sensors находится в /etc/sensors.conf. Его следует отредактировать, если вы хотите сделать небрежный вывод команды sensors более точным и читаемым. Но прочесть его не так легко. Чтобы знать, что искать в этом файле, вы сначала должны определить проблемы, способные возникнуть с выводом команды sensors,. Например, температура моей материнской платы и процессора были перепутаны:
M/B Temp: +54°C (low = +15°C, high = +40°C) sensor = thermistor CPU Temp: +41°C (low = +15°C, high = +45°C) sensor = thermistor
Чтобы найти соответствие меток и значений температуры, попытайтесь посмотреть в BIOS’е материнской платы. Большинство современных BIOS выводят список температур многих компонентов, и свя