web-dev-qa-db-ja.com

特定の時間にLinuxデバイスをウェイクアップすることは可能ですか?

組み込みボードでDebianを実行しています。ボードの発言を午後10時に一時停止または休止状態にし、午前7時にウェイクアップしたいと思います。 pmi action suspend/hibernateでボードをサスペンド/ハイバネートしても問題ありません。しかし、特定の時間にボードがウェイクアップするようにスケジュールすることは可能かどうか疑問に思います(おそらく、cronなどを使用して)。もしそうなら、私がそれを行うために必要なすべてのステップを説明していただけますか?

組み込みボードは、外部割り込み信号を使用するか、PIC、タイマー、リレーなどのMCUを使用して簡単な回路を構築し、ボードをウェイクアップするタイミングを設定することでウェイクアップできます。しかし、それはnot私が求めているものです。 Linuxでウェイクアップ操作を実行する方法があるかどうかを知りたいです。ボードにはWiFi接続があり、電源ケーブル以外に別のケーブルを接続することはできません(wake-on-lanについては書かないでください)。

6
Angs

あなたが求めているものを考えてください。電源がオフになっている単一のデバイスで、特定の時間にコードを実行してオンにする必要があります。そのコードを何が実行しますか?デバイスがそのコードを実行するmakeは何ですか?

デバイスがどれだけ深くスリープしているかによっては、特定の時間にデバイスの電源をオンにするようにBIOSを構成することで可能になる場合がありますifBIOSはそのようなものをサポートします機能。電源を切ったときにCMOSメモリのビットを直接いじって、何も破損していないことを期待しますが、原則としてそれは実行可能である必要があります。 BIOSアップグレードの場合の復元力は、実用的でさえあるかもしれません。ただし、それでもデバイスの電源が完全にオフになっていないかどうかに依存します。何かがシステムのリアルタイムクロックを監視し、事前に選択された値に達したときに電源投入シーケンスを実行する必要があります。 Wake on LAN、Wake on Ringなど、すべて何かが電源オンイベントをトリガーすることに依存する手法と同じです。 (回答者にそうしないように頼んでも、Wake on LANについて書くことに対して今は反対票を投じますか?)

さらに重要なことに、ATXでトリガーされるのは(電源ボタンを押しても)、ある電源状態から別の電源状態への遷移です。 ATXシステムを完全にシャットダウンする唯一の方法は、PSUのスイッチを使用して電源をオフにするか、電源コードを抜くことです。これは、AT PSUとは対照的です。PSUは、電源スイッチがAC電源コードと一致していたためATX PSU電源スイッチ(コンピューターの電源ボタンではない)と同じように。ただし、システムの電源が完全にオフになっている場合でも、システムクロックが特定の値に達するのを待つ何らかのループを実行している場合でも、オペレーティングシステムとCPUを実行しているものはなく、実際には何の違いもありません。電源がオンになっている場合(マザーボードとBIOSの実装の詳細です。そのような単純なタスクのためだけに、補助的な低電力CPUを使用している可能性があります)、インストールされたコードは実行されないため、Linuxはどこにもありません。 CPUに関する限り、見たところ、cronのようなものはほとんどありません。

結論; あなたが求めていることがLinuxを介して直接実行可能である場合、私は非常に驚きますそれは可能性があります周囲のハードウェアとファームウェアの全体像。最も安全な賭けはほぼ確実に正確にその外部トリガーであり、シャットダウン時にプログラムされて、指定された間隔の後または指定された時間に電源投入シーケンスをトリガーします(独立したRTCがあります)。

13
a CVn

これを探している他の人のためだけに、RTCのインターフェースを見てください。私の現在のシステムでは、将来の日付を/sys/class/rtc/rtc0/wakealarmに書き込むと、システムが将来ウェイクアップします。例えば:

# wake up the system in 3 minutes
sh -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm"

深夜以降にコマンドを実行しない限り、+ 3 minutestomorrow 0700に変更してください。

私はこれを linux.com で見つけました。

0
Charlie C