Eaton 3S UPSでのネットワークUPSツールの起動に関する問題


10

Eaton 3S 700VA UPSでUbuntuサーバーを実行します。イートンのUSB接続は私のUbuntuサーバーに行きます。UPSの管理にNUTを使用しようとしています。

sudo suING」

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の黙想:Ubuntu上のNUT-ネットワークUPSツール-

「...問題は、Ubuntuがrootが所有するデバイスをマウントするという事実に関係していますが、nutデーモンは、必要なアクセス権がない非特権アカウントにドロップします。簡単な修正は、udevを使用してデバイスの権限を調整することです。

デバイスを接続し、(rootとして)lsusbを実行して見つけます。バスIDとデバイス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ケーブルを取り外してから再度差し込みます)、デバイスを取り外して再接続し、新しい権限が正しいことをテストします。私はこの部分について不明確です。いずれの場合でも、nutユーザーグループがデバイスで読み取りと書き込みを行うと、正常に開始できるはずです。

udev rules.d編集は、USBケーブルを別のポートに移動した場合でも12.04.2システムで機能しました。その結果、lsusb出力のバスデバイス番号が異なりました。Udevはすべて介入なしで処理しました。実際、移動したときに再起動する必要はなかったかもしれませんが、確かに思い出せないため、そのテストは他の人に任せます。


Ubuntu 12.04でAPC Back-UPS CS 650を使用すると、これがうまく機能することがわかりました。
Paul Gear

これはubuntuのバグとして報告されるべきではありませんか?公式のナットパッケージで修正されましたか?
Jarl 14

これは機能しますが、少し下にスクロールして、新しい「このバグはすでに修正されています」というメッセージ(具体的に/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にはこれがあります(強調は私のものです):

NUTを新たにインストールした場合、およびナットの取り付け時にデバイスの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によって報告されることです。

修正方法は、ルールファイルの名前を変更して、優先度を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.