kWatanabe 記事一覧へ

kWatanabe の 技術帖

某企業でOSや仮想化の研究をやっているインフラ系エンジニア。オンプレとクラウドのコラボレーションなど、興味ある技術を綴る。

オムロン製UPS「BY50S」を Debian 11 で使う

  • オムロンUPSBY50S」は比較的安価で使いやすい製品だが、同梱の Linux 向けの自動シャットダウンツールは RHEL 系しかサポートしていない。
  • BY50S向け自動シャットダウンツールの「SimpleShutdownSoftware」を Debian 11 (bullseye) で使えるようにした。

BY50S は DebianLinuxをサポートしていない

オムロン社製UPSの「BY50S」は、実売価格18000円ほどで品質も必要十分なので、自宅サーバや録画機器などで使いやすい。

BY50S 向けの自動シャットダウンツールとしては、エージェントとマネージャで複数のサーバを統合管理できる「PowerAct」と、UPSと直接会話するデーモンで単体のサーバのシャットダウンだけを行う「SimpleShutdownSoftware」が提供されている。

しかし、いずれも対応OSが WindowsRHELLinuxmacos で、DebianLinux はサポート外となっている。

socialsolution.omron.com

一方、 kWatanabe の自宅サーバDebian で稼働している。そこで、「SimpleShutodownSoftware」を Debian で使うための手順を整理した。

Debian 11 で SimpleShutdownSoftware を使う

検証環境

  • Debian 11.4 (bullseye) amd64
  • Simple Shutdown Software 2.41

手順

必要なパッケージを導入する。

# apt install wget unzip libusb-dev build-essentials

オムロン社のWebページから「Simple Shutdown Software Ver 2.41(Linux版)」を入手し、 /usr/local/src に配置する。

# cd /usr/local/src
# wget https://socialsolution.omron.com/jp/ja/products_service/ups/support/download/soft/sss/SimpleSoftwareVer241_Linux_X64.zip
# unzip SimpleSoftwareVer241_Linux_X64.zip
# mv SimpleSoftwareVer241_Linux_X64 SimpleShutdownSoftware

Release/master 配下に RHEL7 向けのバイナリが保存されている。これが動作する環境ならば、そのまま利用してもよい。リビルドする場合には、以下のように Source ディレクトリに移動してビルドする。

# cd ./SimpleShutdownSoftware/Source
# make -j`nproc`
# cd ../Release
# ls master
AgentManager*       Shutdown.cfg*    SimpleShutdownDaemon*  UsbPort-Libusb.so.1.0.0*  my_kvm.sh*  ssdDaemon*
S99SimpleShutdown*  SimpleShutdown*  UsbPort-HID.so.1.0.0*  config.sh*                omronctl*   ssdService*

バイナリの配置と設定ファイルの生成のために、インストールスクリプトを実行する。

# ./install.sh
Do you agree this license? [ y/n ] y

設定スクリプトを用いて、ファイルをしかるべき値に設定する。我が家の場合は /srv/scripts/emergency/emergency-shutdown.sh を叩くと、全てのサーバがクリーンにシャットダウンできる仕組みを整えているので、これをキックする設定を行う。

# /usr/lib/ssd/master/config.sh
...
********************************************************************************
[Reconfirm shutdown parameter of the marine (Master Agent)].
********************************************************************************
1. Port Selection Mode:               Semiautomatic Mode(Only select all USB device)
2. Select USB communication mode :    Libusb
3. AC fail Delay time (Sec):          5
4. External Command Line:             /srv/scripts/emergency/emergency-shutdown.sh
5. External Command needs time (Sec): 60
6. OS Shutdown needs time (Sec):      60
7. Send Message to login users:       Enable
8. System closing mode :              Shutdown
9. Virtual Server shutdown mode :     Shutdown by Linux System
********************************************************************************
Select Number:1

これで、一見インストールされデーモンが起動するようにみえるが、自動起動がうまく設定されておらず、システムを再起動すると起動に失敗する。そのため、Debian 11 の環境に合わせて処置する。

まず、インストールスクリプトで導入された壊れている rc ファイルを削除する。

# find /etc/rc?.d | grep SimpleShutdown | xargs rm -v
'/etc/rc1.d/S99SimpleShutdown' を削除しました
'/etc/rc2.d/S99SimpleShutdown' を削除しました
'/etc/rc3.d/S99SimpleShutdown' を削除しました
'/etc/rc5.d/S99SimpleShutdown' を削除しました

削除した rc ファイルに変わる systemd ユニットファイルを作成する。

# vim /etc/systemd/system/SimpleShutdown.service
[Unit]
Description=Simple Shutdown Software

[Service]
Type=forking
ExecStart=/usr/lib/ssd/master/ssdService
KillSignal=SIGUSR1
Restart=on-abort
RestartSec=3

[Install]
WantedBy=multi-user.target

作成したユニットファイルを読み込ませて、システムを再起動する。

# systemctl daemon-reload
# systemctl enable SimpleShutdown.service
# reboot

再起動後、デーモンが起動していることを確認する。

# systemctl status SimpleShutdown
● SimpleShutdown.service - Simple Shutdown Software
     Loaded: loaded (/etc/systemd/system/SimpleShutdown.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-07-23 13:21:08 JST; 14min ago
    Process: 683 ExecStart=/usr/lib/ssd/master/ssdService (code=exited, status=0/SUCCESS)
   Main PID: 699 (ssdService)
      Tasks: 1 (limit: 154419)
     Memory: 2.1M
        CPU: 873ms
     CGroup: /system.slice/SimpleShutdown.service
             └─699 /usr/lib/ssd/master/ssdService

 723 13:21:08 marine systemd[1]: Starting Simple Shutdown Software...
 723 13:21:08 marine systemd[1]: Started Simple Shutdown Software.
 723 13:21:08 marine SimpleShutdown[699]: Shutdown Agent Start.

UPSを接続して、認識していることを確認できたら、UPSの電源を抜いて動作確認する。

# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0590:0081 Omron Corp. BY50S
Bus 001 Device 005: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse
Bus 001 Device 004: ID 046b:ffb0 American Megatrends, Inc. Virtual Ethernet
Bus 001 Device 002: ID 046b:ff01 American Megatrends, Inc. Virtual Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

まとめ

  • BY50S 同梱の SimpleShutodownSoftware を Debian 11 で使えるようにする手順を整備した。
  • systemd でデーモンを制御できるようにしたが、 udev などで頑張ることもできるかもしれない。