A.2. カーネルの構築

ここでは、モジュール形式カーネルの構築について解説します。 モノリシックカーネルについては、 項A.3を参照して ください。モノリシックカーネルの構築とインストールについて、 モジュール形式カーネルとは異なる点について説明してあります。

注意注意
 

ここの例では、カーネルバージョンとして2.4.20-2.47.1を 使っています(使用カーネルバージョンが異なる場合があります)。 カーネルバージョンを確認するには、uname -r コマンドを入力します。2.4.20-2.47.1を返ってきた 実際のバージョンに置き換えてください。

x86アーキテクチャ用のカスタムカーネルを構築するには (以下すべてのステップはrootとして行なうこと)、

  1. シェルプロンプトを開き、/usr/src/linux-2.4 ディレクトリに移動します。これ以降のコマンドは、 すべてこのディレクトリで実行しなければなりません。

  2. カーネルを構築するときは、ソースツリーをきれいな 状態にしておくことが重要です。したがって、最初に、 make mrproperコマンドを発行して、ソースツリーに 散らばっている可能性がある前回の構築作業の残りと共に設定 ファイルを削除することをおすすめします。 /usr/src/linux-2.4/.configファイルとして すでに設定ファイルが存在する場合は、このコマンドを実行する 前に別のディレクトリへバックアップをとっておき、後でコピー して元にもどします。

  3. スタート地点として、デフォルトの Red Hat Linuxカーネルの設定を使用することをおすすめ します。これを行なうには、システムの アーキテクチャ用設定ファイルを /usr/src/linux-2.4/configs/ ディレクトリから /usr/src/linux-2.4/.configに コピーします。システムに4ギガバイト以上 のメモリがある場合は、 bigmemのキーワードを含む ファイルをコピーします。

  4. 次に、設定をカスタマイズします。 X Window Systemが利用可能なら、推奨される 方法としてmake xconfig コマンドを使いLinux Kernel Configurationを実行します。

    注意注意
     

    make xconfig コマンドで開始されるグラフィカルツールを 使用するには、wishコマンド を提供するtkパッケージを インストールする必要があります。 RPMパッケージのインストールについての詳細は、 パートVを参照してください。

    図 A-1. カーネルコンポーネントのカテゴリ設定

    図A-1で 示すように、カテゴリをクリックして選択し、 設定します。各カテゴリ内はコンポーネントです。 コンポーネントの横にあるy (yes)、m(module)、 n(no)のいずれかを選択して、 それぞれ、カーネルにコンパイルする、カーネルモジュールとして コンパイルする、コンパイルしないなどを行ないます。 コンポーネントについての詳細は、横にある Helpボタンをクリックします。

    メインメニューを クリックしてカテゴリ一覧に戻ります。

    設定が完了したら、メインメニューウィンドウ にあるSave and Exit buttonを クリックして設定ファイル /usr/src/linux-2.4/.configを作成し、 Linux Kernel Configuration プログラムを終了します。

    設定になにも変更を加えなかった場合にも、 続行する前にmake xconfigコマンドの 実行(または、カーネル設定の他の方法のどれか)が要求されます。

    カーネル設定のために利用できる他の方法と以下の ような方法があります。

    • make config — インテラクティブなテキストプログラム。コンポーネントは リニア形式で表示され、ひとつづつ答えていきます。この方法は X Window Systemを必要としません。前の質問に戻って答え を変更することはできません。

    • make menuconfig — テキストモードのメニュー法式プログラム。コンポーネントは カテゴリのメニューで表示されます。Red Hat Linuxインストール プログラムのテキストモードで使用したのと同じ方法で、 目的のコンポーネントを選択します。[*] (ビルトイン)、[](除外)、 <M>(モジュール)、 < >(モジュール可能)などの 含まれるべきアイテムに対応するタグを切り替えます。 この方法は X Window Systemを必要としません。

    • make oldconfig — これはノンインテラクティブなスクリプトで、設定ファイル がデフォルト設定を含むようセットアップします。システムが デフォルトのRed Hat Linuxカーネルを使用している場合は、 アーキテクチャ用としてRed Hat Linuxと共に配給されたカーネルの設定 ファイルを作成します。作動するデフォルトを確認し必要の ない機能を停止するためのカーネルを設定するのに便利です。

    注意注意
     

    kmod とカーネルモジュールを 使用するには、設定中にkmod support module version (CONFIG_MODVERSIONS) supportYesと答えます。

  5. /usr/src/linux-2.4/.config ファイルを作成したら、make depコマンド を使用して正しく依存関係をセットアップします。

  6. make cleanコマンドを実行し、 構築用にソースツリーの準備をします。

  7. 既存のカーネルが上書きされないようにカスタム カーネルのバージョン番号は修正したものをつけることを おすすめします。 ここで説明している方法は、万一の場合、最も簡単なリカバリ 方法です。その他の可能性については、 http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html、 または、/usr/src/linux-2.4にある Makefileをご覧ください。

    デフォルトでは、 /usr/src/linux-2.4/Makefile は、EXTRAVERSIONで始まるラインの 末尾にcustomという単語 があります。その文字列を加えることにより、システムが 作動している古いカーネルと新しいカーネル(バージョン 2.4.20-2.47.1カスタム)を同時に持つことができます。

    システムがひとつ以上のカスタムカーネルを含む 場合は、最後に日付を加えるとよいでしょう(または、 別の識別子)。

  8. make bzImageを実行して、 カーネルを構築します。

  9. make modules で設定されたモジュールはすべて構築 します。

  10. make modules_install コマンドを使用してカーネル モジュールをインストールします(実際には なにも構築されていない場合も)。コマンド内の 下線(_)に注意してください。 これでカーネルモジュールをディレクトリパスの /lib/modules/ <KERNELVERSION> /kernel/drivers( KERNELVERSIONは、 Makefileで指定したバージョン)に インストールします。この例では、 /lib/modules/2.4.20-2.47.1custom/kernel/drivers/ となります。

  11. make installを使用して 新しいカーネルと関連ファイルを該当ディレクトリに コピーします。

    /bootディレクトリにカーネルを インストールすることに加えて、このコマンドは新しい initrdイメージを構築して、 新しいエントリをブートローダー設定ファイルに追加する /sbin/new-kernel-pkgスクリプトの 実行もします。

    システムにSCSIアダプタがあり、SCSIドライブが コンパイルされた場合、あるいは、カーネルが モジュール(Red Hat Linuxではデフォルト)としてext3サポートで 構築された場合は、initrd イメージが必要となります。

  12. initrdイメージ及び ブートローダに修正が加えられるとしても、正しく 行なわれたか確認して2.4.20-2.47.1の代わりに カスタムカーネルバージョンを使用することを 確認してください。これらの修正の確認についての 説明は、項30.5項30.6を参照して ください。