IBM ThinkPad i Series s30 に Debian をインストール

Last Updated at $Date: 2005/05/25 00:03:07 $.

注意事項
目次

作業日誌

(2002年〜)
3月13日

作業開始.とりあえず, プレインストールされている Windows を起動して必要な諸元を確認する.

Ethernet
Intel(R) PRO/100+ MiniPCI
モデム
Lucent Technologis Soft Modem AMR
3月14日

昨日は忙しくて,結局 Windows の起動画面を拝んだだけで終わってしまった.

さて,最初に危険な作業から先に処理しようと,BIOS アップデートを行う. 現段階なら,壊れても痛くも痒くもない. なお,起動時に F1 キーを押していると,BIOS メニューに入ることが出来るようだ.

LILO を MBR にインストールすると,もともとの MBR が破壊されるので, プレインストールソフト群の復旧メニューが現れなくなるらしい. そうなっても構わないように,Recovery Disk を作成しておくにする. 新しいフロッピーを用意して,起動時に F11 キーを押すと, 作成メニューに入ることができるので,その指示に従って作成した.

次に,ブート用のフロッピーを準備する.今回は,佐野さんの用意されている USB FDD に対応したイメージを利用した[]. フロッピーを作成するためのコマンドは以下の通り.

sudo /etc/init.d/volmgt stop
fdformat -v -U -d
dd if=resc1440.bin of=/dev/fd0 bs=512 conv=sync
eject
fdformat -v -U -d
dd if=root1440.bin of=/dev/fd0 bs=512 conv=sync
eject
fdformat -v -U -d
dd if=drv14-1.bin of=/dev/fd0 bs=512 conv=sync
eject

しかし,ディスクを起動可能に設定する個所でインストーラがループに入ってしまい, MBR に lilo をインストールできなかった.そこで, 以前に作成した GRUB を利用した boot disk を使って切り抜けた.

  1. Debian がインストールされている他のパソコンについて, 導入されているパッケージのリストを得る.
    # dpkg --get-selections > file
    
  2. これらのパッケージをインストールする.
    # dpkg --set-selections < file
    # apt-get dselect-upgrade
    
    ただし, kernel-image-*, pcmcia-modules-*, alsa-modules-*, userlink-modules-* など,再コンパイルが必要なパッケージは,あらかじめリストから削除しておく. それでも,既に存在しないパッケージが問題になる場合があるので, 以下のようにして個別に対処する.
    # dpkg -l '*' | egrep '^in'
    # echo not-found-package unknown | dpkg --set-selections
    
  3. この時,xserver-xfree86 パッケージの設定に失敗したため, X が正常に起動しなかった.以下のコマンドで再設定する.
    # dpkg-reconfigure xserver-xfree86
    
    チップセットのメーカとして,Silicon Motion を選択する必要がある. それから,Control + Alt + F1 などで他の仮想コンソールに一度移動してしまうと, X の画面に戻ることが出来ない.
  4. locale については, 以前の設定とは異なり以下のコマンドで設定できる.
    # dpkg-reconfigure locales
    
  5. GRUB の導入. 特に,kopt と groot の設定に注意する必要あり.
  6. PIN 機能の設定
  7. PPP によって外部と接続するユーザーは dialout グループに属している必要がある.
    # adduser foo dialout
    # adduser foo audio
    # adduser foo src
    
  8. X20 の .config を流用して,kernel の再構築を行った. しかし,どうも APM が正常に動作していないようだ. Fn + F4 などによる suspend が処理されない.のりまるさんの .config を参考にして,ACPI を有効にした kernel を作ってみるが,状況に変化なし.
  9. sysklogd の設定
  10. Ethernet ドライバの設定
  11. USB マウスの設定
  12. Wnn6 をインストール

以下の設定・調査を予定.

  1. ACPI / acpid の設定
  2. anacrontab の設定
  3. /etc/hosts の編集
  4. /etc/printcap の編集
  5. ext3 の設定
  6. apache の設定
  7. 東風明朝・ゴチックフォントの設定
Woody 用の USB 対応インストールフロッピーは, 武藤さんによって作成 されているようです(2004年3月14日追記).
3月15日

ACPI の調査を始める.ACPI 関係を全て組み込んだカーネル(2.4.18)を作成し, acpid をインストールすると,以下のような状況になった.

知り合いの人は「Kondara は suspend も出来てるよ」と言っていたので,Linux で ACPI も使えるようになったのだと安心していたのだが….さて,どうするべきだろう?

とにかく,suspend なり sleep なりが出来ないと持ち運び用マシンとしては致命的なので, Kondara のカーネルソース(1,2)を拾ってきて再構築してみる. 症状はさして改善された様子がないですね…,うーん.

仕方がないので,更に少し調べてみる.

というわけで,まだ Linux では全然動かない,ということなのでは? という気がしてきた…. うーん,これからどういう風に使うか,かなり悩んでしまう. こまめに電源を切るしかないのかなあ.

3月17日

ext3 の設定を行う.最初に,kernel を再構築して ext3 FS を有効にしておく.

# tune2fs -j /dev/hda3
# tune2fs -j /dev/hda4
# perl -pi -e 's/ext2/ext3/;' /etc/fstab
3月19日

ACPI4Linux で配布されている最新のパッチ(2002年3月8日版)を適用して kernel を再構築したところ,とりあえずバッテリーの状態は見えるようになった.

cat /proc/acpi/battery/BAT1/state

ただ,wmacpi によるバッテリーの残量表示はまだ出来ない. 同時に,電源スイッチによる shutdown が出来なくなってしまった. acpid の設定を見直す必要がある?

s30 の PCMCIA は,従来の pcmcia-cs 付属のモジュールでは扱えないようだ.

3月20日

wmacpi を更新すると,正常にバッテリー残量が表示されるようになった.

wget http://www.ne.jp/asahi/linux/timecop/software/wmacpi-1.34.tar.gz
apt-get source wmacpi
cd wmacpi-1.33
uupdate ../wmacpi-1.34.tar.gz
cd ../wmacpi-1.34
dpkg-buildpackage -us -uc -rfakeroot

/etc/acpi/default.sh を編集し,電源スイッチで init 0 が実行されるようにした.

加えて,anacron の設定を見直す必要がありそうだ. 現時点は,バッテリー動作時にも cron job が実行されてしまっているような気がする.

5月4日

kernel を linux-2.4.19-pre7-ac3 に 更新する.主目的は,ac patch に採用された Software Suspend を試すことである.通常の手順にしたがって, kernel を再構築し,/boot/grub/menu.lst を以下のように編集した.

--- menu.lst.orig	Thu Apr 18 08:35:34 2002
+++ menu.lst	Sat May  4 00:42:21 2002
@@ -44,7 +44,7 @@
 ## ## Start Default Options ##
 ## default kernel options
 ## e.g. kopt=root=/dev/hda1 ro
-# kopt=root=/dev/hda3 ro acpi=on apm=off
+# kopt=root=/dev/hda3 ro acpi=on apm=off resume=/dev/hda1
 
 ## default grub root device
 ## e.g. groot=(hd0,0)

この後,以下のコマンドで software suspend が実行される.

# echo 4 > /proc/acpi/sleep

結果的には,うまく動かなかった.まず,suspend 自体は正常に動いているらしく, 上述のコマンド実行後,しばらくディスクアクセスが行われている形跡はある. その後,電源断は行われず,いきなり再起動が始まってしまう.再起動後, swap partition からのメモリ状況の回復は行われているらしく, OKey というメッセージが出力されるが,グラフィックアダプタの初期化が不十分なのか, ディスプレイの出力が回復しない.

ただし,これら全ての症状が software suspend patch の問題ではないと思う. 例えば,ディスプレイの出力が回復しない問題は, 仮想コンソールの移動時に X の描画が回復しない問題と同じではないかと思う. また,ac patch に採用されている ACPI ドライバは最新のものではないため, 電池残量を正常に取得できないなどの問題がある. ACPI ドライバと software suspend の双方が最新版になっている patch があれば都合が良いのだが.

仮想コンソールの移動時に X の描画が回復しない問題について, 「s30 で XFree86-4.1.0 を使う場合には,Section "Device" に以下の指定を加える必要がある」という記述を見掛けたので, 試してみた.しかし,私の環境では症状は改善されなかった.

Option "UseBIOS" "False"

とりあえず,ACPI ドライバを最新版(2002年4月4日版)に更新した.

5月7日

メールを namazu で全文検索できるようにしている. インデックスの作成は cron で定期的に行うようにしているので, インデックスの作成速度はこれまで気にしていなかったのだが, ある事情でインデックスを作り直さなければいけないことになり, ちょっと事情を調べてみることにした.

Tips の記述によれば,モジュールを利用するように設定すれば動作速度が向上するらしい. そこで,libtext-chasen-perl パッケージを導入し,以下のように /etc/namazu/mknmzrc を編集した.

--- mknmzrc	2002/05/06 15:30:16	1.1
+++ mknmzrc	2002/05/06 15:56:08	1.2
@@ -184,16 +184,19 @@
 # ChaSen 1.51 or later (simple wakatigaki)
 #
 # $CHASEN = "/usr/bin/chasen -j -F '\%m '";
+$CHASEN = "module_chasen -j -F '\%m '";
 
 #
 # ChaSen 1.51 or later (with noun words extraction)
 #
 # $CHASEN_NOUN = "/usr/bin/chasen -j -F '\%m %H\\n'";
+$CHASEN_NOUN = "module_chasen -j -F '\%m %H\\n'";
 
 #
 # Default Japanese processer: KAKASI or ChaSen.
 #
 # $WAKATI  = $KAKASI;
+$WAKATI = $CHASEN;
 
 
 #===================================================================

確かに,chasen の fork に係る時間が短縮され,感覚的には2倍程度速くなった気がする.

5月13日

ALSA の設定を行った.

  1. alsa-modules-2.4.18 をインストール.実際には, kernel を再構築した時に同時に作成したパッケージを用いた.
  2. alsaconf を実行して, Intel_i810/810E,i820,i830,i840,MX40 を選択.
  3. alsa-0.5 と alsa-0.9 でデバイス名が変更になっているので,以下のように編集.
    --- 0.9~	Mon May 13 22:41:26 2002
    +++ 0.9	Mon May 13 22:42:59 2002
    @@ -2,7 +2,7 @@
     # --- BEGIN: Generated by ALSACONF, do not edit. ---
     # --- ALSACONF verion 0.4.3b ---
     alias char-major-116 snd
    -alias snd-card-0 snd-card-intel8x0
    +alias snd-card-0 snd-intel8x0
     alias char-major-14 soundcore
     alias sound-slot-0 snd-card-0
     alias sound-service-0-0 snd-mixer-oss
    
  4. /etc/init.d/alsa start

サウンドの設定に限らず,PCI バスに接続されているデバイスの設定で分からないことがあれば, lspci コマンドが大変便利.lspci を実行すると, PCI バスに接続されているデバイスを調査・表示してくれるので, PC の諸元や規格表を調べる手間が省ける.

8月9日

ようやく,Software Suspend が使えるようになった. 「VAIO-U1 で Linux インストール/設定メモ」を参考にして, kernel-2.4.18 + acpi-20020726 + swsusp という組合わせを試してみたところ, 無事に以下のコマンドで software suspend できた.

# echo 4 > /proc/acpi/sleep

Software suspend は,通常の suspend とはかなり異なる原理で動いているので, 停止・起動後には system clock がおかしくなってしまう(少なくとも現時点では). そのため,再起動後には CMOS clock を参照して system clock を修正する必要がある. とりあえず,/etc/acpi/default.sh/etc/acpi/swsusp.sh を組み合わせて,sleep ボタンが押されると自動的に software suspend が実行されるように設定してみた.

大雑把な感じで言えば,software suspend は停止に15秒,起動に30秒ほど必要とする. 通常の停止・起動には45秒から60秒程度かかるので,若干高速化されたわけだが, 時間的な問題としてはあまり大差はないようだ.ただ,実行中の process を停止することなく suspend できるようになった点は非常に便利だと思う.

8月23日

全自動でネットワークを切り替える方法があるというのを,初めて知った.

12月5日

これまで sarge で使い続けていたのだが,sid に更新した. すると,libc の更新(2.2.5 -> 2.3.1)の影響を受けて Wnn6 のライセンスサーバー(dpkeyserv)が segmentation fault するようになってしまった.

strace で追ってみると,どうも /lib/ld-linux.so.2 を読み込もうとして落ちているらしい.しかし,このバイナリを ldd で調べると not a dynamic executable と表示されるので,どうにも事情が良く分からない.

しかしまあ,こういう原因ならば,何とかして古いライブラリを dpkeyserv に使わせることが出来れば解決しそうだと考えた.というわけで,

  1. woody の libc6 を配置した directory tree を作る.
    mkdir /usr/local/dpkey
    dpkey -x libc6_2.2.5-14.3_i386.deb /usr/local/dpkey
    mkdir /usr/local/dpkey/etc
    cp -p /etc/hosts /etc/host.conf /etc/nsswitch.conf /etc/passwd /etc/services /usr/local/dpkey/etc
    
  2. その tree に chroot してから dpkeyserv を動かす.
    mkdir -p /usr/local/dpkey/usr/local
    mv /usr/local/OMRONDp /usr/local/dpkey/usr/local
    chroot /usr/local/dpkey /usr/local/OMRONDp/Dplinux/dpkeyserv
    

これで何とか動くようになったようだ.

sarge の glibc が改善されたので,現在では, この対策は不要になっている(2004年3月11日追記).
1月30日

Linux-2.6 は power managment 周辺が混乱しているようだ. 解説記事(その1, その2)によれば, なんと3通りの実装があるらしい. 比較表を見て, よく考えよう.

3月11日

久しぶりに kernel を 2.4.24 + swsusp-2.0 に更新. なお,カーネルオプションの書式が変更になっているので注意が必要.

旧: resume=/dev/hda1
新: resume2=swap:/dev/hda1

メモリイメージが圧縮できるようになったとのことなので, ディスクの書き込み時間が節約されて,動作が速くなることを期待していた. しかし,実際に試したところでは, サスペンド・レジュームともに40秒程度かかっているので, 以前と大差ないか,かえって遅くなっているような気がする. ディスクの書き込みに要する時間よりも,圧縮に要する時間の方が効いているのだろう.

5月20日

おしまいの日が来た.

所属の変更にともない,このマシンも返却することになったので,Linux 領域を完全に抹消した.遊び半分に以下の手順を実行してみると, システムの入っていたパーティション(= /dev/hda3)も消去できた.

kill 諸々のプロセス
swapoff
shred -n 2 -z -v /dev/hda4 /dev/hda1 /dev/hda3

設定ファイル集


リンク集


[Top] / [Debian Tips] / [ThinkPad T42p,X31,X20,s30,560 / Portage SS3330]