APC UPS
このドキュメントでは APC UPS デーモンのインストール方法を説明します。APC UPS を使用することで RS-232 あるいは USB シリアル接続経由で Linux マシンと通信することができます。電力の供給が長い時間止まって APC UPS のバッテリーも切れかけている場合に、Linux マシンにシャットダウンを実行するように知らせることが可能です。
目次
インストール
設定
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
セットアップを完全にテストするには:
/etc/apcupsd/apcupsd.conf
ファイルのTIMEOUT
を0
から1
に変更。- UPS の電源ケーブルを切断。
- Linux マシンの電源が即座に落ちることを確認。
- UPS の電源ケーブルを接続。
- Linux マシンの電源を入れる。
/etc/apcupsd/apcupsd.conf
ファイルのTIMEOUT
を1
から0
に変更。
テストが問題ないようでしたら、apcupsd
サービスを有効化してください。
シャットダウンではなくハイバネートを実行する
マシンの電源を切る代わりにハイバネートさせることができます。まず、システムが問題なくハイバネートできることを確認してください。ハイバネーションの設定は Pm-utils を見てください。
ハイバネートスクリプトの作成
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 から設定を変更できます。