Linux Hints & Tipsだワン!
カーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイルカーネルコンパイル

1.カーネルコンパイル

ディストリビューションはRedHatを前提に話を進めます。
ソースファイルは
カーネル2.2系の場合:/usr/src/linux
カーネル2.4系の場合:/usr/src/linux-2.4
カーネル2.6系の場合:基本的にどこでも構いません
で作業をします。
なお、Fedora Core 3以降のカーネルをコンパイルする場合、カーネルソースがRPMファイルとして提供されていませんので、カーネルをコンパイルする方法が違います。H以降を参考にカーネルコンパイルしてください。

@ ソースディレクトリをお掃除!

 カーネルをコンパイルする前は実行しましょう!
 #make mrproper

カーネルコンパイルもしも既に構成済の.configがある場合、削除されるので注意するだワン!

A カーネルパラメータ設定

 RedHatが提供しているカーネルパラメータをベースとする場合は
 configというディレクトリ以下にサンプルがあるのでそれをコピーして使いましょう!(Fedora Core 3以降は/bootにConfigファイルがあります)
 #cp -p config/XXXXX .config
 上記でコピーした設定を反映させるには
 #make oldconfig
 とすることで自動的に読込まれます。
 新規に作成もしくは編集する場合は、下記の3つの方法があるのでお好きな方法でどうぞ!

 1.コマンドライン対話方式によるパラメータ設定

 #make config

 2.テキストメニュー形式によるパラメータ設定

 #make menuconfig

 3.GUIベースのメニュー形式パラメータ設定(X Windowsが起動していること)

 #make xconfig

B Makefileを編集

 Makefileの中にEXTRAVERSIONという項目がありますので、任意に設定します。
 最近のMakefileは-XXcustomという設定になっているので特に設定しなくても問題ないです。
 ちなみにこの項目はモジュールファイルのディレクトリ名などに影響します。
 例)カーネル2.4.20でEXTRAVERSIONが-8customの場合
 /lib/modules/2.4.20-8customというディレクトリ以下にモジュールファイルが導入されます。

 カーネル2.6系の場合はDへ

C .dependファイルの作成と不要ファイルの削除

 カーネルパラメータを元に.dependファイルを作成します
 #make dep
 ここはCPUによって時間がかかります。
 不要ファイルの削除
 #make clean

D カーネルの作成

カーネル2.2orカーネル2.4の場合
 #make bzImage
カーネル2.6の場合
 #make

 遅いCPUやSMPマシンの場合は下記の様にするとコンパイルの効率が上がります。
カーネル2.2orカーネル2.4の場合
 #make -j2 bzImage
カーネル2.6の場合
 #make -j2
 -jのあとの数値はCPU数x2くらいが良いようです
 しばらく待ちましょう!

E カーネルとSystem.mapのコピー

 作成されたファイルを/bootへコピーします。
 #cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.X.XX-Xxxxx
 #cp -p System.map /boot/System.map-2.X.XX-Xxxxx

 カーネル2.6系の場合はGへ

F モジュールのコンパイルと導入

 カーネルパラメータで<M>を選択したものがあればここを実施しなければなりません。
 #make modules
 モジュールファイルの導入
 #make modules_install
 /lib/modules/以下にコピーされます。

G initrdファイル作成

 SCSIなどを使っている場合はinitrdファイルが必要な場合があります。
 #cd /boot
 #mkinitrd initrd-2.X.XX-Xxxxxx.img 2.X.XX-Xxxxxx
        initrdファイル名    カーネル名

H Fedora Core 3以降のカーネルをコンパイルする方法

 1 カーネルのSRPMファイルを近くのミラーサイトより入手します

次の例はいずれもベースのカーネルをコンパイルする場合です。
(アップデートした場合は数字部分が変わりますので読み替えて実施してください)
 Fedora Core 3の場合:kernel-2.6.9-1.667.src.rpm
 Fedora Core 4の場合:kernel-2.6.11-1.1369_FC4.src.rpm
 Fedora Core 5の場合:kernel-2.6.15-1.2054_FC5.src.rpm
 Fedora Core 6の場合:kernel-2.6.18-1.2798.fc6.src.rpm
 Fedora 7の場合:kernel-2.6.21-1.3194.fc7.src.rpm
 Fedora 8の場合:kernel-2.6.23.1-42.fc8.src.rpm

 2 ファイルの導入とソースファイルの展開

入手したファイルを導入してコンパイルの準備をします。
 #rpm -ivh kernel-X.X.X-X.YYYY.FFF.src.rpm
 #cd /usr/src/redhat/spec
 #rpmbuild -bp kernel-XXX.spec
ソースファイルが展開され、パッチが適用されます

 3 カーネルの再コンパイル

次の場所にソースファイルが展開されていますので、後は手順@から同じ手順でカーネルをコンパイルしましょう。
 #cd /usr/src/redhat/BUILD
 #cd kernel-XXXX.X/linux-XXXX.X.ARCH名

カーネルコンパイル健闘を祈るだワン!

戻る
カーネルコンパイル