Linux カーネルの再構築 ~第1回~
<h1>カーネル再構築手順</h1>
<strong>
今回はCentOS6.6を使用して試しています。
カーネルのメジャーバージョンがそれほど変わらない 2.6系で確認しています。
rootユーザで操作しています。
</strong>
参考
http://qiita.com/zkangaroo/items/a3e1cd4b4d28a7c12e14
<h2>カーネル再構築に必要なファイルのインストール</h2>
# yum install ncurses-devel
<strong>
カーネルのソースダウンロード場所
http://vault.centos.org/6.6/os/Source/SPackages/
</strong>
<h2>カーネル本体のダウンロード</h2>
下記のコマンドでカーネルをダウンロードをします。
# wget http://vault.centos.org/6.6/os/Source/SPackages/kernel-2.6.32-504.el6.src.rpm
<h2>カーネルを解凍してコンパイル</h2>
下記のコマンドでダウンロードをしたファイルを解凍します。
rpm2cpio kernel-2.6.32-504.el6.src.rpm | cpio -id
解凍してできたファイル
↓これがカーネルのソースファイル mv linux-2.6.32-504.el6.tar.bz2 /usr/src/kernel
回答したディレクトリに移動して、下記のようにして .config ファイルを作成します。
cd /usr/src/kernel tar -xjvf linux-2.6.32-279.22.1.el6.tar.bz2 cd linux-2.6.32-279.22.1.el6 cp /boot/config-2.6.32-504.el6.i686 .config make oldconfig
make oldconfig をして作成したファイル内の下記の部分を修正しないと make 時にエラーが出るようです。
下記の部分を make menuconfig コマンドを使用して修正します。
make menuconfig [*] Enable loadable module support ---> [*] Module signature verification (EXPERIMENTAL) [ ] Module signature verification (EXPERIMENTAL) //無効化 -*- Cryptographic API ---> [*] In-kernel signature checker (EXPERIMENTAL) [ ] In-kernel signature checker (EXPERIMENTAL) //無効化
カーネルコンパイルを始めます。
make
<h2>カーネルのインストール</h2>
以下の様なワーニングが表示されましたが、一応モジュールはインストールできているようです。
make modules_install INSTALL /lib/firmware/iwlwifi-3160-7.ucode make[1]: warning: Clock skew detected. Your build may be incomplete. DEPMOD 2.6.32-watanabe
最後にカーネルに名前をつけてインストールをします。
以下の installkernel コマンドを使用すると、インストール作業に必要な設定などを行って保存してくれます。
installkernel 2.6.32-watanabe /usr/src/kernels/linux-2.6.32-504.el6/arch/x86/boot/bzImage /usr/src/kernels/linux-2.6.32-504.el6/System.map stem.map ERROR: modinfo: could not find module vmhgfs ERROR: modinfo: could not find module vsock ERROR: modinfo: could not find module vmci ERROR: modinfo: could not find module vmxnet
新しいカーネルで起動すると、起動時にVM系のモジュールでエラーは出ていたが、一応起動には成功しました。
次回はカーネルのバージョンを 4.0.7(この記事作成時点での最新版)にして確認したいと思います。