パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

SDB25CF に Linux をインストール(8) Badram Patch

世の中には、調べてみれば何かしら解決策があるものだ。メモリの一部がいってしまったノートPCだが、救う道があったのだ。Linuxカーネルにパッチを当てて、エラーのある部分を使わないように除外することができるという。Linux 万歳である。

とはいうものの、きちんと動くようになるまでには数日を費やしてしまった。何しろ、カーネルの再構築は始めての経験だったし。何度、カーネルコンパイルを繰り返したことか。とりあえず、デスクトップPCにも CentOS を入れて、そちらでコンパイルしたので時間的にはまだましだとは思うが、デスクトップPCでは動くカーネルも古いノートPCでは起動さえさえしないことが多々。

とりあえずメモ。
・ まずは、カーネルのソースを取ってくるべし
・ BadRam のパッチをとってきて当てる
・ make menuconfig の後に、Makefile 内の EXTRAVERSION を設定しておこう
・ make; make modules; make modules_install; make install でできあがるはず
・ /boot/grub/grub.conf に BadRam の設定をする 2.6.18 のパッチのは アドレスとマスクのセットで指定するらしい。今回設定したのは、badram=0x00d40000,0xfffe0000 で 128KBytes を排除。
・ 別のPCでコンパイルした場合は、/boot 以下の vmlinuz-2.6.18-何か と initrd-2.6.18-何か.img とSystem.map-2.6.18-何か をコピー。/lib/modules/2.6.18-何か 以下もごっそりコピーする。更に、TargetPC で mkinitrd した方が良さそう。もちろん、grub.conf にも新しいカーネルを登録する。

無事、gnome のデスクトップ環境も起動することができた。X11 がまともに起動しなかったのは、やっぱりメモリーエラーのせいだったようだ。ただし、1024x768 の液晶だが、800x600 でしか表示できない。Trident のチップは認識されているのだが..

まだきちんと確認したわけではないが、ノートPCでまったくカーネルが起動できなくなった原因と思われる make menuconfig の設定。
カーネルを 0x10000000 に置くというオプション。192MBytes しかメモリのない PC でどうするねんという感じ。とりあえず 0x01000000 に変更してみた。BadRam の領域より後ろがいいかなと。
・CPU の種類の設定。coppermineceleron 400MHz だと思っていたのだが、今のところはデフォルトの PentiumPro でしか実績なし。pre-coppermine でも駄目そう

エラーの出た RAM は更なるエラーが出やすいような気がするのが、ちょっと心配事。しばらく様子を見てみよう。