2010-12-26

Linuxマシンをタイマーで自動起動させるには(ACPI wakeup)

Debianをインストールした小型ファンレスマシンM350、PCIスロットがあるのでPT2でも挿そうと思います。というかPT2のために買いました。
ファンレスなので常時起動では熱が心配です。停電も怖いし。
そこで「あらかじめ設定した日時に自動的に起動する」ことはできるのでしょうか?

調べてみると、ACPIの機能を使えばできそうです。
参考資料:ACPI Wakeup (MythTV)

電源OFFの状態からタイマー起動できるか?

まずこのマシンの仕様を調べます。
$ grep -i rtc /var/log/kern.log
Dec 25 19:51:39 M350 kernel: [    3.159784] rtc_cmos 00:07: RTC can wake from S4
どうやらS4(Suspend to disk/ハイバネーション、Windowsで言うところの「休止状態」)からならタイマー起動できる模様。
S5(電源オフ)からは無理ということでしょうか。

ちなみにBIOS設定だと下記2つの「S5から起動」オプションがあります。ただ、どちらもタイマー起動とは別の話。
  • Wake on LAN from S5 :
    ネットワーク経由で起動信号(Magic Packet)を送りつけて遠隔起動する設定
  • Wake system from S5 :
    あらかじめBIOSで指定した日時に自動起動する設定。「毎日朝5時に自動起動」というような使い方ならできる

S5からタイマー起動できればラクだったのですが、仕方ないのでS4の環境を整えます。

S4(Suspend to disk)に対応しているか?

# cat /sys/power/state
standby mem disk
「disk」が表示されれば、たぶんOK。

S4に入るだけなら次のコマンドでも行けます。
# echo disk > /sys/power/state
ただし実際にはS4に入る前や復帰後にいろいろ処理をしたほうがいいので、pm-utils に任せたほうがラクです。
パッケージが入ってなければ、まずはインストール。
# aptitude install pm-utils

pm-utilsの準備ができたら、以下コマンドでハイバネート。
# pm-hibernate
HDDに状態を書き出し終わると電源が切れます。
S3(スリープ/Suspend to RAM)と違って電源はオフになるので、サスペンド中に停電があっても(タイマーの時刻までに電源供給が復旧していれば)ちゃんと起動してくれます。

ではテスト

とりあえず手動テストしてみます。
# echo `date +%s -d +2min` > /sys/class/rtc/rtc0/wakealarm
これで2分後に自動起動します。念のため確認。
# cat /proc/driver/rtc
rtc_time        : 17:25:17
rtc_date        : 2010-12-25
alrm_time       : 17:27:14
alrm_date       : 2010-12-25
(後略)
rtc~が現在日時、alrm~がタイマー起動日時。確かに2分後に設定されています。(時刻は日本標準時じゃなくてUTCなので注意)
ハイバネートして待っていると……2分後、ちゃんと自動起動してくれました!

※ハイバネート処理が2分じゃ終わらない場合は、適宜時間を長くしてください。ちなみにこのマシンはコンソール(CUI)オンリーなので2分あれば余裕でした。

あれ…S5からもタイマー起動できる?

ついでなので、S5(電源オフ)状態からはタイマー起動できないことを確認しようと、pm-hibernate のかわりに shotdown -h now と打って待っていたら……あれ? 起動した!?
どうもこのマシン、S5からもタイマーで起動できたみたいです。pm-utils を入れる必要なかったとは……。

タイマー起動できない場合は、ハードウェア時計の同期を無効に

さて、このマシンの場合は実は何も考えずにタイマー起動できちゃうことが判明しましたが、「うちのマシンは起動しない…」という場合、終了時にシステムが自動実行するスクリプトを書き換えれば改善されることがあるようです。

曰く、多くのLinuxディストロでは、シャットダウン時に「システム時計をハードウェア時計に書き戻す処理」(hwclock --systohc)が入っており、その際にセットしておいたタイマー起動が無効になってしまうのだとか。
具体的にどう対処するかは、先の参考資料の Disable HWclock updates の項目をどうぞ。

0 件のコメント:

コメントを投稿