Red Hat Linux 8.0への2.4.19以降の組み込み

1.はじめに

Red Hat Linux 7.2, 7.3, 8.0では、カーネルのブートローダにGRUBが標準で採用されるようになりました。ext3ファイルシステムが使われる環境では、ブート時にext3ファイルシステムのマウントに必要なinitrdイメージの指定も欠かせません。アプリケーション・プログラマやシステム・インテグレータにとってGRUB は、以前のLILOより使い易く、メリットも多いのですが、デバイスドライバの開発等で頻繁にカーネルを入れ替える作業では、わざわざブートローダをLILOに変える場合もあり、なじみが無いかも知れません。

ここではGRUB と initrdを使ってブートする環境に、新しくkernel.orgからダウンロードしたカーネルを組み込む方法を紹介します。

2.新カーネルのダウンロードとコンパイル、コピー

kernel.orgから一般的な方法を用いて、組み込むためのカーネルをダウンロードし、カーネルをコンパイル、リンクして作成します。
以下は、kernel-2.4.19を/usr/src/linux-2.4.19に展開した場合の操作例です。

# cd /usr/src/linux-2.4.19
# make mrproper
# make ?config # menuconfig, xconfig等好きなCONFIG作成方法でconfigファイルを読み込んで設定します
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
# cp -p System.map /boot/System.map-2.4.19
# cp -p arch/i386/bzImage /boot/vmlinuz-2.4.19
# mkinitrd initrd-2.4.19.img 2.4.19 # initrd imageの作成
# cd /boot/grub
# emacs grub.conf

3.grub.confファイルの編集

# cd /boot/grub
# vi grub.conf
<==== 編集内容の一部、ここから:2.4.19のtitle行以下を追加します。(以下の4行目から7行目) ===>
default=0
timeout=10
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.19) from kernel.org
 root (hd0,1)
 kernel /boot/vmlinuz-2.4.19 ro root=LABEL=/
 initrd /boot/initrd-2.4.19.img

title Red Hat Linux (2.4.18-14)
 root (hd0,1)
 kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
 initrd /boot/initrd-2.4.18-14.img
<====編集内容の一部は、ここまで====>

※ファイルの編集が終った後は、何もせずに(LILOのようにliloコマンドを実行する必要無しに)ブート可能です。
GRUBのしくみやgrub.confの記述に関して興味があれば、Google等で検索して下さい。

4.ポイント

日本語Red Hat Linux 8.0 では、付属のコンパイラのgcc-3.2が賢くなりすぎて、あらゆるメッセージを日本語で出力します。その結果、カーネルコンパイル時にはgccに対して期待している「install」の文字列を出力しないので、カーネルコンパイルでいきなりエラーとなります。理由がわかればいろいろな対策ができると思いますが、例えばShellでコンパイルする前に。
# LANG=
という環境変数LANGをクリアするコマンドで、このエラーは回避する事ができます。
この回避策は、日本語Red Hat Linux 8.0プレインストールカーネルの2.4.18-14をコンパイルする場合にも必要です。

Last editted on 24/8/2004
Copyright(c) 2003, 2004, Device Drivers Limited 戻る→