CentOSのカーネルの再構築をしてみる
追記:Ubuntu(Debian系)のカーネル再構築は「Ubuntuのカーネル再構築」を参照。
Linuxのカーネルの再構築はしたことがなかったのでやってみた。
主に参考にしたWebページは、「CentOS 5 カーネルの再構築方法」と「How To Compile A Kernel - The CentOS Way」。
2〜3回やってみると結構簡単な作業である。要約すると次のようになる。
それぞのステップは大体1つか2つのコマンドで実行できるので、作業としては単純である。
環境の整備(開発環境パッケージなどの追加)
「ソフトウェアの追加と削除」などを使って開発環境を整える。必要なのは、「開発ツール」「開発ライブラリ」と「kernel-devel」「kernel-headers」。
ソースコード・パッケージのダウンロード
ディストリビューションによって方法は異なるようである。Fedoraであれば、yum-utilsの中のyumdownloadを使ってrpmパッケージをダウンロードできる。
CentOSの場合はCentOSのミラーサイトなどからftpコマンドかブラウザで直接ダウンロードしてくる。私の場合は、
http://ftp.riken.jp/Linux/centos/5.0/updates/SRPMS/
ソースコードの展開
必要なコマンドは2つ。先ずはパッケージを展開する。
# rpm -ivh kernel-2.6.18-8.1.8.el5.src.rpm
(ユーザIDがないとう警告が出るが問題はない。自動的にrootで展開される。)
このコマンドを実行すると /usr/src/redhat の下にソースコードを再構成するためのキットが展開されるので、次にソースコードを再構成する。
# cd /usr/src/redhat/SPECS # rpmbuild -bp --target x86_64 kernel-2.6.spec
rpmbuild は /usr/src/redhat/SOURCES の下にあるtar形式(bzip2圧縮されている)のソースを /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 に展開し、更に /usr/src/redhat/SOURCES の下にあるパッチを当てて最新の状態する。
これから作るカーネルを今動いているカーネルと区別するために名前を変えておく。
# cd usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 # vi Makefile EXTRAVERSION = -8.1.8.el5-x1
次に、展開されたソースコードを初期化する。
# make clean && make mrproper
カーネルの構成設定ファイル(.config)の作成
これから作るカーネルのパラメータを設定ための構成設定ファイル作る。雛形として/boot/config-2.6.18-8.1.8.el5 (現在起動しているカーネルの構成設定ファイル)をコピーして、その内容を反映する。
# cp /boot/config-2.6.18-8.1.8.el5 .config # make oldconfig
次に構成設定ファイルに変更を加えるが、メニュー形式で設定を変更する。
# make menuconfig
make
# make