エンタープライズ:特集 | 2003/01/28 09:44:00 更新 |
Linuxでハイパー・スレッディング――Pentium4/3.06GHzで遊ぼう
第2回 泥沼のRedHatカーネルデバッギング (2/5)
カーネルの再構築の手順自体は、前回も説明した通りココに記載がある。簡単にまとめると
- kernel-sourceパッケージをインストールする。もしまだインストールしていないならば、RedHat Linux 8.0のCD-ROM2枚目の「/RedHar/RMPS/kernel-source-2.4.18-14.i386.rpm」をインストールしておくこと
- 「/usr/src/linux-2.4.18-14」に移動する
- デフォルトの設定ファイルをコピーする。今回の場合は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しておく
- 本当ならここでmake menuconfigなりmake xconfigなりで細かな設定をすべきなのだが、まぁとりあえずカーネルを作れることの確認なので、今回はいじらない
- 「make dep;make clean」をかけ、モジュール関連性の設定とオブジェクトのクリーンナップをかける
- 「make bzImage」行い、カーネルをビルドする
- 「make modules」を行い、モジュールを作成する
- 「make modules_install」を実行し、作成したモジュールをインストールする
- 「make install」を実行し、カーネルのインストールと、新規initrdイメージの生成を行う
- 「lilo.conf」を書き換え、「lilo -v」なり「lilo -C /etc/lilo.conf」なりでブートローダーを再登録する
- 再起動する
という具合になる。
さてこの手順、最後まで無事たどり着けた方はいらっしゃるだろうか?実はちょっと落とし穴がある。インストールの際に日本語環境を指定していると、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で苦闘するのをあきらめる決意があっさりついた。
[大原雄介,ITmedia]