1.はじめに RHEL3までは、
カーネルの
ソースコードはインストールCD(or DVD)にrpmパッケージとして収録されていたが、
RHEL4以降ではSRPMパッケージのみの提供に変更されている。
ここでは、SRPMパッケージの入手から、
カーネルソースコードの生成までの手順をまとめる。
| ※SRPMパッケージとは | |
| rpmパッケージの生成元になるパッケージ。ソースコードなどのパッケージを構成する各種ファイルとrpmパッケージを生成する)
|
2.手順(1)SRPMパッケージの入手
RHELのSRPMは以下の場所から入手可能である。
(a)RHN(redhat network)からの入手
→
RHEL購入者専用のサポートページ
(b)ftpサイトからの入手
→redhat社のpublicなftpサイト
(
http://ftp.redhat.com/ or
ftp://ftp.redhat.com/)
各製品の初期出荷版(GA:General Availability)
・
RHEL3: ・
RHEL4: 各製品のupdate版
・
RHEL3: ・
RHEL4: ※各updateと
カーネルのバージョンの関連確認は下記サイトが便利。
HP社 ディストリビューション対応表 例えば、
RHEL4update4(
kernel2.6.9-42.EL)であれば下記SRPMをダウンロード
kernel-2.6.9-42.EL.src.rpm(2)SRPMパッケージのインストール
ダウンロードしたSRPMをインストールする。
例えば、/tmpにダウンロードした
kernel-2.6.9-42.EL.src.rpmをインストールする場合は、
#cd /tmp # rpm -ivh ./kernel-2.6.9-42.EL.src.rpm |
srpmパッケージのデータは、下記場所に格納される。
/usr/src/redhat/ ├/SOURCES ・・・ソースコード&ソースの差分パッチ │ →ディレクトリ直下に多量のファイルが生成 └/SPECS ・・・RPMとSRPMの生成手順ファイル →kernel-2.6.specファイルが生成
|
(3)SRPMからの
ソースコード生成
通常のSRPMであれば、"# rpmbuild -bp
"のみでソースコードの生成が完了する。しかしRHELのカーネルのソースコードは、バージョンを規定する、version.hが初期状態では生成されておらず、カーネルをコンパイルするときにmakeファイル内で生成するような構成を最小している。したがって、完全なカーネルソースコードを生成するためには少々コツがいる。
| (a) その1:横着にやる方法 |
| | SRPMからバイナリーを生成してしまい、その過程でversion.hなどを生成してしまう。 ソースコードを生成するだけであれば、bzImageのmakeが開始された時点で強制終了してしまっても可。# cd /usr/src/redhat/SPECS # rpmbuild -bc --target=i686 kernel-2.6.spec |
# ソースコードは、/usr/src/redhat/BUILD以下に格納。
|
| (b) その2:丁寧にやる方法 |
| | SRPMからソースコードを生成する。その後手動で、version.hなどの生成を行う。(でもkernelをbuildする(a)が確実と思われる。) (i)ソースコードの展開とパッチの適用
# cd /usr/src/redhat/SPECS # rpmbuild -bp --target=i686 kernel-2.6.spec |
(ii)バージョン情報を設定し必要なファイルを生成する
# cd ../BUILD/kernel-2.6.9/linux-2.6.9/ # perl -p -i -e 's/^EXTRAVERSION.*/EXTRAVERSION = -42.EL/' Makefile # make -s mrproper # cp ./configs/kernel-2.6.9-i686.config ./.config # make -s nonint_oldconfig # make -s include/linux/version.h # make bzImage ※事前処理が終わりコンパイルが始まったら強制終了。 |
|
3.完了