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.完了