Hw.sensors

Hw.sensors — это аппаратно-зависимый фреймворк для датчиков, реализованный на уровне ядра и происходящий из OpenBSD. Он использует интерфейс sysctl в качестве транспортного слоя между ядром и пользовательским пространством[1]. По состоянию на 2019 год, фреймворк применяется более чем в сотне драйверов устройств в OpenBSD для экспорта различных датчиков окружающей среды, среди которых датчики температуры являются самыми распространёнными. Получение и мониторинг значений датчиков осуществляется в пользовательском пространстве при помощи sysctl, systat, sensorsd, OpenBSD NTP Daemon (OpenNTPD, ntpd), Simple Network Management Protocol (snmpd), ports/sysutils/symon и GKrellM[2].

Общие сведения
Hw.sensors
Тип системный мониторинг
Авторы Константин А. Муренин (2006), Александр Юрченко (2003–2004)
Разработчик Проект OpenBSD
Написана на C
Операционные системы OpenBSD, DragonFly BSD
Первый выпуск 25 апреля 2003
Репозиторий cvsweb.openbsd.org/cgi-b…
Лицензия ISC

История

Концепция фреймворка была разработана Александром Юрченко в 2003 году, когда он переносил несколько драйверов, основанных на envsys, из NetBSD. Вместо прямого переноса envsys из NetBSD была реализована более простая система на базе sysctl.

Использование фреймворка драйверами устройств значительно возросло после выхода OpenBSD 3.9. За шесть месяцев число драйверов, использующих hw.sensors, увеличилось с 9 в OpenBSD 3.8 (выпущена 1 ноября 2005 года) до 33 в OpenBSD 3.9 (1 мая 2006 года).

К 23 декабря 2006 года фреймворк использовался уже в 44 драйверах. В этот момент был внедрён патчсет, который преобразовал одноступенчатую схему адресации в более стабильную многоуровневую.

В 2007 году фреймворк был портирован на FreeBSD в рамках гранта Google Summer of Code, а позже в том же году был принят DragonFly BSD. Существенно повысилась удобство использования службы мониторинга датчиков sensorsd, что также стало результатом гранта GSoC.

К 1 ноября 2008 года общее количество поддерживаемых драйверов в OpenBSD 4.4 достигло 68, увеличившись на 7 за полугодичный релизный цикл. Такой темп роста — примерно по одному новому драйверу в месяц — характерен для всей истории развития hw.sensors с момента выпуска OpenBSD 3.9.

Экспортируемые драйверами значения в фреймворке доступны только для чтения, однако существует внешний патч, добавляющий поддержку управления вентиляторами как во фреймворк, так и в один из драйверов для наиболее популярных семей чипов Super I/O. Данный патч доступен для OpenBSD и DragonFly BSD.

Драйверы

Во OpenBSD фреймворк интегрирован с аппаратными и программными средствами, такими как ESM от Dell, IPMI, и I²C, а также с рядом популярных чипсетов Super I/O через драйвер lm(4).

Ключевым отличием от других решений, например lm sensors, является простота и работа из коробки: драйверы не требуют (и не поддерживают) никакой настройки; системному администратору не нужно устанавливать или конфигурировать дополнительные компоненты для начала работы датчиков. Это сочетается с избирательной процедурой одноразового только для чтения сканирования на шине I²C, централизованно реализованной Тео де Раадтом с использованием кэша; в отличие от конкурирующих решений, её можно оставлять включённой по умолчанию постоянно.

Датчики drive для RAID

Также через этот фреймворк реализована поддержка автоматического мониторинга накопителей RAID; концепция датчиков типа drive была в 2007 году заимствована в NetBSD и реализована в envsys.

Датчики timedelta для OpenNTPD

OpenNTPD использует датчики типа timedelta для синхронизации времени. Такие датчики предоставляют драйверы NMEA и другие.

Примечания

  1. Murenin, Constantine Aleksandrovich. OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (англ.). — 2010-05-21. Архивировано 20 августа 2025 года.
  2. BSDCan 2008: Hardware Sensors Framework | KernelTrap (неопр.). web.archive.org. Дата обращения: 26 сентября 2025.