Неисправность запуска сетевых инструментов ИБП с ИБП 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