Linux Kernel の再構築方法について纏めました。思いついたまま以下の 3 通りで説明しています。
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 も更新されていました。
Red Hat Linux 9 にて kernel-source パッケージを使用した Kernel の再構築を行いました。Red Hat Linux 9 カスタムガイドの [付録 A. カスタムカーネルの構築(レッドハット)] を参考しています。
一筋縄では再構築は出来ませんでした。以下の点を注意してください。
今回は、現在最新である 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/)。
通常のパッケージのインストールと変わりません。RPM に関しては <[LHR]: package を管理する (rpm)> をどうぞ。
# rpm -ivh kernel-source-2.4.20-20.9.i386.rpm
[付録 A. カスタムカーネルの構築(レッドハット)] に従い、以下の作業を行います。
# make mrproper
」を実行します。
# make xconfig
」を実行します。「# make dep
」を実行します。
「# make clean
」を実行します。
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」に変更して解決しています。必要があれば修正してください。
「# make bzImage
」を実行します。Kernel 構築にはしばらく時間が掛かります。気長に待ちましょう。
「# make modules
」を実行します。module 構築も時間が掛かります。
「# make modules_install
」を実行します。
「# make install
」を実行します。私は grub を使用していますが「/boot/grub/grub.conf」には既に新しく作成した
Kernel の設定が行われていました。一応、Reboot 前に確認しておいた方が良いでしょう。LILO
を使用している場合、最後に「/sbin/lilo -v」にて結果を反映させる必要があるそうです。
これで出来上がった Kernel で起動する準備が整いました。
問題が無ければ Boot 時の grub で新しい Kernel を選択することが出来るはずです。
Red Hat Linux 9 にて Linux Kernel (tar ball) を使用した Kernel の再構築を行いました。tar ball より 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」 を入手しました。
[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」を入手しました。
「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
current directry を /usr/src/linux に移動し patch を当てます。
# cd /usr/src/linux
# bzip2 -dc /tmp/patch-2.4.23-rc3.bz2 | patch -p1
この作業は重要です。
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
parameter の差分を確認しながら .config ファイルを更新する場合には「make oldconfig」が便利です。Kernel の parameter を GUI で変更したい場合には「make xconfig」を実行します。
# make oldconfig
# make xconfig
「kernel-source からの再構築 (竹コース)」の「4. 依存関係を保ちます」と同じなので割愛します。
<Home> → <LHR> → <[LHR]: Linux Kernel 再構築>
Copyright (c) 2003 Makoto NARA(Mc.N), All rights reserved.
<Terms of Use>