エンタープライズ:特集 2003/01/28 09:44:00 更新

Linuxでハイパー・スレッディング――Pentium4/3.06GHzで遊ぼう
第2回 泥沼のRedHatカーネルデバッギング (2/5)

 カーネルの再構築の手順自体は、前回も説明した通りココに記載がある。簡単にまとめると

  1. kernel-sourceパッケージをインストールする。もしまだインストールしていないならば、RedHat Linux 8.0のCD-ROM2枚目の「/RedHar/RMPS/kernel-source-2.4.18-14.i386.rpm」をインストールしておくこと
  2. 「/usr/src/linux-2.4.18-14」に移動する
  3. デフォルトの設定ファイルをコピーする。今回の場合はSMPベースになるから、「/usr/src/linux-2.4.18-14/configs/kernel-2.4.18-i686-smp.config」を、「/usr/src/linux-2.4.18-14/.config」にcpしておく
  4. 本当ならここでmake menuconfigなりmake xconfigなりで細かな設定をすべきなのだが、まぁとりあえずカーネルを作れることの確認なので、今回はいじらない
  5. 「make dep;make clean」をかけ、モジュール関連性の設定とオブジェクトのクリーンナップをかける
  6. 「make bzImage」行い、カーネルをビルドする
  7. 「make modules」を行い、モジュールを作成する
  8. 「make modules_install」を実行し、作成したモジュールをインストールする
  9. 「make install」を実行し、カーネルのインストールと、新規initrdイメージの生成を行う
  10. 「lilo.conf」を書き換え、「lilo -v」なり「lilo -C /etc/lilo.conf」なりでブートローダーを再登録する
  11. 再起動する

という具合になる。

 さてこの手順、最後まで無事たどり着けた方はいらっしゃるだろうか?実はちょっと落とし穴がある。インストールの際に日本語環境を指定していると、6の段階でコンパイルエラーがぱかすか出現し、まともにカーネルを作るどころの騒ぎではない。これを回避するにはデフォルトのロケールを変更すればよいのだが、とりあえず簡単にしのぐためには、4の手前で

LANG=;export LANG

というコマンドを1回実行すればOKである(ただしこれを行うと言語設定が未設定になり、デフォルトで英語環境が使われるようになる)。

 が、実はこれをやってもまだ、6は通っても7が通らないのである。7でredefineエラーだのWarningだのが出まくってしまい、モジュール生成どころの話ではない。そこで4に戻り、あれこれconfigオプションを設定しなおすのだが、まったく(7)まで進まない。運よく7が通っても8でコケてくれるといった具合で、「本当にRedHatはこのconfigファイルでカーネル作ったのか??」という気分にさせてくれる。

 そこで一応RedHatから最新パッチをあれこれ当ててみるのだが、事態は一向に改善されず、というかむしろ悪くなってしまった。なにせ6すら通らない状況に陥ってしまうなど、「手前ぇいい加減にしやがれ」という、暗澹たる気分にしてくれる。「ほかの人はカーネル再構築どうしてるんだろう?」と思い、あちこち検索していたところ、発見したのがととぼんさんのページの「カーネル再構築」。「そうか、やっぱりみんなカーネル再構築できないんだなぁ」と、ちょっと安心。そうか、gcc 3.2の互換性の問題だったのかな?まぁとにかくこれで、2.4.18-14で苦闘するのをあきらめる決意があっさりついた。

前のページ | 1 2 3 4 5 | 次のページ

[大原雄介,ITmedia]