Last Updated at $Date: 2005/05/25 00:03:07 $.
作業開始.とりあえず, プレインストールされている Windows を起動して必要な諸元を確認する.
昨日は忙しくて,結局 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 を使って切り抜けた.
# dpkg --get-selections > file
ただし,# 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
xserver-xfree86 パッケージの設定に失敗したため,
	  X が正常に起動しなかった.以下のコマンドで再設定する.
チップセットのメーカとして,Silicon Motion を選択する必要がある. それから,Control + Alt + F1 などで他の仮想コンソールに一度移動してしまうと, X の画面に戻ることが出来ない.# dpkg-reconfigure xserver-xfree86
# dpkg-reconfigure locales
# adduser foo dialout # adduser foo audio # adduser foo src
.config
	  を参考にして,ACPI を有効にした kernel を作ってみるが,状況に変化なし.
      以下の設定・調査を予定.
/etc/hosts の編集
      /etc/printcap の編集
      Woody 用の USB 対応インストールフロッピーは, 武藤さんによって作成 されているようです(2004年3月14日追記).
     ACPI の調査を始める.ACPI 関係を全て組み込んだカーネル(2.4.18)を作成し,
     acpid をインストールすると,以下のような状況になった.
     
知り合いの人は「Kondara は suspend も出来てるよ」と言っていたので,Linux で ACPI も使えるようになったのだと安心していたのだが….さて,どうするべきだろう?
とにかく,suspend なり sleep なりが出来ないと持ち運び用マシンとしては致命的なので, Kondara のカーネルソース(1,2)を拾ってきて再構築してみる. 症状はさして改善された様子がないですね…,うーん.
仕方がないので,更に少し調べてみる.
echo 1 > /proc/acpi/sleep
	  というコマンドで sleep mode へ移行できるはず…らしいが,
	  画面が真っ白になっただけで,しかも元に戻ることができなかった.
	  真っ白になった状態で,Fn キーを押すと shutdown されてしまう.
      echo 3 > /proc/acpi/sleep
	  としてみると,STR になったようだが,復活できず.
      echo 4 > /proc/acpi/sleep
	  では,kernel がお亡くなりになった.
	  きっと,該当するディスク領域が存在しなかったからだろう.
     というわけで,まだ Linux では全然動かない,ということなのでは? という気がしてきた…. うーん,これからどういう風に使うか,かなり悩んでしまう. こまめに電源を切るしかないのかなあ.
ext3 の設定を行う.最初に,kernel を再構築して ext3 FS を有効にしておく.
# tune2fs -j /dev/hda3 # tune2fs -j /dev/hda4 # perl -pi -e 's/ext2/ext3/;' /etc/fstab
ACPI4Linux で配布されている最新のパッチ(2002年3月8日版)を適用して kernel を再構築したところ,とりあえずバッテリーの状態は見えるようになった.
cat /proc/acpi/battery/BAT1/state
     ただ,wmacpi によるバッテリーの残量表示はまだ出来ない.
     同時に,電源スイッチによる shutdown が出来なくなってしまった.
     acpid の設定を見直す必要がある?
     
s30 の PCMCIA は,従来の pcmcia-cs 付属のモジュールでは扱えないようだ.
     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 が実行されてしまっているような気がする.
     
     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日版)に更新した.
メールを 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倍程度速くなった気がする.
ALSA の設定を行った.
alsaconf を実行して,
	  Intel_i810/810E,i820,i830,i840,MX40 を選択.
      --- 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
/etc/init.d/alsa start
     
     サウンドの設定に限らず,PCI バスに接続されているデバイスの設定で分からないことがあれば,
     lspci コマンドが大変便利.lspci を実行すると,
     PCI バスに接続されているデバイスを調査・表示してくれるので,
     PC の諸元や規格表を調べる手間が省ける.
     
ようやく,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 できるようになった点は非常に便利だと思う.
全自動でネットワークを切り替える方法があるというのを,初めて知った.
これまで 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 に使わせることが出来れば解決しそうだと考えた.というわけで,
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
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日追記).
Linux-2.6 は power managment 周辺が混乱しているようだ. 解説記事(その1, その2)によれば, なんと3通りの実装があるらしい. 比較表を見て, よく考えよう.
久しぶりに kernel を 2.4.24 + swsusp-2.0 に更新. なお,カーネルオプションの書式が変更になっているので注意が必要.
旧: resume=/dev/hda1 新: resume2=swap:/dev/hda1
メモリイメージが圧縮できるようになったとのことなので, ディスクの書き込み時間が節約されて,動作が速くなることを期待していた. しかし,実際に試したところでは, サスペンド・レジュームともに40秒程度かかっているので, 以前と大差ないか,かえって遅くなっているような気がする. ディスクの書き込みに要する時間よりも,圧縮に要する時間の方が効いているのだろう.
おしまいの日が来た.
      所属の変更にともない,このマシンも返却することになったので,Linux 
      領域を完全に抹消した.遊び半分に以下の手順を実行してみると,
      システムの入っていたパーティション(= /dev/hda3)も消去できた.
     
kill 諸々のプロセス swapoff shred -n 2 -z -v /dev/hda4 /dev/hda1 /dev/hda3
/boot/
     config-2.4.24
	  (support software suspend 2.0)
      config-2.4.19-acpi20020918
	  (support software suspend)
      config-2.4.18-acpi20020726
	  (support software suspend)
      config-2.4.18-acpi20020503
      config-2.4.18-acpi20020404
      config-2.4.18
     /etc/
     X11/
	  XF86Config-4 for XFree86-4.1.0
	   Xmodmap
	   Xsession.d/40custom_load-xmodmap
	  acpi/
	  
      modules
     [Top] / [Debian Tips] / [ThinkPad T42p,X31,X20,s30,560 / Portage SS3330]