Проблеми із запуском мережевих інструментів ДБЖ з ІБП Eaton 3S


10

Запуск сервера Ubuntu на ДБЖ Eaton 3S 700VA. USB-з'єднання Eaton переходить у мій сервер Ubuntu. Я намагаюся використовувати 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)

Відповіді:


10

Хоча я не претендую на те, що я тут експерт, я стурбований тим, що ця відповідь не призведе до постійної зміни дозволу на перезавантаження, та / або кабель usb з UPS переміщується на інший порт.

Слідом за інформацією звідси: Musings of Nannerpuss: NUT - Мережеві інструменти UPS - на Ubuntu .

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

Підключіть пристрій і (як root) запустіть lsusb та знайдіть його. Зверніть увагу на ідентифікатори шини та пристрою, а також пару постачальників: ідентифікатор продукту .... "

використовуючи вихід, як у відповіді вище:

$ 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-пристроїв з постачальником та продуктом, що відповідають UPS. Потім він встановлює режим на 0660, а група - на гайку замість кореня за замовчуванням.

Зауважте, що ця відповідь використовує дозвіл 660, а не 666, оскільки це повинно бути достатнім та безпечнішим.

Перезавантажте udev (перезавантажте або, можливо, відключіть, потім повторно підключіть кабель usb від UPS на порту ПК), після чого відключіть і знову підключіть пристрій та перевірте правильність нових дозволів. Я незрозумілий у цій частині. У будь-якому випадку, як тільки група користувачів горіхів прочитає та записує на пристрої, вона має бути спроможна запуститись.

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


Я виявив, що це добре працювало для мене з APC Back-UPS CS 650 на Ubuntu 12.04.
Пол Гір

Чи не слід повідомляти про це як помилку в ubuntu? і закріплений в офіційній упаковці гайки?
Jarl

Це працює, але трохи прокрутившись вниз і прочитавши нове повідомлення "ця помилка вже виправлена" (конкретно: /lib/udev/rules.d/62-nut-usbups.rulesзараз встановлено), це рішення технічно застаріло.
dannysauer

9
  • Ви можете 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

3

щодо цієї помилки:

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

Поширені питання про NUT на веб- сайті http://www.networkupstools.org/docs/FAQ.html мають таке (моє значення):

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

Цей трюк спрацював для мене.


Мені довелося перезапустити udev ( sudo systemctl restart udev), а потім відключити / відключити UPS, FWIW.
dannysauer

1

Як сказав ndemou, NUT FAQ знає про проблему, і виправлено виправлення, виправляючи помилку. Але старі стабільні дистрибуції можуть постраждати. Сподіваємось, рішення дуже просте ...

З питання про NUT: "Мій USB UPS підтримується, але не працює!" :

В Linux передбачені правила udev для встановлення правильних дозволів на файл пристрою. Це дозволяє драйверу NUT спілкуватися з UPS через цей файл пристрою.

Однак драйвер може все-таки не запустити і підтримати пристрій з таким повідомленням:

не вдалося претендувати на 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/isissue/140

Дивлячись далі на питання Github, дайте мені рішення:

Правила udev застосовуються занадто пізно (пріоритет 52), в результаті чого привілеї горіхів будуть перезаписані. Кінцевим результатом є те, що драйвер не запускається, а про несправність з'єднання з драйвером / ДБЖ повідомляються upsd та upsmon.

Виправлення полягає в тому, щоб просто встановити пріоритет на 62 шляхом перейменування файла правил:

$ mv /lib/udev/rules.d/{5,6}2-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

0

Якщо ви далеко від USB-шнура свого ДБЖ (підключіть новий свіжий ДБЖ та виконайте налаштування через місяці через те, що вам не вистачає часу), а перезапуск машини не є можливим, ви можете повторно запустити правила udev:

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

Робить роботу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.