コンピュータ/ソフトウェア関連Tips

本文へ

FreenasのマシンにOMRON製UPSをつないで自動シャットダウン

更新: 2012年10月22日(月) 12:40
公開: 2011年03月21日(月) 00:00

Freenas 0.7.2 (revision 5543)とOMRON製UPS BX50F(他の一部機種でも可)の組み合わせで、自動シャットダウンする方法です。

シャットダウンソフトウェア

使用するソフトウェアは有限会社オングスさん製のUPS簡易監視デーモン omronupsdです。

http://www.ongs.co.jp/software/omronupsd/index.html.ja

このソフトウェアがサポートしているUPSは、BZ35T/LT2、BZ50T/LT/LT2、BX35F、BX50F、BY35S、BY50FW、BY50S、BY75SWです。いずれもPCとの接続はUSBです。

Freenasのインストールモード

Freenasは、embeddedモードではなくfullモードでインストールしていることが前提です。たぶん、多くの場合、FreenasのInstall & Upgradeメニューで、

Install 'embedded' OS on HDD/Flash/USB

を選択していると思いますが、

Install 'full' OS on HDD + DATA + SWAP partition

を選択しているのが前提です。なお、インストール先はHDDである必然性は無く、USBメモリーでOKです。(この記事にまとめた手法を確立するまで、2GBと4GBの2種類のUSBメモリーにインストールしました。embeddedモードの場合、以下の設定を行っても、有効なのはFreenasが再起動するまでの間です。Freenasが再起動すると、設定はすべて失われます。)

追加で必要なファイル libusbhid.so.3とusb_hid_usages

Freenas 0.7.2上でomronupsdを実行するには、Freenasに、libusbhid.so.3とusb_hid_usagesが必要です。

FreeBSDに詳しくない(FreeBSDに限らず、UNIX/LINUXには詳しくない)ので、方法が間違っているかもしれませんが、FreeBSDのISOイメージから、これら2つのファイルを抽出します。(FreeBSDに詳しい方、笑っちゃうぐらいに間違ってたらコメント欄でご教示ください)。FreeBSDのISOイメージは、「日本にあるFreeBSD関連のサイト」のページ http://www.jp.freebsd.org/mirror.html からダウンロードします。「本家公式配布物」「PC98関係」「日本ローカルコンテンツ」の3種類ありますが、「本家公式配布物」です。バージョンは、7.2です。(Freenasのバージョンが0.7.2なので、たぶん7.2だろうと...。実は最初は7.3を使いました。7.3のlibusbhid.so.3とusb_hid_usagesでも動作しました)。

Freenasの、Advanced|Commandメニューを選択して、ISOファイルを展開して得られたlibusbhid.so.3とusb_hid_usagesをFreenasにアップロードします。アップロードしたファイルは/tmpに保存されます。(アップロード先は指定できないようです。)

omronupsdのインストール

簡単な方法としては、FreenasのWEB GUIの、System|Pakagesメニューから、パッケージファイルをインストールすることでしょう。もう一つの方法は、omronupsdのパッケージファイルを、Freenasにアップロード(前述したように、アップロード先は/tmp)したあと、FreenasにSSHでログインして、pkg_addコマンドを実行することです。

前者の場合、インストールに成功すると、以下のようなメッセージが表示されます。

Command output:

extract: Package name is omronupsd-0.5.3
extract: CWD to /usr/local
extract: /usr/local/bin/omronupsd
extract: /usr/local/etc/omronupsd/omronupsd.conf.sample
extract: /usr/local/share/omronupsd/LICENSE
extract: CWD to /usr/local
extract: /usr/local/etc/rc.d/omronupsd
extract: CWD to .
Running mtree for omronupsd-0.5.3..
mtree -U -f +MTREE_DIRS -d -e -p /usr/local >/dev/null
Attempting to record package into /var/db/pkg/omronupsd-0.5.3..
Package omronupsd-0.5.3 registered in /var/db/pkg/omronupsd-0.5.3

後者の場合は、FreenasのServices|SSHメニューで、SSHを有効にし、さらに、Permit root loginのチェックボックスをチェックして、Save and Restartをクリックします。(rootログインの設定は、作業が終わったら元に戻すなり、そのままにしておくなり、適宜判断してください)。そして、使い慣れたSSHクライアント環境から、

$ ssh 192.168.0.1 -l root

のようにして、Freenasのマシンにrootユーザーでログインします。(rootユーザーのパスワードは、デフォルトではfreenasです。adminのパスワードを変更している場合は、変更したパスワードです)。ログインしたら、

# pkg_add /tmp/omronupsd-0.5.3-F7R-amd64.tbz

のようにパッケージを追加するコマンドを実行します。

omronupsdの設定ファイル(omronupsd.conf)の編集

設定ファイルは、/usr/local/etc/omronupsd内に、omronupsd.conf.sampleというファイル名で保存されていますので、omronupsd.confという名前でコピーを作成し、そのファイルを編集します。(コピーはAdvanced|File Manager、編集は同File Editorでできるかもしれませんが、試したことはありません)。設定ファイルについて、詳しくはオングスさんのページをご覧いただくとして、筆者が行った設定は以下のとおりです。

globalセクションの設定。

[global]
target=OMRON UPS BX50F
device=auto
buzzer=enable
auto_reboot=disable
shutdown_cmd=/sbin/shutdown -p now
em_shutdown_cmd=/sbin/halt -p
battery_check_interval=3

target は、オリジナルはBZ35Tですが、筆者のUPSに合わせて書き換えました。battery_testは、オリジナルではenableですが、筆者の環境では、Freenasのマシンが起動してomronupsdを実行するときにバッテリーテストを行うと、同じUPSに接続されている他のPCがダウンしてしまうので、disableにしました。auto_rebootは不要なのでdisableにしました。

個別のUPSのセクションの設定。

[OMRON UPS BX50F]
pc_shutdown_level=60
pc_em_shutdown_level=40
ups_shutdown_time=2
ups_reboot_time=0

pc_shutdown_levelは、まず、90(バッテリー容量が90%に低下)に設定して、動作確認をしてから、60に設定をしなおしました。pc_em_shutdown_levelは、pc_shutdown_levelよりも小さい値を設定すれば良いようです。

rc.confの編集

編集する前に、バックアップとして、rc.confを別名でコピーしておきます。編集内容は、基本的にオングスさんのページのとおりなのですが、筆者はデバイス名を実際に使用するUPSの名称に合わせました。

omronupsd_enable="YES"
omronupsd_devices="BX50F"
omronupsd_BX50F_flags="-D"
omronupsd_BX50F_conf="/usr/local/etc/omronupsd/omronupsd.conf"
omronupsd_BX50F_pid="/var/run/omronupsd.pid"

筆者はrc.confの末尾に追加しました。Freenas自身もrc.confを書き換えるので、コメントを入れたり、場所を気にしたりはしなくて良い模様です。

libusbhid.so.3とusb_hid_usagesのコピー

続いて、libusbhid.so.3とusb_hid_usagesをコピーします。(移動でも良いです)。 Advanced|File Managerを使う方法もあるかもしれませんが、筆者は、以下のようにコマンドラインからコマンドを実行しました。

# cp /tmp/libusbhid.so.3 /usr/lib
# cp /tmp/usb_hid_usages /usr/share/misc

FreenasがUPSを認識しているかの確認

# usbdevs

に対して、

addr 1: UHCI root hub, Intel
 addr 2: BX50F, OMRON

のように、自分が使用するUPSの機種名が表示されればOKです。

omronupsdの実行

コマンドラインから以下のように実行します。(既にrc.confを設定しているので、Freenasのマシンを再起動すれば自動的に実行されます。)

# /usr/local/etc/rc.d/omronupsd start

成功すると、

BX50F - Starting omronupsd.

のように表示されます。

バッテリー容量が何%になったらシャットダウンするか、実際にテストする場合など、omronupsd.confの設定を変更した場合は、以下のように、omronupsdをstopしてから、startしなおします。

# /usr/local/etc/rc.d/omronupsd stop
# /usr/local/etc/rc.d/omronupsd start

シャットダウンテスト

UPSの電源ケーブルを抜いて、Freenasがシャットダウンするかテストします。前述したように、最初はpc_shutdown_levelを大きめの数値に設定して、実際に動作することを確認してから、希望の数値に設定すると良いでしょう。

さいごに

OMRONのSimple Shutdown Softwareの対応OSにはFreeBSDが含まれていないので、UPSとの連動は無理だろうと思っていたのですが、無事連動できました。ソフトウェアを公開してくださっているオングスさん、ありがとうございます。

(この記事は、http://d.hatena.ne.jp/Fumio_Kawamata/20110321/1300708083 に掲載していた記事です。)

Tags: Freenas

© Someone in the TERRA

編集