設定時刻は、/etc/melco/timer_sleep に保存され、 ppc_uartd がそれを読み込んで、 AVR に何らかのコマンドを送って実現しているはず。
内向きサーバ(HGLAN)は、夜中にバックアップやらログの整理やら、
いろいろ処理をさせているのだが、当然電源を入れていないと
これらの処理が起動しない。
タイマー起動がうまくいけば、夜中の処理時刻前に必ず起動し、
これらの処理を確実に行えるようになる。
スリープから復帰後も POWER LED が約5秒間隔で点滅したまま。
電源ボタン長押しで電源を OFF にしても約5秒間隔で点滅したまま。
手動電源 OFF から指定時刻に起動するかを確認したら、、、
起動してこない。
これでは、目的が達せないぞ。
あらためて、manual.pdf を読んでみる。
たしかに、
「・スリープ機能を設定すると、Link Stationが起動していてもスリープ状態
になっていても電源ランプがゆるやかに点滅します。」
と書いてある。POWER LED に関してはマニュアルどおり。
でも「電源 OFF から復帰できません」とは書いてない。
シャットダウンの説明のところには、
「・スリープ機能設定画面でスリープ復帰時刻を設定しておくと、
自動的にLink Station の電源をONにすることもできます。」と
書いてあるのに。
ひょっとすると、Web からのシャットダウンと、
電源ボタンによる電源 OFF とは違う?
Web のシャットダウン実行時のスクリプト setup-shutdown-in.cgi から呼ばれる
/www/script/melsub_shutdown.sh を見ても、
普通に shutdown -h now しているようにしか見えないし、
電源ボタンを長押ししたときに ppc_uartd は
同じ /www/script/melsub_shutdown.sh を読んでいるはずだし。
おっかしぃーなぁと、Web からシャットダウンしてみたが、、、 指定時刻になっても起動してこなかった。
なぁ〜んや。うごかへんやん。
on<>スリープ開始時刻<>スリープ復帰時刻スリープを使用しない場合
off<>スリープ開始時刻<>スリープ復帰時刻
sleep<>ready<>スリープ開始時刻<>スリープ復帰時刻スリープを使用しない場合
none<>none<>none<>none
ppc_uartd, ap_servd, libls.so.1.0.1 を strings してみた結果、
/etc/melco/timer_sleep を見ているのは、ppc_uartd
/etc/melco/timer_status を見ているのは ap_servd
スリープを設定した状態で、login していると、、、
設定時刻を1分ほど過ぎてシャットダウンが始まった。
シャットダウン後に手動で電源をONにし、
再度 login し、uptime を見てみると、
root@LINK:~# uptime 12:03pm up 0 min, 1 user, load average: 0.37, 0.09, 0.03と、普通に立ち上がっただけのようである。
May 1 12:01:15 LINK kernel: Kernel logging (proc) stopped. May 1 12:01:15 LINK kernel: Kernel log daemon terminating. May 1 12:01:15 LINK exiting on signal 15 May 1 12:03:02 LINK syslogd 1.3-3: restart. May 1 12:03:02 LINK kernel: klogd 1.3-3, log source = /proc/kmsg started.と、 12:01 に普通にシャットダウンされて、 12:03 に普通に立ち上がってきただけ のようである。
まず、スリープ設定をしていない状態で、QQQQ を送ってみる。
root@LINK:~# echo -n 'QQQQ' > /dev/ttyS1ん?何も起こらない。
今度は、ap_servd 関連以外の設定のみしてみようと、
/etc/melco/timer_sleep を修正し終わった時点で、
POWER LED がゆっくり点滅していることに気が付いた。
/var/log/message を見てみると、
May 1 15:52:19 LINK uart daemon[236]: Timer is set with 5/1 15:55-5/1 16:00. (because timer file is re-initialized)と残されている。
そうこうしているうちに、 設定時刻(を1分過ぎた 15:56 )にシャットダウンされ、 設定時刻(のちょっと前)には電源が入った。
ap_servd はスリープとは関係ないみたいである。
じゃあ、どうして Web から設定するときの CGI スクリプトは
ap_servd を再起動しているんだろう?
続いて、 /etc/melco/timer_sleep の第一フィールドを on から off に変更した。 程なく /var/log/message に
May 1 16:02:05 LINK uart daemon[236]: Timer is released. (because timer file is re-initialized)というログが残り、POWER LED が点灯したままとなった。
May 1 18:18:42 LINK uart daemon[236]: Timer is set with 5/2 17:00-5/2 17:30. (because timer file is re-initialized) May 1 18:19:22 LINK uart daemon[236]: Timer is set with 5/2 18:00-5/2 18:30. (because timer file is re-initialized) May 1 18:20:02 LINK uart daemon[236]: Timer is set with 5/1 19:00-5/1 19:30. (because timer file is re-initialized)基準時間は、スリープ開始時刻で、その時刻が
ためしに、5分後にスリープ、10分後に復帰の設定をして、 手動で電源OFFしておいたら、10分後に起動してきた。
← | LinkStation/玄箱 をハックしよう | → タイマーによる起動/停止(2) |