APC UPS

提供: ArchWiki
2017年12月24日 (日) 22:10時点におけるKusakata (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

このドキュメントでは APC UPS デーモンのインストール方法を説明します。APC UPS を使用することで RS-232 あるいは USB シリアル接続経由で Linux マシンと通信することができます。電力の供給が長い時間止まって APC UPS のバッテリーも切れかけている場合に、Linux マシンにシャットダウンを実行するように知らせることが可能です。

インストール

apcupsd パッケージをインストールしてください。

設定

APC UPS デーモンのメイン設定ファイルは /etc/apcupsd/apcupsd.conf です。

USB ケーブルをサポートするようにするには以下の行を:

UPSCABLE smart
UPSTYPE smartups
DEVICE /dev/ttyS0

以下のように変更します:

UPSCABLE usb
UPSTYPE usb
DEVICE /dev/usb/hiddev[[0-15]]

apcupsd が起動しない場合、/etc/defaults/apcupsd の以下の行を:

ISCONFIGURED=no

以下のように変更してください:

ISCONFIGURED=yes

テスト

systemd サービスの apcupsd.service起動してください。

それから、数分待ってからデーモンが動作してバッテリー状態が監視されているか確認してください:

# apcaccess status
APC      : 001,033,0819
DATE     : Sat Mar 05 SOMETIME 2005
HOSTNAME : somehostname
RELEASE  : 3.10.16
VERSION  : 3.10.16 (04 November 2004) unknown
UPSNAME  : somehostname
CABLE    : USB Cable
MODEL    : Back-UPS ES 725
UPSMODE  : Stand Alone
STARTTIME: Sat Mar SOMETIME 2005
STATUS   : ONLINE
LINEV    : 119.0 Volts
LOADPCT  :  23.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  30.5 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
LOTRANS  : 088.0 Volts
HITRANS  : 138.0 Volts
ALARMDEL : Always
BATTV    : 13.5 Volts
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x02000008 Status Flag
MANDATE  : 2002-12-02
SERIALNO : QB0249360043
BATTDATE : 2000-00-00
NOMBATTV :  12.0
FIRMWARE : 02.n2.D USB FW:n2
APCMODEL : Back-UPS ES 725
END APC  : Sat SOMETIME 2005

セットアップを完全にテストするには:

  1. /etc/apcupsd/apcupsd.conf ファイルの TIMEOUT0 から 1 に変更。
  2. UPS の電源ケーブルを切断。
  3. Linux マシンの電源が即座に落ちることを確認。
  4. UPS の電源ケーブルを接続。
  5. Linux マシンの電源を入れる。
  6. /etc/apcupsd/apcupsd.conf ファイルの TIMEOUT1 から 0 に変更。

テストが問題ないようでしたら、apcupsd サービスを有効化してください。

シャットダウンではなくハイバネートを実行する

マシンの電源を切る代わりにハイバネートさせることができます。まず、システムが問題なくハイバネートできることを確認してください。ハイバネーションの設定についてはサスペンドとハイバネートを見てください。

ハイバネートスクリプトの作成

root で /usr/local/bin/hibernate を作成:

#!/bin/bash
# Hibernate the system - designed to be called via symlink from /etc/apcupsd
# directory in case of apcupsd initiating a shutdown/reboot.  Can also be used
# interactively or from any script to cause a hibernate.

# Do the hibernate
/usr/bin/systemctl hibernate

# At this point system should be hibernated - when it comes back, we resume this script here

# On resume, tell controlling script (/etc/apcupsd/apccontrol) NOT to continue with default action (i.e. shutdown).
exit 99

実行可能権限を付与:

# chmod +x /usr/local/bin/hibernate

apcupsd がハイバネートスクリプトを使うように設定

/etc/apcupsd ディレクトリからスクリプトへのシンボリックリンクを作成してください。apcupd の apccontrol スクリプトによってハイバネートスクリプトが呼び出されるようになります。

# ln -s /usr/local/bin/hibernate /etc/apcupsd/doshutdown

apcupsd を実行している他のサーバーマシンのクライアントとして apcupsd を使用して、サーバーがシャットダウンしたり接続が途切れたときにマシンをハイバネートしたい場合、以下を実行:

# ln -s /usr/local/bin/hibernate /etc/apcupsd/remotedown

ハイバネートが実行されたら apcupsd で UPS をオフにするよう設定

PC のハイバネートが完了したら、UPS をオフにして電力消費を抑えるのが普通です。systemd のサスペンドイベントを使うことで実行できます。

/usr/lib/systemd/system-sleep/ups-kill を作成してください:

#!/bin/bash

case $2 in

  # In the event the computer is hibernating.
  hibernate)
    case $1 in

       # Going into a hibernate state.
       pre)

         # See if this is a powerfail situation.
         if [ -f /etc/apcupsd/powerfail ]; then
           echo
           echo "ACPUPSD will now power off the UPS"
           echo
           /etc/apcupsd/apccontrol killpower
           echo
           echo "Please ensure that the UPS has powered off before rebooting"
           echo "Otherwise, the UPS may cut the power during the reboot!!!"
           echo
         fi
       ;;

       # Coming out of a hibernate state.
       post)

         # If there are remnants from a powerfail situation, remove them.
         if [ -f /etc/apcupsd/powerfail ]; then
           rm /etc/apcupsd/powerfail
         fi

	 # Restart the daemon; otherwise it may be unresponsive in a
         # second powerfailure situation.
	 systemctl restart apcupsd
       ;;
    esac
  ;;
esac

スクリプトに実行可能権限を付与:

# chmod +x /usr/lib/systemd/system-sleep/ups-kill

設定したらテストを行ってください。

トラブルシューティング

USB ケーブルで接続した場合にデスクトップ環境が UPS に干渉する

例えば、デフォルトの KDE 設定では UPS バッテリーで動作する状態が10分以上続いたりマウスが動いていないとコンピュータがスリープ状態になります。ほとんどのコンピュータではクラッシュが発生します。KDE のシステム設定の Power Management->On battery から設定を変更できます。

hid-generic : control queue full

systemd ベースの initramfs を使用している場合、大量の "control queue full" ログメッセージが発生することがあります。hid-genericmodules に追加して initramfs を再生成すると良いでしょう。

参照