2005-08-30
А неплохо бы почитать, что нового в ядре 2.6...
Но, поскольку никак не получается (то слишком общие рассуждения, то, напротив, узкоспециализированные), остаётся заняться сочинением самому. В надежде на то, что кто-нибудь "алаверды" скажет что-то и тебе интересное.
Вообще, новостей в 2.6 немало. Реальность такова, что хорошо бы их все тестировать: принципиальные усовершенствования - на предмет оценки идеи и реализации, дополняющие - на предмет исполнения. Под принципиальными, в данном случае, подразумеваются фичи (features), продиктованные логикой развития собственно ядра, тогда как дополняющие - те, что "пришли" из проектов, существовавших ранее независимо. Деление, конечно, условное, но, в некоторых случаях, полезное.
К сожалению, усовершенствования "второго рода" нуждаются в тестировании не менее, чем собственные разработки "ядерщиков". Причины очевидны: работоспособный (как правило) проект, нужно модифицировать вплоть до соответствия его новому, "ядерному", положению. Модификация затронет и код, и документацию. А есть ли для программиста что-то более тягостное, нежели модификация вполне работоспособного продукта? Если и есть, то - немного.
Так, в ядре 2.4 получил прописку проект pcmcia, но после двух дней экспериментов я всё-таки был вынужден отказаться от от модуля yenta_socket, предлагаемого ядром, в пользу модуля i82365 из pcmcia-cs-3.2.4. Приходится признать, что "лучшее - враг хорошего". По крайней мере - иногда.
И в данном случае речь пойдёт об одном из усовершенствований "второго рода": интеграции в ядро проекта lm_sensors. Проекту lm_sensors скоро будет шесть лет и он вполне работоспособен. Невозможно, однако, не признать, что любому проекту, включающему в себя создание модулей ядра, интеграция с последним будет на пользу. Другое дело, насколько безболезненной будет эта интеграция... О ней-то и речь.
Если кто-то ещё не догадался: lm_sensors - проект поддержки мониторинга оборудования (температура, вращение вентиляторов, напряжения питания). Мониторинг этот осуществляется посредством обмена по шине SMB (System Management Bus). Кроме чипов мониторинга к этой шине могут быть подключены чипы EEPROM современных модулей памяти. Чипы мониторинга и датчики в настоящее время располагаются не только на M/B, но и на CPU и некоторых видеокартах. Насколько такой мониторинг нужен вообще - каждый обладатель персонального компьютера вправе решать сам, но, несомненно, что для серверов и технологических компьютеров это, практически, стандарт.
В мире MS Windows мониторинг оборудования - почти исключительно инициатива производителей оборудования. Со всеми вытекающими отсюда последствиями: неудовлетворительное, подчас, качество ПО, отсутствие даже намёка на стандарт, усечённая функциональность. Коммерческие и свободные программы мониторинга довольно немногочисленны.
Несколько иное положение сложилось в Linux. То, что мониторинг требует действий на уровне ядра - не хорошо и не плохо: это - реальность. То, что группа
энтузиастов взялась реализовать единый подход к мониторингу, осуществляемому с помощью десятков различных датчиков и чипов - очень хорошо. А то, что в
конечном счёте это стало "естественным" умением ядра - прекрасно. Согласитесь, что возможность получить данные мониторинга откуда-нибудь из /sys/proc... - лучшее, что можно было ожидать. Эти данные можно визуализировать в любой
желаемой форме, протоколировать, включать в "цепочки" обратной связи и т.д. и т.п.
Словом, идея - хороша. Осталось оценить реализацию, что я и предлагаю сделать всем, читающим эти строки. А чтобы эксперимент отнял по возможности меньше времени, прилагаю коротенькую инструкцию. Инструкция эта - отнюдь не попытка заменить или дополнить довольно качественную документацию проекта. Просто эта документация пока в большой степени ориентирована на операции с ядрами <2.5. Да и великовата, если мониторинг - не насущная потребность, а просто "интересно". Итак...
lm_sensors невелик (менее 1MB), так что - ничего страшного./usr/local/ не используется, нужно отредактировать Makefile. На предмет определения переменной PREFIX, разумеется: configure в дистрибутиве отсутствует.INSTALL, нам требуется только$ make user; make user_install
sensors-detect, требуется наличие устройств /dev/i2c*. Если в системе их нет, то достаточно запустить prog/mkdev/mkdev.sh (путь указан относительно корня дистрибутивного каталога lm_sensors) или загрузить модуль i2c-dev (modprobe i2c-dev)
sensors-detect. При наличии определённой неприязни к английскому, на все вопросы скрипта можно категорически давить "Enter"
/etc/sysconfig/sensors, но файл этот используется только скриптом /etc/rc.d/init.d/lm_sensors, выполняющим функции демона, а вот запускать его или нет (и как) - вопрос частный для вас и вашего дистрибутива./lib/modules/2.6.x/kernel/drivers модули, которые порекомендовал вам загрузить sensors-detect. Аппаратная база мониторинга, а, вслед за ней и проект развиваются так бурно, что скрипт мог и отстать от реального состава драйверов. Так, рекомендованный мне модуль w83627hf в настоящее время не существует, зато модуль нынешний модуль w83781d обслуживает, в том числе, и чип W83627HF.rmmod i2c-devи выполнить предложенные команды. Что-то вроде:
modprobe i2c-i801 modprobe i2c-isa modprobe eeprom modprobe w83781d /usr/bin/sensors -s
sensors
Результат - на экране. На несоответствие текстов ожиданию внимания не обращаем: настраивается в /etc/sensors.conf. А вот если результат "нулевой"... Тут вариантов два:
Напоследок: маленький gift. В каталоге prog/pwm есть скрипт pwmconfig, который позволит определить, есть ли возможность у вашего M/B регулировать скорость вращения вентиляторов. Если "да", то скрипт fancontrol[.pl] может эту регуляцию осуществлять автоматически.