fslashtの日記: linuxファイルサーバー化計画(6) Kernel-2.4.19 4
Kernel-2.4.19ならPromiseULTRA133TX2がちゃんと動くらしいのでおもいきってカーネルをアップデートすることにしました。
○ 参考サイト
Red Hat Linux7.1 カーネル再構築
The Linux Kernel Archives
○ 手順メモ
cp ../linux-2.4.18ft/.config . 旧カーネルの設定をコピー
make oldconfig 新カーネルで追加された項目を設定
make dep
make clean
make bzImage カーネルコンパイル
make modules モジュールコンパイル
make modules_install モジュールインストール
depmod -a モジュールの生成状態をチェック
make install カーネルインストール
最初、SMPの設定をOFFしたら、mpparse.cのコンパイル時にgccが
mpparse.c:41: Internal error: Segmentation fault
といって死んでしまいました。コンパイラが死ぬなよ
uniprocessor APICをOFFの設定にしたらコンパイルとおりました。
インストール完了したら再起動。
やったー。今度はPromiseULTRA133TX2についないだ全ドライブがちゃんと認識しました。
でも、今度はNetworkが認識しません。うがー。(IntelEtherExpressPro)
APICがOFFだからいけないのかなあ。
SMPをyesにして、APICをONにしたらコンパイルはとおりました。
再起動すると・・・
サービスを起動する段階まで行って途中で止まってしまいます。
どうやら、networkをスタートするところで止まっているようです。
以前別のマシンで同じような症状になって、そのときはしかたなく再インストールしました。
とりあえずkernelを元にもどそうと、knoppixで起動してliloの設定を変えました(非常時にはKnoppix、えらい便利ですね)。
kernelは古いバージョンに戻せたのですが、やはり同じ場所で止まってしまいます。
おそらくmoduleが更新されてしまっているので、それが原因のようです。困った困った
カーネルの不具合対策 (スコア:1)
はっきり根拠があるわけじゃありませんが、インストールの様子から想像するとコンパイラのバージョンが悪そうにも見えます。変なところで落ちてますからね。それに私の印象だと、EtherExpressのドライバはとっても安定していて問題が起きたことがないもんで。
Re:カーネルの不具合対策 (スコア:1)
EtherExpressが確かに安心らしいですね。これのドライバがカーネル設定の一覧になかったのでさすがにおかしいと思いました。
今回は、.config 作り直したら問題なくコンパイルできましたが、状況によってコンパイラが落ちるのは困りものです。
いま使っているのは gcc-3.0.1-30 です。また問題がおきるようならコンパイラのバージョンをあげてみようと思います。
Re:カーネルの不具合対策 (スコア:1)
linux kernelで正式に推奨しているgccは、今でも 2.95.3 です。そのうち 3.2 あたりにホップしそうですが...
私個人では今はカーネルを含めていろいろなものを 3.2 でコンパイルしていて、問題が起きたことはないです。3.0.0 から 3.0.3 あたりまでは、カーネルについてはあまり定かではないですが通常のアプリケーションのコンパイルではしょっちゅうはまっていたような記憶があります。
あと、EtherExpressのデバイスドライバは、linux kernel 2.4.20-pre10 あたり(たぶん..)から新ドライバ(e100)と旧ドライバ(eepro100)が混在するようになっています。2.4.20以降に乗り換える時は、.configのEtherExpressまわりをちゃんと設定しなおした方がいいでしょうね。
# 新ドライバ使ってますが、どうやら普通に使えるみたいですよ
Re:カーネルの不具合対策 (スコア:1)
Dcumentarion/Changelog みたらたしかに2.95.xじゃないとだめだと書いてありました。
次回コンパイルするときには、3.2にアップデートすることにします。