Sự cố khi khởi động Công cụ UPS mạng với UPS Eaton 3S


10

Chạy máy chủ Ubuntu trên UPS Eaton 3S 700VA. Kết nối USB của Eaton đi vào Máy chủ Ubuntu của tôi. Tôi đang cố gắng sử dụng NUT để quản lý UPS.

Sau khi sudo su'ing

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)

Câu trả lời:


10

Mặc dù tôi không tự nhận là chuyên gia ở đây, tôi lo ngại rằng câu trả lời này sẽ không dẫn đến thay đổi quyền liên tục trong quá trình khởi động lại và / hoặc cáp usb từ UPS được chuyển sang một cổng khác.

Theo dõi thông tin từ đây: Musings of the Nannerpuss: NUT - Network UPS Tools - trên Ubuntu .

"... Vấn đề liên quan đến việc Ubuntu gắn thiết bị là sở hữu của root, nhưng nut daemon rơi vào một tài khoản không có đặc quyền không có quyền truy cập cần thiết. Cách khắc phục đơn giản là sử dụng udev để điều chỉnh quyền của thiết bị.

Kết nối thiết bị và (như root) chạy lsusb và xác định vị trí của nó. Lưu ý ID xe buýt và ID thiết bị cũng như cặp Nhà cung cấp: ID sản phẩm .... "

sử dụng đầu ra như trong câu trả lời trên:

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

một lần nữa từ liên kết "... Bạn có thể tạo quy tắc udev kiểm soát hành vi gắn kết khi khởi động: ..." (được chỉnh sửa để phù hợp hơn với kịch bản này) "

  • sử dụng trình soạn thảo văn bản yêu thích của bạn để tạo (rất có thể) một tệp quy tắc udev mới. Số phải cao hơn bất kỳ tệp quy tắc udev.d nào khác cho cùng một hành động:

ví 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"

Đồng hồ quy tắc bổ sung thiết bị USB với nhà cung cấp và sản phẩm phù hợp với UPS. Sau đó, nó đặt chế độ thành 0660 và nhóm thành nut thay vì root mặc định.

Lưu ý rằng câu trả lời này sử dụng quyền 660 thay vì 666 vì điều đó là đủ và an toàn hơn.

Tải lại udev (khởi động lại hoặc có thể rút phích cắm sau đó cắm lại cáp usb từ UPS tại cổng pc), sau đó ngắt kết nối và kết nối lại thiết bị và kiểm tra xem các quyền mới có chính xác không. Tôi không rõ về phần này. Trong mọi trường hợp, một khi nhóm người dùng nut đã đọc và ghi trên thiết bị, nó sẽ có thể bắt đầu thành công.

Chỉnh sửa udev Rules.d đã hoạt động trên hệ thống 12.04.2 của tôi ngay cả khi tôi di chuyển cáp USB sang một cổng khác, dẫn đến các số Thiết bị Bus khác nhau trên đầu ra lsusb. Udev xử lý tất cả mà không cần can thiệp. Trên thực tế, tôi có thể không phải khởi động lại khi tôi di chuyển nó nhưng không thể nhớ chắc chắn và sẽ để thử nghiệm đó cho người khác.


Tôi thấy điều này hoạt động tốt với tôi với APC Back-UPS CS 650 trên Ubuntu 12.04.
Paul Gear

Điều này không nên được báo cáo như là một lỗi trong ubfox? và cố định trong gói hạt chính thức?
Jarl

Điều này hoạt động, nhưng cuộn xuống một chút và đọc thông báo "lỗi này đã được sửa" mới hơn (cụ thể: đã /lib/udev/rules.d/62-nut-usbups.rulesđược cài đặt ngay bây giờ) có nghĩa là giải pháp này đã lỗi thời về mặt kỹ thuật.
dannysauer

9
  • Bạn có thể sử dụng lsusbđể tìm ra số xe buýt và thiết bị

  • Sau đó thay đổi quyền cho thiết bị

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

Ví dụ

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

3

liên quan đến lỗi này:

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

Câu hỏi thường gặp về NUT tại http://www.networkupstools.org/docs/FAQ.html có điều này (nhấn mạnh của tôi):

nếu NUT đã được cài đặt mới và nếu dây USB của thiết bị đã được cắm khi cài đặt nut [thì] chỉ cần rút phích cắm và cắm lại dây USB, sau đó khởi động lại nut.

Thủ thuật đó đã làm việc cho tôi.


Tôi đã phải khởi động lại udev ( sudo systemctl restart udev) và sau đó rút / cắm lại UPS, FWIW.
dannysauer

1

Như ndemou đã nói, Câu hỏi thường gặp của NUT nhận thức được vấn đề và một bản vá như đã được phát hành, sửa lỗi. Nhưng các bản phân phối ổn định cũ có thể bị ảnh hưởng. Hy vọng rằng, giải pháp rất đơn giản ...

Từ Câu hỏi thường gặp của NUT: "USB UPS của tôi được hỗ trợ nhưng không hoạt động!" :

Trên Linux, các quy tắc udev được cung cấp để đặt quyền chính xác cho tệp thiết bị. Điều này cho phép trình điều khiển NUT liên lạc với UPS, thông qua tệp thiết bị này.

Tuy nhiên, trình điều khiển vẫn có thể không khởi động và hỗ trợ thiết bị, với một thông báo như:

không thể yêu cầu thiết bị USB: không thể yêu cầu giao diện 0: Không được phép thao tác

Hoạt động không được phép là một thông báo chỉ ra một vấn đề đặc quyền. Vấn đề thường gặp nhất là udev chưa thực sự áp dụng quy tắc:

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

Trong trường hợp này, chỉ cần rút phích cắm và cắm lại dây USB, sau đó khởi động lại NUT.

Có một lỗi trong việc đặt tên tệp quy tắc NUT udev dẫn đến các quy tắc bị ghi đè bởi tệp cấu hình udev khác. Mặc dù điều này đã được sửa trong nhánh chính Git, phân phối của bạn vẫn có thể bị ảnh hưởng. Chi tiết có sẵn trong vấn đề Github sau: https://github.com/networkupstools/nut/issues/140

Nhìn xa hơn về vấn đề Github cho tôi giải pháp:

quy tắc udev được áp dụng quá muộn (ưu tiên 52), dẫn đến các đặc quyền nut bị ghi đè. Kết quả cuối cùng là trình điều khiển không khởi động và lỗi kết nối với trình điều khiển / UPS được báo cáo bởi upsd và upsmon.

Cách khắc phục chỉ đơn giản là đặt mức độ ưu tiên thành 62 bằng cách đổi tên tệp quy tắc:

$ mv /lib/udev/rules.d/ đũa5,6 Bolog2-nut-usbups.rules

Lỗi này ảnh hưởng đến:

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

Nếu bạn ở xa dây USB của UPS của bạn (cắm UPS mới mới và thực hiện cấu hình nhiều tháng sau đó vì bạn không có thời gian) và khởi động lại máy của bạn không phải là một tùy chọn, bạn có thể điều chỉnh lại các quy tắc udev:

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

Làm công việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.