中古で手に入れた IBM ThikPad X21 に Puppy Linux 4.1.2.1JP をインストールしました。 これを、蓋を閉じたときにサスペンドするよう設定します。
Puppy Linux 4.2日本語版にはこれらが設定されています。 トラブルが無いようならこの記事は不要です。
Puppy Linux 4.1.x の場合 acpidをインストールします。 Puppy Linux 4.2には acpid が最初から含まれています。追加してインストールは不要です。
Puppy Download page から辿って、pet_packages-4 の中にある acpid-1.0.8-2-i486.pet をダウンロードします。 ダウンロードしたファイルをクリックすると PETget が立ち上がって、インストールしてくれます。
これで電源ボタンを押すとシャットダウンするようになります。 しかしサスペンドするには次の設定が必要です。
/etc/acpi ディレクトリの中に actions という名前のディレクトリを作り、 以下の内容のスクリプトを suspend.sh という名前で保存し、実行属性を付けます。
改良版をこのページ末尾に記しています。
#!/bin/sh # process before suspend sync rmmod ehci_hcd # suspend echo -n mem > /sys/power/state # process at recovery from suspend modprobe ehci_hcd
このスクリプトはサスペンドの前後でusb_storage ehci_hcd をリスタートさせています。
デスクトップにあったUSB接続ドライブのアイコンがサスペンド復帰後に消えてしまうという、
Puppy Linux 4.1x における問題に対処したものです。
Puppy Linux 4.20ではこうしなくてもアイコンが復帰しましたので、これらの行は不要です
(eeePCで必要だったという報告もあります)。
パピーリナックス日本語版フォーラム でのきりんさん、jakeさんの報告 によれば環境によりusb_storageのリスタートでは問題が生じるようです。 代わりに ehci_hcd をリスタートさせるとよいとのこと。
/etc/acpi/events ディレクトリ内に以下の内容を好きな名前たとえば lidsuspend として保存します。 実行属性は不要です。
event=button.lid* action=/etc/acpi/actions/suspend.sh
端末を立ち上げて、以下のコマンドを入力します。 あるいはPCを再起動しても可。
/etc/init.d/rc.acpi restart
以上で、PCの蓋を閉じるとサスペンド、開けると復帰するはずです。
うまく動かなかったときは、 acpidを次のようにデバッグモードで起動するとメッセージが得られるので手がかりになるでしょう。 端末から
killall acpid acpid -dl
USB接続ドライブをマウントしている状態でしないすると、復帰後にそのドライブの番号が変わります。 サスペンド前にアンマウントしてやり、復帰後にマウントしなおすという処理も考えられますが、フォルダを開いているなど使用中だとアンマウントもできません。
次善の策として、USB接続ドライブがマウントされているときはサスペンドしないようにします。 suspend.sh を次のものと入れ替えます。 このスクリプトは(probedisk2が Puppy Linux独自コマンドのため) Puppy Linuxでのみ有効です。
#!/bin/sh # do not suspend if usb media mounted USBS=$(probedisk2|grep '|usb' | cut -d'|' -f1 ) for USB in $USBS do mount | grep -q "^$USB" && exit done # process before suspend # sync not needed because usb media are not mounted #sync rmmod ehci_hcd #suspend echo -n mem > /sys/power/state # process at recovery from suspend modprobe ehci_hcd
Puppy Linux 4.20ではサスペンド前後の ehci_hc の行は不要のはずですが、 環境により加えてみてください (きりんさんの報告によれば eeePCで必要だったとのこと)。