[Linux] Debian GNU/Linux 等に関する Unix 系の設定メモ

Debian on Thinkpad T43 その1

Last Update: 2006--0-6- (Sat) 11: 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 でもサスペンドできるようになったと理解してよろしいでしょうか?もしそうであれば、詳細をご教授願いたく。

どうぞよろしく。

2) takayama (2006-07-26 (Wed) 22:49)

ごめんなさい、もう良く覚えていないです。

どこかでパッチを発見して試したのですが…、多分サスペンドがうまく出来なかったんだと思いますよ。
ここだったかなぁ…?(www.c.csce.kyushu-u.ac.jp/~kenta/index.php?Linux%20on%20RS480)

少なくとも、ハイバネーションからの復帰が出来なかったのは覚えています。

自分の場合は、このくらいの要求しか無かったので
・HDD の転送速度を普通にしたい
・サスペンドしたい
・カーネル2.4使いたい

どうしても、これらを全部満たす事が出来なかったので、仕方なくカーネルを2.6に上げたんです。
ずーーっと2.4を使っていて、バージョンアップが面倒そうだからと2.6は遠慮していたのですが、なんか別に今まで通りにカーネルコンパイル出来たので結果的には良かったかなと思っています。

最近ムトウさんが Debian での SATA 対応状況についてまとめてらっしゃったので、もしご存知なければどうぞ。
kmuto.jp/d/index.cgi/debian/sata-sarge.htm

3) takayama (2006-07-26 (Wed) 22:58)

ちょっと思い出してきたかも…

試したのは主に三種類で

1, カーネル2.4.27+パッチ
2, カーネル2.6.14+パッチ
3, カーネル2.6.16

1か2で、サスペンドからの復帰時にディスプレイが真っ黒のまま回復しなかったです。
もしカーネル2.4でいけたのなら自分も2.4を使っていたので、きっと出来なかったのでしょう。

もっと出来なかった理由もちゃんと保存しておくべきなんですけどね。なかなか気が回りづらくて。
この記事の「その2」はまだ書いてないし(笑)

4) (2010-06-09 (Wed) 03:42)

大変参考になりました.僕のThinkpad X21 もhibernateできるようになり、windows xpからおさらばできます。Fn+F4で電源が切れるようになりました.

5) (2010-06-09 (Wed) 03:47)

いいわすれました。Mepis 8.5です。HDDに導入後にapt-get install hibernateのみで後は上の記述を読んでいけました。ありがとうございました。

コメントはお気軽にどうぞ

Cookie に保存しますか?


・スパム対策のため、http:// を含むコメントの投稿は出来ません。
・スパムチェックのため、投稿がすぐに反映されない場合があります。
・メールアドレス入力欄には何も入力しないでください。

トラックバック

トラックバックURL: http://espion.just-size.jp/mt-tb.cgi/581


この記事のリンク元

 
Copyright (C) Kyosuke Takayama, All rights reserved.