デスクトップでのハイバネート [プログラム]
私のデスクトップ(Debian)は、24時間運転ではありません。必要なときだけ電源を入れています。電源を落とす前に実行中のプロセスを一応確認するのですが、やはりときどき実行中のまま電源を落としてしまうことがあります。また、最近、何日もかかるようなプログラムを作成したのですが、その実行のためにデスクトップの電源を入れっぱなしにはしたくありません。
そこで、ハイバネート機能です。電源を入れ直したとき、以前の状態から再開してくれます。
ノートPCにdebianをインストールしたら、自動的にハイバネート機能がインストールされていました。
ハイバネート機能を使うと、実行中の状態を保存してくれるため、個々の「プログラム側の修正なし」で電源断に対応できます。shutdownの代わりにhibernateを使うだけです。
これは、ノートPCだけでなく、デスクトップでも使えます。
インストールは簡単です。
が、実際には、ハイバネートできませんでした。途中でエラーになりました。
一方、コマンドモード、つまり、ターミナルからrootでhiberneteすれば正常にハイバネートします。パーミッションの問題かなにかでしょう(詳しく調べていません)。
ところで、gnomeでなくコンソールのときに電源ボタンをおすと、ハイバネートでなくシャットダウンします(私はacpidを使用しています)。これをハイバネートに変更しておいたほうがよさそうです。通常の電源断はハイバネートで、本当にシャットダウンしたいときだけ、shutdownコマンドで電源断するほうが、誤って電源ボタンを押したときのことを考えると、より安全でしょう。
さて、コンソールのときに、電源ボタンをおすと、たぶん
ですので、/etc/acpi/powerbtn.shを作成し/usr/sbin/hibernateを実行させます。たとえば、次のようにします。
以下のような問題点があります。
そこで、ハイバネート機能です。電源を入れ直したとき、以前の状態から再開してくれます。
ノートPCにdebianをインストールしたら、自動的にハイバネート機能がインストールされていました。
ハイバネート機能を使うと、実行中の状態を保存してくれるため、個々の「プログラム側の修正なし」で電源断に対応できます。shutdownの代わりにhibernateを使うだけです。
これは、ノートPCだけでなく、デスクトップでも使えます。
インストールは簡単です。
apt-get install hibernategnomeを使っているときに電源ボタンをおすと、サスペンド、ハイバネートのいずれかを選択できます。
apt-get install gnome-power-manager
が、実際には、ハイバネートできませんでした。途中でエラーになりました。
一方、コマンドモード、つまり、ターミナルからrootでhiberneteすれば正常にハイバネートします。パーミッションの問題かなにかでしょう(詳しく調べていません)。
ところで、gnomeでなくコンソールのときに電源ボタンをおすと、ハイバネートでなくシャットダウンします(私はacpidを使用しています)。これをハイバネートに変更しておいたほうがよさそうです。通常の電源断はハイバネートで、本当にシャットダウンしたいときだけ、shutdownコマンドで電源断するほうが、誤って電源ボタンを押したときのことを考えると、より安全でしょう。
さて、コンソールのときに、電源ボタンをおすと、たぶん
/etc/acpi/events/powerbtn-acpi-supportと呼び出されます(ただし、/etc/acpi/powerbtn.shがなければ、powerbtn-acpi-support.sh内でshutdownを実行します)。
→ /etc/acpi/powerbtn-acpi-support.sh
→ /etc/acpi/powerbtn.sh
ですので、/etc/acpi/powerbtn.shを作成し/usr/sbin/hibernateを実行させます。たとえば、次のようにします。
#!/bin/sh注意点として、hibernateから復帰後は、当然ですが、その次のコマンドから実行が開始されますので、不要なコマンドを実行しないようにしてください。上記の例では、execを忘れると、復帰後すぐにシャットダウンしてしまいます。
#$Id$
HIBERNATE=/usr/sbin/hibernate
if [ -x $HIBERNATE ]; then
exec $HIBERNATE
fi
# if hibernate fail, then try shutdown
/sbin/shutdown -h -P now "Power button pressed"
以下のような問題点があります。
- USBに接続されたデバイスは、復帰時にダブって接続されることがあります。たとえば、SDカードなどが二重にマウントされることがあります。おそらくUSBなどのhotplugデバイスを管理しているものが、復帰時に「新たに接続された」と認識するためでしょう。
- 復帰時にマウスが表示されませんでした。キーボードは生きているので、おそらくマウスを差し直すと直るでしょう。
- 「カーネルモジュールをアップデートすると復帰できない」らしいです(私はまだその状況に遭遇していません)。apt-get upgrade等をする際には、そのことを頭において実行しましょう。
- 復帰時に以前の状態に戻ります。必要なら、状態を暗号化して保存するようにして、さらに、起動時にパスワードを要求するようにしなければならないでしょう。