Меню пользователя
Имя пользователя
Пароль
Запомнить меня
Поиск по сайту
Вход пользователей
Пользователь:

Пароль:

Запомнить меня

Забыли пароль?

Регистрация
Поиск
Кто активен
14 пользователь(ей) активно (1 пользователь(ей) просматривают Open Статьи)

Участников: 0
Гостей: 14

далее...
:: Инфо ::
При копировании, перепечатывании и публикациях в других источниках обязательно указание гиперссылки и описание названия ресурса "Open-SUSE . RU - русскоязычное сообщество пользователей OpenSUSE Linux в России и не только."
SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
Open Статьи > Система. Администрирование > UPS & USB: не дадим системе умереть.
UPS & USB: не дадим системе умереть.
Опубликовал(а) Solnechnyi_z 19/07/2009 (6620 прочтений)
В данной статье описывается прием подключения ИБП через usb-порт, а так же решение некоторых трудностей.

Часть I.
Для счастливых обладателей ИБП фирмы APC достаточно скачать и установть следующие пакеты:
http://open-suse.ru/repo/opensuse11.1/i586/apcupsd-3.14.6-1.su111.i586.rpm
http://open-suse.ru/repo/opensuse11.1/i586/apcupsd-gapcmon-3.14.6-1.su111.i586.rpm
http://open-suse.ru/repo/opensuse11.1/i586/apcupsd-multimon-3.14.6-1.su111.i586.rpm

Для начала можно попробовать GUI-утилиту gapcmon (apcupsd-gapcmon-3.14.6-1.su111.i586.rpm):

Основное окно




Окно с параметрами UPS




Тем, у кого стоит системный монитор conky, возможно пригодится вот этот конфиг, написаный мной:
${apcupsd localhost 3551}UPS: ${color FFFFCB}${alignr}APC ${apcupsd_model} (${apcupsd_cable})${color}
Status:${color FFFFCB}${alignr}${apcupsd_status}${color}
Timeleft:${color FFFFCB}${alignr}${apcupsd_timeleft} min${color}
Battery charge:${color FFFFCB}${alignr}${apcupsd_charge BAT1} %${color}
Load:${color FFFFCB}${alignr}${apcupsd_load} %${color}
${apcupsd_loadbar 4}



Команды (выполняются с правами root):
apcupsd - запуск демона

apcaccess - вывод информации о ибп:
# apcaccess
APC : 001,038,1011
DATE : Sat Jul 18 23:26:54 OMSST 2009
HOSTNAME : home_SuSE_linux
VERSION : 3.14.6 (16 May 2009) suse
UPSNAME : home_SuSE_linux
CABLE : USB Cable
MODEL : Back-UPS ES 525
UPSMODE : Stand Alone
STARTTIME: Sat Jul 18 12:16:11 OMSST 2009
STATUS : ONLINE
LINEV : 231.0 Volts
LOADPCT : 43.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 27.6 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 195.0 Volts
HITRANS : 255.0 Volts
ALARMDEL : Always
BATTV : 13.6 Volts
LASTXFER : Unacceptable line voltage changes
NUMXFERS : 1
XONBATT : Sat Jul 18 23:25:37 OMSST 2009
TONBATT : 0 seconds
CUMONBATT: 5 seconds
XOFFBATT : Sat Jul 18 23:25:42 OMSST 2009
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : 4B0829P10471
BATTDATE : 2008-07-18
NOMOUTV : 230 Volts
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 300 Watts
FIRMWARE : 851.t3.I USB FW:t3
APCMODEL : Back-UPS ES 525
END APC : Sat Jul 18 23:26:56 OMSST 2009

apctest - тестирование системы:
# apctest
2009-07-19 05:36:22 apctest 3.14.6 (16 May 2009) suse
Checking configuration ...
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE

You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
apctest FATAL ERROR in device.c at line 71
Unable to create UPS lock file.
If apcupsd or apctest is already running,
please stop it and run this program again.
apctest error termination completed

Часть II.
Для тех, у кого имеются некоторые проблемы с подключением ИБП.

1. Для начала скачиваем исходные коды программы и устанавливаем ее в
систему, ничего необычного на этом шаге нет, поэтому выполняются обычные
процедуры:

wget http://eu1.networkupstools.org/source/2.2/nut-2.2.1.tar.gz
tar -xvzf ./nut-2.2.1.tar.gz
cd ./nut-2.2.1.tar.gz
./configure && make && make install


После установки появляются следующие каталоги (/usr/local/ups/):

bin - каталог с драйверами под определенные модели UPS'ов
etc - файлы конфигурации демонов, настройки подключения к ups
sbin - системные демон, демон мониторинга, и еще
html, cgi-bin, include, lib и share - в них ничего править не придется, так что их описывать не обязательно

2. Для начала, кто делает это впервые, нужно определиться с UPS, подключен
ли он, видит ли его ядро. воспользуемся утилитой из пакета usbutils:

lsusb

вывод покажет, какие usb-устройства есть в системе, если вы его не видите.


3. Далее в каталоге с исходными кодами, есть подкаталог data, в нем есть
список поддерживаемого оборудования - driver.list, там можно найти
поддерживается ли ваш UPS и какой драйвер подходит для него.

Теперь когда определились с моделью ups и драйвером, можно приступать к
настройке конфигов.

Редактируем /usr/local/ups/etc/ups.conf

user = nobody
[usbhid]
driver = usbhid-ups
port = /dev/hiddev0

В общем, строка user показывает от кого будет запускаться драйвер, он
запускается с правами nobody и поэтому в начале не может получить
доступа к некоторым ресурсам (в каталоге /dev/, не может создать .pid и
прочее)

[usbhid] - имя нашего UPS, рекомендую запомнить, потому что еще пригодится;
driver - драйвер для нашего UPS, располагается в каталоге ups/bin;
port - место где демон будет взаимодействовать с ups (в некоторых дистрибутивах, путь может иметь вид /dev/usb/hiddev0);

Примечание: вообще в каталоге /bin есть отдельный драйвер для UPS'ов
фирмы АРС, используется usbhid-ups, потому как UPS подключен через USB.


4. Перед запуском рекомендую открыть в отдельном окне tail -f
/var/log/messages, дабы просматривать системные сообщения, выводимые демонами.

Далее запускаем upsdrvctl для соединения с UPS:

ups/bin/upsdrvctl start usbhid

Вот тут как раз и указываем имя нашего UPS - usbhid, так мы явно
указываем что нужно использовать секцию [usbhid].

Вообще у upsdrvctl есть 2 полезных параметра, -t - тестовый режим,
upsdrvctl выводит на экран то что бы он делал, во время нормального
запуска; и -D - отладочный запуск (debug).

Смотрим в messages все ли нормально, если нет, то разбираемся в причинах, если да идем дальше.

5. Правим /usr/local/ups/etc/upsd.conf и /usr/local/ups/etc/upsd.users:
в файле upsd.conf настраиваются права доступа к upsd:

ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32

ACCEPT localhost
REJECT all
LISTEN 127.0.0.1 3493

В файле upsd.users настраиваются пользователи имеющие доступ к upsd:

[upsmon]
password = usbhidpassword
allowfrom = localhost
upsmon master

Далее с правами доступа на файлы и директории, у меня часто вылазили
сообщения что не хватает прав доступа к каким то файлам, поэтому пришлось
немного их поменять, хотя с точки зрения безопасности это не хорошо:

chmod 666 /dev/hiddev0 - указание user = root в ups.conf, не помогло избежать проблемы доступа, к hiddev0
chmod 777 /var/state/ups - там upsd не мог создать .pid файл
chmod 640 ups/etc/upsd.conf

Теперь запускаем upsd и в случае успешного запуска проверяем соединение с UPS:

ups/sbin/upsd
ups/bin/upsc usbhid@localhost


успешный вывод должен быть примерно следующий...

battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: 2001/09/25
battery.mfr.date: 2007/06/12
battery.runtime: 7177
battery.runtime.low: 120
battery.type: PbAc
...
ups.status: OL
ups.test.result: No test initiated
ups.vendorid: 051d

Теперь настраиваем upsmon для того, чтобы следить за тем когда разрядится
батарея и выключить нашу машину. Редактируем /usr/local/ups/etc/upsmon.conf:

Пример полностью взят из статьи с opennet, что немного облегчило мне
жизнь. Но не забываем поменять имя UPS'а и пароль на свои (самая первая
строка).


MONITOR usbhid@localhost 1 upsmon usbhidpassword master
NOTIFYCMD /usr/local/sbin/callwall
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 2
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5


Все, теперь запускаем upsmon и и если запуск прошел успешно можно
протестировать нашу работу - выдергиванием шнура питания из сети.

Примечание: запустились ли процессы можно проверить через ps, следующим
образом:
ps ax | grep ups
ups/sbin/upsmon

Также проверить, как останавливается система можно, сказав upsd, что UPS
получил сигнал выключения питания:
upsmon -c fsd

P.S. В статье использованы материалы с сайта http://www.opennet.ru/.

Навигация по статьям
Предыдущая статья Сеть из виртуальных машин openSUSE 11.1 на VirtualBox 3.0.4 МТС 3g-modem в LINUX Следующая статья

open-suse.ru