■ Debian on Thinkpad T43 その1
世間では MacBook が流行っているようだけど、マイペースに Thinkpad を購入。前から欲しかった T シリーズ。今までは X30 を使っていたんだけど、画面を広くしたかったし外に持って行く事って無いので大きくてもいいかなと。
で、当然のように Debian を入れたんだけど、思ったよりもハマりポイントが多くてセットアップに時間がかかってしまった。X30 の時は楽だったんだけどなー、ハードウェアも色々と進化してますな、と。ていうか T43 で Linux っていう情報が少な過ぎてびっくりした。
主に以下の三点がすんなりいかなかった部分。
- X の設定
- HDD の転送速度がやたらと遅い(DMA が有効にならないし 3MB/sec くらいの速度しか出ない)
- サスペンド(とハイバネも)が出来ない
インストールは Debian/Sarge の CD-ROM から行なって、すぐに etch へアップグレード。その後に色々とセッティングをした。インストール作業自体は特にハマらないで普通にいけた。
X は自動の設定だとちゃんと動いてくれなくて、BSD での設定例 を参考にして /etc/X11/xorg.conf を編集。Load "dri" をコメントアウトして、ドライバを radeon にしたら動いた。ドライバに関しては ATI 用の xserver-xorg-video-ati っていうパッケージがあるみたいなんだけど、これは(etchのパッケージが壊れているようで)うまくインストール出来なかった。
とりあえず、今使っている /etc/X11/xorg.conf は コレ。USB マウスとタッチパッド、トラックポイントが一通り動くようになっている。
HDD の転送速度が遅いのと、サスペンドが出来ない問題は、HDD が SerialATA(SATA?) だかららしく、ハマってる人も結構いっぱい居て、ドライバをハックして DMA を無理矢理有効にさせたりとか色々な方法を発見しましたけど、http://www.kernel.org/ からカーネル 2.6.16 を持って来てビルドするっていうのが一番簡単でお勧め。*1
それで、サスペンドをするためにはカーネルに Suspend2 のパッチをあてたりしないといけないんだけど、その辺のやり方メモ。ハイバネーションも出来る。
まずアーカイブをゲットしてきて展開。
# mkdir /usr/src/archives # cd /usr/src/archives # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 # wget http://www.suspend2.net/downloads/all/suspend2-2.2.4-for-2.6.16.tar.bz2 # cd /usr/src # tar xvfj ./archives/linux-2.6.16.tar.bz2 # tar xvfj ./archives/suspend2-2.2.4-for-2.6.16.tar.bz2 # ln -s linux-2.6.16 linux # cd linux
Suspend2 のパッチをあてる。以下のコマンド一発でパッチがあたるようになっている。
# /usr/src/suspend2-2.2.4-for-2.6.16/apply
カーネルのコンフィグレーションは、Linux on an IBM ThinkPad T43p で紹介されているものをそのまま使った。(http://www.gwright.org.uk/files/thinkpad/ に置いてある config-2.6.14-thinkpad ってやつ)
# wget http://www.gwright.org.uk/files/thinkpad/config-2.6.14-thinkpad # mv config-2.6.14-thinkpad .config # make oldconfig
oldconfig して出て来たメッセージは全てデフォルトのままにした。特になんも選んでいない。自分は reiserfs を使っているのですが、このコンフィグファイルだと有効になっていないので、CONFIG_REISERFS_FS=y に変更しておいた。
あと、ハイバネーションを使う場合は、データを保持する領域を CONFIG_SUSPEND2_DEFAULT_RESUME2 で指定しておく必要アリ。
全部準備出来たらカーネルの再構築。
# make-kpkg --revision custom-20060601 kernel-image
そうすると、/usr/src ディレクトリに linux-image-2.6.16_custom-20060601_i386.deb っていうのが出来ているので dpkg -i でインストール。
# dpkg -i /usr/src/linux-image-2.6.16_custom-20060601_i386.deb
それで再起動。なんだけど、ジツは sarge(カーネル2.4系)でインストールすると内蔵HDDが /dev/hda として認識されるんだけど、ここで新たに作ったカーネルで起動すると内蔵HDDが /dev/sda で認識されるので、/etc/fstab を書き換える必要がある。
しかも Grub の menu.lst で指定されている root ドライブの指定も /dev/hda なので、ここも /dev/sda に変更しておく必要がある。ちょっと面倒臭い。
はぁ〜、ここってなんかもっとうまい回避策は無いもんすかねぇ…。
/dev/hda を /dev/sda に変更する。
# vi /etc/fstab # vi /boot/grub/menu.lst
そうしたら再起動して新しいカーネルで起動してから HDD の転送速度を計ってみると、バッチリ使える速度になった。
# hdparm -ft /dev/sda /dev/sda: Timing buffered disk reads: 98 MB in 3.05 seconds = 32.10 MB/sec
まだこの段階ではサスペンドとかハイバネとか出来ないので、以下の設定が必要。もしかしたら APM だと上の Suspend2 のパッチとか以下の設定とか要らなかったかもしれないんだけど、先に ACPI で試しちゃって動いたので良くわかりません。また再インスコする羽目にでもなったら試してみたい所。
# apt-get install acpid hibernate
さっきカーネルのコンフィグをゲットしてきた Linux on an IBM ThinkPad T43p を見るとゴチャゴチャ設定について書いてありますが、hibernate はデフォルト設定のままでいける。
次は acpi の設定。サスペンド用の設定ファイルを追加する。/etc/acpi/events/suspend ファイルを新規に作成して、以下のような感じで hibernate コマンドを指定しておく。
event=button[ /]sleep action=/usr/sbin/hibernate --config-file=/etc/hibernate/ram.conf
これで再起動してから Fn+F4 キーを押すとサスペンドして、電源ボタンで復帰する。やっぱノートはこの機能が使えないとね!
ハイバネーションは、ハイバネーションからの復帰用にカーネルの起動パラメータに resume2 とか言うのを指定しておく必要アリ。/boot/grub/menu.lst の kernel っていう行に resume2=swap:/dev/sda8 みたいにしてハイバネーション用のデータを保持している領域を指定してやるだけ。
例えばこんな感じ。
title Debian GNU/Linux, kernel 2.6.16 root (hd0,0) kernel /boot/vmlinuz-2.6.16 root=/dev/sda1 ro resume2=swap:/dev/sda8 savedefault boot
見ての通り、/dev/sda8 を swap 領域として作成してハイバネの保存領域にしている。ちなみに新しい swap 領域は、cfdisk とかを使って適度な空き領域を確保した後に mkswap /dev/sda8 とかで作れる。実メモリが 1.5GB なので /dev/sda8 は 2GB 確保しておいたけど、どんなもんなんでしょ?
ここまで終わった状態で root になってから hibernate コマンドを打つと、無事ハイバネーション出来て、電源投入で復帰。初めてハイバネ使ったんだけど、こりゃ〜便利だ。
Fn+F12 を押しても ACPI が拾ってくれないみたいで、サスペンドと同じようにキーバインドを設定する事が出来なかったのが残念。
あと、DVD は普通に mplayer で見れた。
- *1: Debian パッケージのカーネルのバージョンが2.6.16以降になれば、もっと楽になると思うけど。
Posted by Kyosuke Takayama at 2006-06-11 (Sun) 17:17 printable version
1) kk (2006-07-25 (Tue) 18:41)
はじめまして。いろいろ参考にさせていただいています。
>ドライバをハックして DMA を無理矢理有効にさせたりとか色々な方法を発見しましたけど
この部分ですが、カーネル 2.4 でもサスペンドできるようになったと理解してよろしいでしょうか?もしそうであれば、詳細をご教授願いたく。
どうぞよろしく。