1.How to compile the kernel

ディストリビューションはRedHatを前提に話を進めます。
ソースファイルは
カーネル2.2系の場合:/usr/src/linux
カーネル2.4系の場合:/usr/src/linux-2.4
で作業をします。

@ ソースディレクトリをお掃除!
 カーネルをコンパイルする前は実行しましょう!
 $make mrproper

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

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

 @.コマンドライン対話方式によるパラメータ設定
  $make config
 A.テキストメニュー形式によるパラメータ設定
  $make menuconfig
 B.GUIベースのメニュー形式パラメータ設定(X Windowsが起動していること)
  $make xconfig

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

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

D カーネルの作成
 $make bzImage
 遅いCPUやSMPマシンの場合は下記の様にするとコンパイルの効率が上がります。
 $make -j2 bzImage
 しばらく待ちましょう!

E カーネルとSystem.mapのコピー
 作成されたファイルを/bootへコピーします。
 $cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.X.XX-Xxxxxx
 $cp -p System.map /boot/System.map-2.X.XX-Xxxxxx

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ファイル名    カーネル名

検討を祈るだワン!



Return
直線上に配置