Kodama's home / tips.

Linux ノ−トPC のサスペンド/ハイバネ−ション

とりあえずノ−トに Linux を入れたけど, サスペンドやハイバネ−ションをすると マシンが凍りついたり, 変なエラ−が出たりとかで悩んでいる人もいるみたいだ. lilo の インスト−ル説明会で質問が出ていたので, 書いておいても無意味ではないかな?

マシンがサスペンドモ−ドや ハイバネ−ションモ−ドに入るときの 合図を Linux に送るのも APM BIOS の役割になっている. そこで, Linux 側が APM に対応していないと, ちょっと困った事になってしまう. (suspend(メモリに残してCPUを停止), hibernation(HDD にメモリ内容を記録して CPU を停止).

APM 無しで, 特になにもしないで(ハ−ドウェア的に?), サスペンドできるマシンもあり, 一方で, APM BIOS サポ−トと言っていても, Linux の APM ドライバと相性が悪い ノ−トPCもあるらしい. 僕が使っている/使った 2台(IBM ThinkPad240, Panasonic PRONOTE nimi)は 問題が無かったので, うまくゆかないときの対策までは把握していない. kernel や pcmcia-cs の版と マシンの対応にもよるらしいので, 版を変えてみても良いかも.

参考文献 としてJF の Battery-Powered (特に 3章 APM (Advanced Power Management)), PCMCIA-HOWTO (特に 2章 Compilation and installation), Kernel-HOWTO を見てください.

PCMCIA-HOWTO は pcmcia-cs のパッケ−ジにも入っています. PCカ−ドの動作などで問題が出た場合には, JFの翻訳で概略を把握しておいて, pcmcia-cs 付属のもので確認すると良いです.

作業の概要

以下で kernel 再構築とインスト−ル, modules の再インスト−ル, pcmcia-cs の再インスト−ル を行います. 作業手順は, linux-2.0.38.tar.gz と pcmcia-cs-3.1.1.tar.gz を /usr/src/linux-2.0.38 と /usr/src/pcmcia-cs-3.1.1 に展開後, /usr/src/linux-2.0.38/README と /usr/src/pcmcia-cs-3.1.1/PCMCIA-HOWTO に従っています.

kernel と pcmcia-cs のソ−スを展開. 下のような感じに link しておくと良い. (tar xzvf とか ln -s の使い方を確認しよう.)

# ls -ld /usr/src/li*
lrwxrwxrwx  1 root root   12 Dec  9 00:57 /usr/src/linux -> linux-2.0.38
drwxr-xr-x 15 root root 1024 Dec 13 11:53 /usr/src/linux-2.0.38
# ls -ld /usr/src/pcmcia*
lrwxrwxrwx  1 root root   15 Dec  9 00:56 pcmcia-cs -> pcmcia-cs-3.1.1
drwxr-xr-x 11 root root 1024 Dec  9 15:13 pcmcia-cs-3.1.1
kernel の README に従って kernel と modules を再構築.
# cd /usr/src/linux
# make mrproper
# make menuconfig
"Advanced Power Management BIOS support" (APM) を有効にする. ここがポイントなので, 忘れないように.

その他の一般的な注意に関してはここでは扱わない.

# make dep
# make clean
# make bzImage
# make modules
各段階で異常が無いか見ておきます. ここで, 自信があるなら, kernel と modules をインスト−ルしても良いのですが, その前に pcmcia-cs を再構築しておく方が良さそうです.
# cd /usr/src/pcmcia-cs
# make config
ここでいくつかの質問が表示されるのでそれに答える.
# make all
問題が無ければ /usr/src/linux で modles と keruenl をインスト−ル. kernel は仮に フロッピ−ディスクに置くとして, フォ−マット(fdformat /dev/fd0h1440 とかで) した フロッピ−ディスクを差す.
# cd /usr/src/linux
# make modules_install
# make zdisk
/usr/src/pcmcia-cs の方で pcmcia-cs をインスト−ル. /etc/pcmcia 以下も更新されるので注意. /etc/pcmcia ディレクトリ内に PCMCIA 関連の設定があります.
# cd /usr/src/pcmcia-cs
# make install
作ったフロッピ−ディスクを差して再起動. この時点で PCMCIA, サスペンド, ハイバネ−ション の動作を確認. 問題が無いなら /usr/src/linux でlilo をインスト−ル.
# cd /usr/src/linux
# make bzlilo

lilo が参照するkernel と make bzlilo が想定するkernel(/vmlinuz) が 違う配布系もあるようです. /etc/lilo.conf の "image = /vmlinuz" のような行を確認してください. 食い違うようなら, 手で kernel を置きなおすか, /etc/lilo.conf を編集して /sbin/lilo を行う. 再起動して動作を確認.


Kodama's home / tips.