У многих в обслуживании имеются сервера с материнскими платами Intel.
К сожалению, из-за различных проблем либо с оборудованием, либо с недостаточно стабильнымии драйверами, бывает, что сервера "повисают".
С такими случаями поможет справиться аппаратный watchdog(к примеру), но это отдельная железка.
К сожалению, не встречался с серверными вариантами плат фирм, отличных от Intel, поэтому буду говорить только про них.
В достаточно современных материнских платах от Intel есть встроенная возможность удалённо управлять сервером, т.к. там есть BMC(или miniBMC).
BMC(по терминологии INTEL) Baseboard Management Controller, miniBMC, соответственно - урезанный вариант BMC(превращается в полноценный MC(Management Controller)путём установки IMM(Intel Management Module)
Для того, чтобы его(BMC/miniBMC) задействовать, нужно сначала его сконфигурировать.
Для этого нужно:
* Иметь в ядре поддержку IPMI(я собрал модулями)
* Я ещё собрал поддержку I2C для lm_sensors(тоже модулями)
* OpenIPMI - набор библиотек и утилит, позволяет локальной машине взаимодействовать с BMC.
* ipmitool - CLI, позволяющая взаимодействовать с BMC с Linux-машины, поддерживает "общение" через LAN и через OpenIPMI-интерфейс.
* Для Slackware-10.2 вы можете взять собранные пакеты тут

Итак, приступим.
Берём патчи для ядра с сайта OpenIPMI
На текущий момент(для ядра 2.6.13, подходит и для 2.6.13.4) это:
linux-i2c-2.6.13-v36.1-i801.diff
linux-i2c-2.6.13-v36.1.diff
linux-ipmi-2.6.13-v36.1-2.base.diff
linux-ipmi-2.6.13-v36.1-2.emu.diff
linux-ipmi-2.6.13-v36.1-2.smb.diff
linux-nmi-2.6.13-v36.1.diff
(заодно собрал поддержку sk98lin)
Накладываем последовательно вышеуказанные патчи, собираем ядро с поддержкой IPMI и I2C(модулями), перегружаемся.
Создаём устройство ipmi0, если его нет:
# mknod /dev/ipmi0 c `cat /proc/devices | grep ipmidev |cut -d " " -f 1` 0
подгружаем модули:
* I2C - i2c-i801, eeprom(у меня так) - необязательно
* IPMI
a) ipmi_si, ipmi_devintf(для полноценного BMC)
b) ipmi_devintf, ipmi_smb(для miniBMC)
Собираем OpenIPMI и ipmitool, а дальше начинается самое интересное - конфигурация BMC ;)
Для начала, после корректной вышеописанной настройки, вылолните команду:
# ipmitool -I open chassis status
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : always-off
Last Power Event     : 
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Если вывод команды у вас примерно совпадает с моим, вы можете попробовать дальше:
# ipmitool -I open sdr list
# ipmitool -I open sel list
т.е. всё отлично. На данном этапе вы можете локально управлять сервером, но локально не интересно, поэтому настраиваем дальше:
Настроим сетевую карточку. Для этого можно использовать скрипт /usr/share/ipmitool/bmclanconf, идущий с ipmitool.
В моём случае его надо было подправить, в самом низу строчку привести к такому виду:
ipmitool_lan_set "auth callback,user,operator,admin" "md5,password"
т.к. md2 у меня не поддерживается, что можно увидеть по строчке "Auth Type Support":
# ipmitool lan print 1
Set in Progress         : Set In Progress
Auth Type Support       : NONE MD5 PASSWORD
...
Затем настраиваем карту:
# /usr/share/ipmitool/bmclanconf -c 1 -i eth0
Set in Progress         : Set In Progress
Auth Type Support       : NONE MD5 PASSWORD 
Auth Type Enable        : Callback : MD5 PASSWORD
						: User     : MD5 PASSWORD
						: Operator : MD5 PASSWORD
						: Admin    : MD5 PASSWORD
IP Address Source       : Static Address
IP Address              : <your ip here>
Subnet Mask             : <your mask here>
MAC Address             : <your MAC here>
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Enabled
Gratituous ARP Intrvl   : 8.0 seconds
Default Gateway IP      : <your gw MAC here>
Default Gateway MAC     : 00:13:c3:35:ee:ff
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
Cipher Suite Priv Max   : Not Available
затем надо настроить пароль на управление BMC через LAN
# ipmitool -I open lan set 1 password <your password here>
Затем пробуем с удалённой машины с Linux:
$ ipmitool -I lan -H <your ip here> chassis status
Password: <your password here>
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : always-off
Last Power Event     : 
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Получилось! :) Теперь вы можете удалённо включать/выключать(soft и hard)/перезагружать/мониторить сервер!
Используемая документация:
* IPMI HOWTO for Debian GNU/Linux on the Intel SR2300 (Server Board SE7501WV2)
* Сайт и рассылка openIPMI
* Сайт и рассылка ipmitool
P.S. Я рассмотрел примитивное управление сервером, т.к. я настраивал в короткое время и miniBMC. Нормальный BMC(не урезанный) поддерживает также SOL(Serial Over LAN), что описано в вышеперечисленной документации.

© 2005 Dmitry A. Koptev