[LHR]: Linux Kernel 再構築

<Home> → <LHR> → <[LHR]: Linux Kernel 再構築>

はじめに

Linux Kernel の再構築方法について纏めました。思いついたまま以下の 3 通りで説明しています。


Kernel パッケージの Install (松コース)

Red Hat Linux 9 による rpm を使用した Kernel の再構築(というより Update か?)を行いました。

今回は「http://www.ring.gr.jp/archives/linux/RedHat/redhat/linux/updates/9/en/os/i686/」にあった「kernel-2.4.20-20.9.i686.rpm」を使用しています。

# rpm -ivh kernel-2.4.20-20.9.i686.rpm
kernel-2.4.20-20.9.i686.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]

これだけです =)。grub も更新されていました。


kernel-source からの再構築 (竹コース)

Red Hat Linux 9 にて kernel-source パッケージを使用した Kernel の再構築を行いました。Red Hat Linux 9 カスタムガイドの [付録 A. カスタムカーネルの構築(レッドハット)] を参考しています。

0. Kernel 再構築の注意点

一筋縄では再構築は出来ませんでした。以下の点を注意してください。

1. kernel-source のパッケージ入手

今回は、現在最新である kernel-source-2.4.20-20.9.i386.rpm を入手しました。Red Hat の場合、Kernel source のパッケージは、SRPM 下にある「kernel-VERSION.src.rpm」と i386 下にある「kernel-source-VERSION.rpm」の2種類あります。「kernel-VERSION.src.rpm」は RPM を作成するためのパッケージなので再構築には向いていません。「kernel-source-VERSION.rpm」を入手してください。

パッケージ入手は RING Project を利用すると良いでしょう(http://www.ring.gr.jp/archives/linux/RedHat/redhat/linux/updates/9/en/os/i386/)。

2. パッケージのインストール

通常のパッケージのインストールと変わりません。RPM に関しては <[LHR]: package を管理する (rpm)> をどうぞ。

# rpm -ivh kernel-source-2.4.20-20.9.i386.rpm

3. Kernel 設定を変更します

[付録 A. カスタムカーネルの構築(レッドハット)] に従い、以下の作業を行います。

  1. Directry を「/usr/src/linux-2.4」へ移動します
    linux-2.4 のシンボリックリンクは RPM が更新してくれていました。親切。
  2. Kernel 環境の Clean up
    # make mrproper」を実行します。
  3. .config を ./configs から copy します
    無難な所で i386 用の .config を copy しました。「# cp ./configs/kernel-2.4.20-i386.config .config」を実行します。
  4. GUI base での Kernel 設定を行います
    # make xconfig」を実行します。
    設定を変更し終えたら「Save and Exit」ボタンを押して終了してください。

4. 依存関係を保ちます

# make dep」を実行します。

5. 前回の make 結果をクリアします

# make clean」を実行します。

6. Makefile の「EXTRAVERSION」パラメータを書き換えます

vi 等の editor にて Makefile を書き換えることを推奨しています。Kernel version の混在を避けるためとのこと。Makefile の先頭に以下の記述があります。この 4 行目にある「EXTRAVERSION」を書き換えます。

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -20.9custom

取り敢えず 「-20.9custom」を「-20.9cust1118」にしました。

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -20.9cust1118

(注) 私の環境では gcc v.3.x での Kernel 再構築は出来ませんでした。Makefile の「HOSTCC = gcc」→「HOSTCC = gcc296」に変更して解決しています。必要があれば修正してください。

7. Kernel を構築します

# make bzImage」を実行します。Kernel 構築にはしばらく時間が掛かります。気長に待ちましょう。

8. module 群を構築します

# make modules」を実行します。module 構築も時間が掛かります。

9. module 群を Install します

# make modules_install」を実行します。

10. Kernel を Install します

# make install」を実行します。私は grub を使用していますが「/boot/grub/grub.conf」には既に新しく作成した Kernel の設定が行われていました。一応、Reboot 前に確認しておいた方が良いでしょう。LILO を使用している場合、最後に「/sbin/lilo -v」にて結果を反映させる必要があるそうです。

これで出来上がった Kernel で起動する準備が整いました。

11. Reboot

問題が無ければ Boot 時の grub で新しい Kernel を選択することが出来るはずです。


Linux Kernel からの再構築 (梅コース)

Red Hat Linux 9 にて Linux Kernel (tar ball) を使用した Kernel の再構築を行いました。tar ball より Linux Kernel を展開して再構築を行う方法について記載しています。

1. Linux Kernel を入手します

[The Linux Kernel Archives] に最新の Linux Kernel 情報が随時更新されています。最新バージョンを確認しましたら [Ring Server Project] より Linux Kernel を入手します。もちろん本家からも Download が可能ですが、Core な開発者の為に本家の帯域は使用しないよう心掛けた方が良いと思います。

今回は 2.4.22 が最新でした。[http://www.ring.gr.jp/archives/linux/kernel.org/kernel/v2.4/] より 「linux-2.4.22.tar.bz2」 を入手しました。

2. Linux Kernel の patch を入手します

[The Linux Kernel Archives] に最新の Linux Kernel の他に patch 情報(最新 Kernel からのバグフィックス)も随時更新されています。通常、最新バージョンの Kernel であるならば patch が無いことは無いでしょう。

今回は 2.4.23-rc3 が最新のようでしたのでこれも入手します。[http://www.ring.gr.jp/archives/linux/kernel.org/kernel/v2.4/testing/] より「patch-2.4.23-rc3.bz2」を入手しました。

3. Linux Kernel を展開します

「linux-2.4.22.tar.bz2」を「/usr/src」上に展開します。current directry を /usr/src に移動し tar ファイルを展開しました。ついでに Kernel に対してのシンボリックリンクも更新しています。

# cd /usr/src
# tar jxvf /tmp/linux-2.4.22.tar.bz2
# ln -s linux-2.4.22 linux
# ln -s linux-2.4.22 linux-2.4

4. Linux Kernel に patch を当てます

current directry を /usr/src/linux に移動し patch を当てます。

# cd /usr/src/linux
# bzip2 -dc /tmp/patch-2.4.23-rc3.bz2 | patch -p1

5. 適切な .config ファイルを copy します

この作業は重要です。

Linux Distributor の用意している Linux Kernel の .config ファイルを copy します。.config ファイルは Distributor の用意している Kernel Source 内にあります。Red Hat Linux 9 で Source が無い場合には「kernel-source からの再構築 (竹コース)」の「1. kernel-source のパッケージ入手」を参考に入手してください。

今回は linux-2.4.20-20.9 の kernel-2.4.20-i686.config を copy しました。

# cp ../linux-2.4.20-20.9/configs/kernel-2.4.20-i686.config .config

6. Kernel 設定を変更します

parameter の差分を確認しながら .config ファイルを更新する場合には「make oldconfig」が便利です。Kernel の parameter を GUI で変更したい場合には「make xconfig」を実行します。

# make oldconfig
# make xconfig

7. その後の作業は、、、

「kernel-source からの再構築 (竹コース)」の「4. 依存関係を保ちます」と同じなので割愛します。


Resource

お勧め

参考情報


<Home> → <LHR> → <[LHR]: Linux Kernel 再構築>
Copyright (c) 2003 Makoto NARA(Mc.N), All rights reserved.
<Terms of Use>

Valid CSS! Valid HTML 4.01!