カーネルの再構築をする
First Edition 2001.5.10

カーネルの再構築をします。Vine2.1.5のカーネルはなるべく再構築などはやらなくて良くなっています。
ここでは、カーネルを再構築のお勉強の意味で行います。

  1. カーネルの再構築とは?(対象:2.1.5)(2001.5.10)
  2. 準備(2001.5.10)
  3. カーネルのコンフィグ(対象:2.1.5)(2001.5.10)
  4. カーネルのコンパイル(対象:2.1.5)(2001.5.10)
  5. モジュールのコンパイル(対象:2.1.5)(2001.5.10)
  6. 作成したカーネルを起動できるようにする(liloの設定)(対象:2.1.5)(2001.5.10)

カーネルの再構築とは?

カーネルとは、ソフトウェアとハードウェアの掛け橋をしている部分です。Linuxの核の部分で オリジナルのコードでかかれています。再構築とは、カーネルのオプションを設定しなおしてコンパイルし、 新たなカーネルファイルを作ることをいいます。インストールされたカーネルオプション設定は、 デストリビューションによってさまざまです。
したがって、あるデバイス、プログラムを使うのにカーネルがそのように設定されていない場合、 再構築をする必要があります。
例えば、CD-Rドライブを使う、DVD-RAMを使うなどがあげられます。

準備

カーネルの再構築をするには、カーネルのソースファイルが必要です。以下のコマンドにより、必要なファイルが インストールされているかどうかを確認しましょう。

$ rpm -q kernel-headers
kernel-headers-2.2.18-0vl4.2
$ rpm -q kernel-source
kernel-source-2.2.18-0vl4.2
カーネルのヘッダーファイルを確認します
2.2.18-0vl4.2がインストールされています
カーネルのソースファイルを確認します
2.2.18-0vl4.2がインストールされています

インストールされていなければ、インストールしましょう。Vine2.1のCDのソースファイルがある場所へ移動します。
# rpm -ivh kernel-headers-2.2.18-0vl4.2.rpm
# rpm -ivh kernel-source-2.2.18-0vl4.2.rpm

カーネルのコンフィグ

カーネルを再構築するには、あらかじめ自分でコンフィグしなくてはいけません。ルートになって作業します。

# cd /usr/src/linux
# make mrproper
# make xconfig
ソースディレクトリへ移動します
不要なファイルなどを削除します
コンフィグツールを起動します。xconfigを起動します

カーネルをコンフィグするやりかたは、3つあります。

make config
コンフィグに一つ一つ、順番にすべて答えなくてはいけません。カーネルの設定項目が多くなった今 となっては、実用的ではありません。

make menuconfig
CUIのツールで、メニュー形式になっています。

make xconfig
tcl、tkがインストールされていれば、GUIツールが使えます。一番使いやすいと思います。

これらのツールをどれか使って、カーネルコンフィグを行ないます。コンフィグをセーブして終了します。

カーネルのコンパイル

それではカーネルをコンパイルしましょう。

# make dep
# make clean
# make bzImage
カーネルコンフィグの依存関係を構築します
不要なファイルを削除します
カーネル本体を構築します

カーネル本体を構築し、格納する方法は3つあります

bzdisk
フロッピーディスクにカーネルを格納します。このフロッピーで新しいカーネルをブートし、 テストすることができます。しかし、ちょっとした制約が出てしまいますので、起動することの 確認くらいしか使うことはないでしょう。

bzlilo
ファイルシステムのルート( / )にカーネルを作ります。RedHat系のデストリビューションでは、あまり使いません。

bzImage
カーネルイメージを/usr/src/linux/arch/i386/bootに作成します。これを使うのがいいでしょう。

エラーがでたら、そこで止まります。うまくいくと以下の表示で終了します。
[省略]
tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage Root device is (3, 3) Boot sector 512 bytes. Setup is 3540 bytes. System is 779 kB make[1]: Leaving directory `/usr/src/linux-2.2.18/arch/i386/boot'
うまくいかなかったら
too largeというメッセージが出る
カーネル本体を構築する際に、"bzImage"というように、先頭に"b"を付けます。 bを付けないと、カーネルサイズが大きくなってしまいます。
これでも出てしまう場合は、カーネルコンフィグにおいて、モジュール化できるものは 極力モジュール化しましょう。

モジュールのコンパイル

カーネルのコンフィグにおいて、モジュール化したもののコンパイルを行ないます。
# make modules ; make modules_install
これだけです。

作成したカーネルを起動できるようにする(liloの設定)

前節で作成したカーネルを、/bootにコピーします。
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.18-0vl4.2-test
これは作成されたカーネル、/usr/src/linux/arch/i286/boot/bzImageを/boot/vmlinuz-2.2.18-0vl4.2-testという 名前でコピーすることを示します。自分で識別できる名前でコピーしてください。ここでは、"-test"を後ろに付けました。

次に、作成したカーネルを起動できるようにします。ハードディスクのMBR、Linuxのルートパーティーション のどちらかにliloをインストールしていると思います。liloの設定ファイルである、/etc/lilo.confを編集します。

/etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
append="apm=on"
default=linux

image=/boot/vmlinuz-2.2.18-0vl4.2
   label=linux
   initrd=/boot/initrd-2.2.18-0vl4.2.img
   read-only
   root=/dev/hda3
image=/boot/vmlinuz-2.2.18-0vl4.2-test
   label=test
   read-only
   root=/dev/hda3













新しく作ったカーネルを指定します
ラベルを指定します
決まり事としてかきます
ルートパーティーションを指定します

以上のように、liloの設定ファイルを編集したあと、スーパーユーザーで次のコマンドを実行します。
# /sbin/lilo
あとは、再起動して、LILO:とプロンプトが出たら、新しく設定したラベルを打ち込みます。
上記では、testとしました。新しくカーネルを起動したら、"uname -r" と入力してバージョンを確認してみましょう。


[HOME]
since 2001.4.22