Eaton 3S UPS로 네트워크 UPS 도구 시작시 문제


10

Eaton 3S 700VA UPS에서 Ubuntu 서버 실행 Eaton의 USB 연결은 우분투 서버에 연결됩니다. NUT 를 사용하여 UPS를 관리 하려고합니다 .

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)

답변:


10

여기서 전문가라고 주장하지는 않지만이 답변으로 재부팅해도 영구적으로 권한이 변경되지 않으며 UPS의 USB 케이블이 다른 포트로 이동합니다.

여기에서 정보를 따르십시오 : Nannerpuss의 Musings : NUT- 네트워크 UPS 도구-우분투 .

"... 문제는 Ubuntu가 루트 소유의 장치를 마운트한다는 사실과 관련이 있지만 너트 데몬은 권한이없는 권한이없는 계정으로 드롭됩니다. 간단한 수정은 udev를 사용하여 장치 권한을 조정하는 것입니다.

장치를 연결하고 (루트로) lsusb를 실행하고 찾으십시오. 버스 및 장치 ID와 공급 업체 : 제품 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"

이 규칙은 UPS와 일치하는 공급 업체 및 제품으로 USB 장치 추가를 감시합니다. 그런 다음 모드를 0660으로 설정하고 그룹을 기본 루트 대신 너트로 설정합니다.

이 답변은 666이 아니라 660 권한을 사용하므로 충분하고 안전해야합니다.

udev를 다시로드하거나 (PC 포트에서 UPS에서 USB 케이블을 분리했다가 다시 연결 한 후 다시 연결) 장치를 분리했다가 다시 연결하고 새 권한이 올바른지 테스트하십시오. 나는이 부분에 대해 불분명하다. 어쨌든 너트 사용자 그룹이 장치를 읽고 쓰면 성공적으로 시작할 수 있습니다.

USB 케이블을 다른 포트로 옮긴 경우에도 udev rules.d 편집이 12.04.2 시스템에서 작동하여 lsusb 출력에서 ​​다른 버스 장치 번호가 발생했습니다. Udev는 개입없이 모든 것을 처리했습니다. 실제로 이동했을 때 재부팅하지 않았을 수도 있지만 기억이 나지 않아 다른 사람에게 테스트를 맡길 수 있습니다.


우분투 12.04의 APC Back-UPS CS 650에서 이것이 잘 작동한다는 것을 알았습니다.
Paul Gear

우분투에서 버그로보고해서는 안됩니까? 공식 너트 패키지에 고정되어 있습니까?
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

http://www.networkupstools.org/docs/FAQ.html 의 NUT FAQ 에는 다음이 있습니다 (강조 광산).

너트를 새로 설치하고 너트를 설치할 때 장치 USB 코드가 이미 연결되어 있으면 USB 코드를 뽑았다가 다시 연결 한 다음 너트를 다시 시작하십시오.

그 트릭은 나를 위해 일했습니다.


udev ( sudo systemctl restart udev) 를 다시 시작한 다음 UPS, FWIW를 분리했다가 다시 연결해야했습니다.
dannysauer

1

ndemou가 말했듯이 NUT FAQ는 문제를 인식하고 패치가 릴리스되어 버그를 수정합니다. 그러나 오래된 안정된 배포판이 영향을받을 수 있습니다. 희망적으로, 솔루션은 매우 간단합니다 ...

NUT FAQ에서 : "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/issues/140

Github 문제를 더 자세히 살펴보면 해결책이 있습니다.

udev 규칙이 너무 늦게 적용되어 (우선 순위 52) 너트 권한을 덮어 씁니다. 최종 결과는 드라이버가 시작되지 않고 드라이버 / UPS 연결 실패가 upsd 및 upsmon에 의해보고 된 것입니다.

수정은 단순히 rules 파일의 이름을 바꾸어 우선 순위를 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

UPS의 USB 코드에서 떨어져 있고 (새 UPS를 연결하고 시간이 부족하여 몇 개월 후에 구성을 수행하는 경우) 시스템을 다시 시작하는 것이 옵션이 아닌 경우 udev 규칙을 다시 트리거 할 수 있습니다.

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

일을한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.