最近 CentOS 6.5 というレガシーとも言えるディストリビューションのカーネル再ビルドの機会がありましたのでメモしておきます。
使用する srpm ファイル
kernel-2.6.32-431.1.2.0.1.el6.src.rpm を使用しました。
追加パッケージ
ソフトウェア開発用のパッケージは事前にインストールされているとして、そのほかに asciidoc と newt-devel が必要でした。これは CentOS6.5 の DVD イメージに入っているものをインストールすることで解消できました。
rpmbuild 前に準備すること
rpmbuild を実行すると署名用の鍵を生成しますが、実行PCの処理能力が低いのでスキップするようにします。
- $HOME/.rpmmacros の作成
以下の内容で用意します。
%_signature none
- rpmbuild/SPECS/kernel.spec の変更
(変更前)%define signmodules 1
(変更後)%define signmodules 0
rpmbuild 実行
rpmbuild/SPECS へディレクトリを移動したあと、以下のコマンドラインを実行します。
$ rpmbuild -bp kernel.spec --target=x86_64
処理が終わると以下のフォルダにカーネルソースが配置されています。
rpmbuild/BUILD/kernel-2.6.32-431.1.2.el6/linux-2.6.32-431.1.2.0.1.el6.x86_64
通常のkernel build手順でビルド
上記のカーネルソースが配置されているフォルダへ移動します。その後、以下の kernel build 手順でカーネルをインストールします。
- make menuconfig (.config は存在しています)
- make
- make modules
- (rootユーザで) make modules_install
- (rootユーザで) make install