Серверная (www.it-simple.ru)

S.M.A.R.T. для Tru64 Unix (smartmontools)


Это чужая статья, полученная Анонимусом из окружающего Информационного Эфира.
Проверить справедливость данных в ней (как и верность приложенных файлов) — не имею возможности. Пользуйтесь с осторожностью.


S.M.A.R.T. (англ. Self-Monitoring, Analysis and Reporting Technology) — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.

Дано

Есть Alpha-сервер (жёсткие диски, самоочевидно — SCSI).
На сервере крутится родная ОС (Tru64 Unix, aka OSF1 версии P5.1 1644). Платформа официально скорее мертва (причём уже лет с 10 как).
Проблема периодического выхода из строя жёстких дисков порождает естественное желание отслеживать статусы S.M.A.R.T.
Столь же естественно (как в силу статуса платформы, так и исходя из логики бухгалтерии) желание обойтись без использования мутных проприетарных решений. Откуда следует ориентация на smartmontools.

Проблема

В списке официально поддерживаемых smartmontools (http://smartmontools.sourceforge.net/) платформ Tru64 отсутствует (в общем и целом предсказуемо).

Решение

Однако, как подсказывает тов. гугль, приложение на данную платформу портировалось.
Толика внимания (в новом интерфейсе sourceforge.net недолго и заблудиться) и можно промыслить файл патча: smartmontools-5.33-osf1.patch.gz (в треде есть ещё два патча, но с ними уже непонятно куда и как они накладываются, в TODO, пока исхожу из ориентации на явно упомянутый).

Следующим очевидным шагом — добыть архив исходников (собственно smartmontools-5.33.tar.gz).

Наложить патч:

$ gunzip smartmontools-5.33.tar.gz
$ tar xf smartmontools-5.33.tar

(просто tar zxf smartmontools-5.33.tar.gz в наличной реализации не прокатит)

$ gunzip smartmontools-5.33-osf1.patch.gz
$ patch -p0 < smartmontools-5.33-osf1.patch

И собственно сборка на целевой платформе (квест с промышлением gcc в связи с сворачиванием поддержки платформы проходить не стал, в патче утверждается, что с 3.4.4 работает, но где брать пакет непонятно, собирать же гнутый компиллятор наличным при том, что наличный годится и для сборки собственно программы...).

Перво-напрево — убедиться в наличии (и работоспособности, "приятный" сюрприз при наличии привычки к СПО) компиллятора. ЕМНИП в версии 5.33 наличие компиллятора C++ (в данной традиции исполняемый файл зовётся cxx) не является необходимым условием, за зависимости навскидку не скажу, дальнейшие опыты проводились на системе с наличным и рабочим компилятором C++.

Утилиту управления ПО в Tru64 зовут setld, утилиту для прописывания используемых лицензий (внушаетЪ в куда бОльшей степени, чем традиционные для альтернативной ОС волшебные слова из 25 букв, и даже чем активация) — lmf.

Вторым шагом — установить необходимые зависимости (цитирую использовавшееся для сборки 5.33; на фоне наличия родных для платформы реализаций make'а и m4 не вполне очевидно, но GNU-версии работают совершенно иначе):

1. GNU make (3.82)
2. GNU m4 (1.4.15)
3. GNU autoconf (1.68)
4. GNU automake (1.7) (1.7.9)

Я в курсе известной ереси (http://gentoo.ru/node/14443), но курить ещё и про сборку нативных пакетов... не на данном этапе (начинать с утилиты kits (http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V40F_HTML/MAN/MAN1/0178____.HTM) и далее в направлении Guide to Preparing Product Kits (http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V40F_HTML/AQYW7CTE/TITLE.HTM)).

Уже перед сборкой имеет смысл переопределить переменную PATH (практически выставление приоритета GNU-версий):

$ export PATH=/usr/local/bin:$PATH

И завершающим этапом — сборка собственно smartmontools:
To build with Compaq C (CXX651V42):

$ cd smartmontools-5.33
$ ./autogen.sh
$ CC="cc -nodtk" ./configure
$ make
...


В таком виде (с умолчательными параметрами конфигурации), исполняемый файл —
/usr/local/sbin/smartctl

Файлы