最新のLinuxカーネルで構築し直すんじゃなくて、今動いているシステムのカーネルソースいじって遊ぶぜ的な人向けの手順です。
バージョンによって前提パッケージが違ったり、ソースをダウンロードしてくるところが違ったり面倒だったので、なるべく汎用性ありそうな書き方で。
まずOS自体を最新バージョンにアップデート。
# yum update # reboot
私がやったとき(2014/04/29)の最新バージョンは2.6.32-431.11.2です。64ビット版です。
続いて開発環境をインストール。これは他サイトからの受け売り。
# yum groupinstall "Development tools"
で、次にその他の前提パッケージのインストール、ってのがありがちな書き方ですが、その前にソースをダウンロードして、インストールを試みます。ソースの置き場所もその時々で違ったりするので、CentOSのサイトで確認するといいんじゃないかと思います。
2014/04/29時点では、トップ→Get CentOS Linux Now→Need the Source?
とたどって、ソース置き場からとってきました。これを一般ユーザでインストールします。
$ wget http://vault.centos.org/6.5/updates/Source/SPackages/kernel-2.6.32-431.11.2.el6.src.rpm $ rpm -ivh kernel-2.6.32-431.11.2.el6.src.rpm
で、rpmbuildを動かすと必要な前提パッケージを教えてくれます。 これがバージョンによって違ったりするようなので、違うバージョンの手順を真似るよりはrpmbuildに聞いた方が確実なんじゃないかと。
$ cd ~/rpmbuild/SPECS $ rpmbuild -bp kernel.spec --target=x86_64 ビルド対象プラットフォーム: x86_64 ターゲット x86_64 用にビルド中 エラー: ビルド依存性の失敗: xmlto は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています asciidoc は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています elfutils-libelf-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています elfutils-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています zlib-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています binutils-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています newt-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています python-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています audit-libs-devel は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています perl(ExtUtils::Embed) は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています hmaccalc は kernel-2.6.32-431.11.2.el6.x86_64 に必要とされています
で、これらをインストールします。perl(ExtUtils::Embed)はさすがにクォーテーションで囲まないとエラーになると思います。
# yum install xmlto asciidoc elfutils-libelf-devel elfutils-devel zlib-devel binutils-devel newt-devel python-devel audit-libs-devel "perl(ExtUtils::Embed)" hmaccalc
この後もう一回rpmbuild実行、~/rpmbuild/BUILDの該当バージョンというか、できてるディレクトリの下に行ってmake、インストールします。
$ rpmbuild -bp kernel.spec --target=x86_64 $ cd ~/rpmbuild/BUILD/kernel-2.6.32-431.11.2.el6/linux-2.6.32-431.11.2.el6.x86_64 $ vi Makefile EXTRAVERSION = -selinux $ make # make modules_install # make install # reboot
ここではMakefileのEXTRAVERSIONを-selinuxにしています(個人的にSELinuxまわりの研究でやっているので)。
この場合OS起動時eをタイプすることで表示されるブートオプションの画面で、構築したカーネルが2.6.32-selinuxと表示されます。
0 件のコメント:
コメントを投稿