Неисправность запуска сетевых инструментов ИБП с ИБП Eaton 3S

Запуск сервера Ubuntu на ИБП Eaton 3S 700VA. USB-соединение Eaton входит в мой Ubuntu Server. Я пытаюсь использовать NUT для управления ИБП.

После sudo su"ИНГ

cat /etc/nut/ups.conf:

[eaton]
    driver = usbhid-ups
    port = auto
    desc = "Eaton 3S"

upsdrvctl -t start

Network UPS Tools - UPS driver controller 2.6.1
*** Testing mode: not calling exec/kill
   0.000000 
   0.000805 Starting UPS: eaton
   0.000955 exec:  /lib/nut/usbhid-ups -a eaton

upsdrvctl start

Network UPS Tools - UPS driver controller 2.6.1
Network UPS Tools - Generic HID driver 0.35 (2.6.1)
USB communication driver 0.31
Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)

4 ответа

Хотя я не претендую на звание эксперта здесь, я обеспокоен тем, что этот ответ не приведет к постоянному изменению разрешений при перезагрузке и / или USB-кабель от ИБП будет перемещен на другой порт.

Следующая информация отсюда: Musings of Nannerpuss: NUT - Сетевые инструменты UPS - на Ubuntu.

"... Проблема заключается в том, что Ubuntu монтирует устройство как принадлежащее пользователю root, но демон-гнев переходит в непривилегированную учетную запись, которая не имеет необходимого доступа. Простое решение заключается в использовании udev для настройки разрешений устройства.

Подключите устройство и (от имени root) запустите lsusb и найдите его. Обратите внимание на идентификаторы шины и устройства, а также пару Vendor:Product ID...."

используя вывод как в ответе выше:

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply   

снова по ссылке "... Вы можете создать правило udev, которое управляет поведением монтирования при загрузке: ..." (отредактировано для лучшего соответствия этому сценарию)"

  • используйте ваш любимый текстовый редактор, чтобы создать (скорее всего) новый файл udev rules.d. Число должно быть больше, чем любой другой файл правил udev.d для того же действия:

например

sudo nano /etc/udev/rules.d/90-nut-ups.rules

# /etc/udev/rules.d/90-nut-ups.rules
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="051d", ATTR{idProduct}=="0002", \
MODE="0660", GROUP="nut"

Правило следит за добавлениями USB-устройств у поставщиков и продуктов, соответствующих ИБП. Затем он устанавливает режим на 0660 и группу на гайку вместо корня по умолчанию.

Обратите внимание, что в этом ответе используется разрешение 660, а не 666, поскольку этого должно быть достаточно и более безопасно.

Перезагрузите udev (перезагрузите или, возможно, отключите и снова подключите USB-кабель от ИБП к порту ПК), затем отсоедините и снова подключите устройство и проверьте правильность новых разрешений. Я неясный в этой части. В любом случае, как только пользовательская группа ореха прочитает и запишет на устройстве, она сможет успешно запускаться.

Редактирование udev rules.d работало в моей системе 12.04.2, даже когда я переместил USB-кабель в другой порт, что привело к различным номерам шинных устройств на выходе lsusb. Удев справился со всем без вмешательства. На самом деле, мне, возможно, не пришлось перезагружаться при его перемещении, но я точно не могу вспомнить и оставлю это тестирование кому-то другому.

  • Ты можешь использовать lsusb узнать номер автобуса и устройства

  • Затем измените разрешение на устройство

    chmod 0666 /dev/bus/usb/[bus number]/[device number]
    

Например

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
$ chmod 0666 /dev/bus/usb/002/004

Относительно этой ошибки:

 failed to claim USB device: could not claim interface 0: Operation not permitted

ЧАВО NUT на http://www.networkupstools.org/docs/FAQ.html содержит следующее (выделено мной):

если NUT был недавно установлен, и если USB-шнур устройства уже был подключен при установке гайки [затем], просто отсоедините и снова подключите USB-кабель, затем перезапустите гайку.

Этот трюк сработал для меня.

Если вы находитесь вдали от USB-кабеля вашего ИБП (вы подключаете новый ИБП и выполняете настройку через несколько месяцев из-за недостатка времени), и перезапуск компьютера не является вариантом, вы можете повторно запустить правила udev:

udevadm control --reload
udevadm trigger
systemctl restart nut-server

Делает работу.

Как сказал ndemou, FAQ по NUT знает об этой проблеме, и был выпущен патч, исправляющий ошибку. Но старые стабильные дистрибутивы могут быть затронуты. Надеюсь, решение очень простое...

Из NUT FAQ: "Мой USB ИБП поддерживается, но не работает!":

В Linux предусмотрены правила udev для установки правильных прав доступа к файлу устройства. Это позволяет драйверу NUT связываться с ИБП через этот файл устройства.

Тем не менее, драйвер может по-прежнему не запускаться и поддерживать устройство с сообщением вроде:

не удалось получить доступ к USB-устройству: не удалось получить доступ к интерфейсу 0: операция не разрешена

Операция не разрешена - это сообщение, указывающее на проблему с привилегиями. Наиболее частая проблема заключается в том, что udev фактически не применял правило:

if NUT has been freshly installed,
and if the device USB cord was already plugged when installing NUT. 

В этом случае просто отключите и снова подключите USB-кабель, затем перезапустите NUT.

Произошла ошибка в именовании файла правил NUT udev, в результате чего правила были переопределены другим файлом конфигурации udev. Хотя это было исправлено в основной ветке Git, ваш дистрибутив все еще может быть затронут. Подробности доступны в следующем выпуске Github: https://github.com/networkupstools/nut/issues/140

Глядя дальше на проблему Github, дайте мне решение:

Правила udev применяются слишком поздно (приоритет 52), что приводит к перезаписи привилегий. Окончательный результат заключается в том, что драйвер не запускается, и об ошибках подключения к драйверу / ИБП сообщают upsd и upsmon.

Чтобы исправить это, просто установите приоритет 62, переименовав файл правил:

$ mv /lib/udev/rules.d/ndom5,6 enj2-nut-usbups.rules

Эта ошибка влияет на:

Debian: http://bugs.debian.org/721600
Fedora / Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=488368
Ubuntu: https://bugs.launchpad.net/debian/+source/nut/+bug/1099947 and probably all Linux distribution
Другие вопросы по тегам