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)
답변
여기서 전문가라고 주장하지는 않지만이 답변으로 재부팅해도 영구적으로 권한이 변경되지 않으며 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는 개입없이 모든 것을 처리했습니다. 실제로 이동했을 때 재부팅하지 않았을 수도 있지만 기억이 나지 않아 다른 사람에게 테스트를 맡길 수 있습니다.
답변
-
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
http://www.networkupstools.org/docs/FAQ.html 의 NUT FAQ 에는 다음이 있습니다 (강조 광산).
너트를 새로 설치하고 너트를 설치할 때 장치 USB 코드가 이미 연결되어 있으면 USB 코드를
뽑았다가 다시 연결 한 다음 너트를 다시 시작하십시오.
그 트릭은 나를 위해 일했습니다.
답변
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
답변
UPS의 USB 코드에서 떨어져 있고 (새 UPS를 연결하고 시간이 부족하여 몇 개월 후에 구성을 수행하는 경우) 시스템을 다시 시작하는 것이 옵션이 아닌 경우 udev 규칙을 다시 트리거 할 수 있습니다.
udevadm control --reload
udevadm trigger
systemctl restart nut-server
일을한다.