APMD(8) | Linux Programmer's Manual | APMD(8) |
apmd - Advanced Power Management (APM) デーモン
apmd [ -c check_seconds ] [ -P proxy_cmd ] [ -p percent_to_log ] [ -qVvW ] [ -w warn_percent ] [ -? ] [deprecated options]
apmd は APM を監視するデーモンで、OS のカーネルの APM BIOS ドライバーを利用して動作する。 apmd はドライバーからイベントの発生が通知された時にコマンド (通常はシェルスクリプト) を実行することができ、 またシステムの電力状態が変化 (AC 電源供給のオン・オフなど) したときに syslogd(8) を使ってログを残すことができる。 電池の残量がわずかになった時には、 システムの全ユーザーにいろいろな方法で警告を通知することもできる。
カーネルの APM ドライバーから サスペンドやスタンバイを行いたい旨の要求を受け取ると、 apmd は適切なコマンドを実行し、 そのイベントをログに書き、 データをディスクに sync(2) し、 全てのデータがディスクに実際に書きこまれるように少しの間スリープし、 その後 APM ドライバーに処理を続行するように通知する。 しかし「クリティカル」なサスペンド (緊急シャットダウン) の場合には、 途中の段階をすべて飛ばしてドライバーに処理の続行通知を送る。
このデーモンの主な利用法は proxy コマンドを使用して電力の節約をすることである。 このコマンドのデフォルトの検索場所は /etc/apmd_proxy であり、起動の際には 1 個または 2 個の引数が付けられる。
BIOS の「サスペンド」モードは積極的に電力を節約する。 通常は CPU のコア部分とメモリを除いて全てのデバイスの電源をカットし、 これらも超低電力モード (very low power mode) にする。 多くのラップトップでは、 電池だけで数日間サスペンドし続けることができる。 (「ハイバネーション」はさらなるサスペンドと言える。 これは全ての状態がディスクに書きだされるので CPU のコアの電源供給もカットすることができ、 電池から電源供給をする必要がまったくなくなる。 現段階では Linux はハイバネーションをサポートしていない。) PCMCIA デバイスは cardctl(8) を使って手動でサスペンドすべきである。 またいくつかのドライバーモジュールもアンロードしておく必要があるかもしれない。
BIOS の「スタンバイ」モードは多少電力の節約をする。 マシンはユーザーの操作にほとんど即時に反応できる状態に保たれる。 多くのラップトップではスタンバイモードのままだと 電池だけでは一日ももたない。 通常は、 BIOS がすること以外には何もしなくてよい。
システムクロックをハードウェアクロックに一致するように更新する必要がある。 これは通常カーネルの APM ドライバーによって処理される。 PCMCIA デバイスは cardctl(8) を使用して手動でレジュームする必要があるかもしれない。 また再ロードや再初期化が必要になるドライバーモジュールも存在する。 クリティカルなサスペンドの時には緊急シャットダウンにより、 システムの状態が完全には保存されていないこともあるため、 アプリケーションやドライバーの状態がおかしくなるかもしれない。
このデーモンはいろいろなログメッセージを発行する。 ほとんどは見ればわかるだろうが、 電池の状態に関するメッセージには少々説明が必要かもしれない。 ログの "Battery" または "Charge" メッセージには、 続いて 4 つのフィールドが記述される。
1) 消費レート (パーセント/分)。負の場合は充電を示す。
2) 完全充電・完全消費状態からの経過時間 (hh:mm:ss)。 この値は 100% または 0% になった状態からの経過時間を 反映している場合にのみ意味がある。 それ以外の場合には時間は括弧で括られ、 最後に apmd の「重要な」状態変化 (デーモンの起動、AC 電源から電池駆動への移行など) が起きてからの経過時間を表す。
3) 完全に電池を消費してしまうまで (あるいは完全に充電されるまで) の予測時間。 最後にレジューム状態から復帰して以降 (あるいは AC 電源が接続されて移行) と 同じような利用状態が続くと仮定している。 この時間は apmd 自身が計算している。
4) 括弧に挟まれた、充電率と電池の寿命。 これは APM BIOS の予測値である (インテリジェントな電池自身からの、 やや控えめな見積りであることが多い)。 この情報は、このデーモンからのメッセージのほとんどに追加される。
このデーモンは APM BIOS 1.2 イベントをサポートしている。 しかし複数の電池の取り扱いなど、より高度な機能はサポートしていない。 また最近の PC ハードウェアにある ACPI サポートとの連携は、まだできない。
これから書くソフトは、 proxy スクリプトだけを使うようにすべきである。 以下のオプションは今後は使うべきでない (これらのほとんどは正式リリースには存在しない)。 指定されると、各イベントから起動されるどの proxy コマンドよりも優先される。
電力状態が変わったあと、最初に出される報告は不正確かもしれない。 なぜなら 1% 以下の変化は 1% に丸められるからである。例えば、 ある程度マシンを使って 50.9% の電池が残っているとすると、 これは 50% と報告される。 マシンの充電が始まると、残量が 51% になるまでの変化は 0.1% だけである。 したがって充電速度は劇的に大きな値になってしまう。
他のアプリケーションに、システムの電源管理方針決定に参画させるには、 より一般的なフックが必要である。
現在のところ、複数の電池は 1 つの大きな電池としてしか取り扱われない。
/dev/apm_bios
/proc/apm
/etc/apmd/apmd_proxy
このプログラムは Rik Faith (faith@cs.unc.edu) によって書かれ、 GNU 一般公共使用許諾のもとで自由に再配布できる。 このプログラムは「完全に無保証」である。現在の管理者は Avery Pennarun (apenwarr@worldvisions.ca) である。
10 Jun 1999 |