8.6. 新しいカーネルのコンパイル

新しいカーネルをコンパイルしようとする動機はなんでしょう? Debian では、 標準で入っているカーネルで多くの機能をサポートしているので、ほとんどその 必要はありません。また、Debian は多くの場合、いくつかの代替カーネルを 提供しています。ですからおそらく、もっと自分のハードウェアに対応する代わりの カーネルイメージパッケージがあるかどうかをまず確認したいと思うでしょう。 しかし、以下のような目的のためには、新しいカーネルをコンパイルすることは有益です。

8.6.1. カーネルイメージの管理

カーネルのコンパイルを恐がらないでください。楽しく、かつ役に立つ作業です。

Debian 流にカーネルをコンパイルするのに必要なパッケージは、 fakerootkernel-packagelinux-source-2.6 、あとは多分すでにインストール済みのパッケージがいくつか、です (完全な一覧については /usr/share/doc/kernel-package/README.gz を ご覧ください)。

この方法はカーネルソースから .deb を作り、また非標準のモジュールが あれば、作成したカーネルに依存した .deb も同時に作ります。 これはカーネルイメージの管理には良い方法で、 /boot にカーネル、System.map、 ビルドに使った設定ファイルの記録を保存します。

必ずしも「Debian 流」にカーネルをコンパイルする必要は ありません。しかし、カーネルの管理にもパッケージング システムを用いるほうが、実際に安全で簡単です。実は linux-source-2.6 ではなく、Linus が配付しているカーネルソースをそのまま利用することもできますが、 その場合でも kernel-package を用いてコンパイルしてください。

kernel-package の利用に必要な文書すべては、 /usr/share/doc/kernel-package ディレクトリにあります。 そのため、この節では簡単な解説のみを行います。

以降では、あなたがマシン上で行動する自由があって、ホームディレクトリの どこかにカーネルソースを展開すると仮定します[16]。また、カーネルバージョンが 2.6.18 だと仮定します。 カーネルソースを取り出したいディレクトリにいることを確認してから、 tar xjf /usr/src/linux-source-2.6.18.tar.bz2 としてソースを展開し、作成された linux-source-2.6.18 ディレクトリに移動してください。

次にカーネルコンパイルの設定を行います。X11 のインストールおよび設定が 済んでいて、X11 を実行中の場合は make xconfig を、 そうでない場合は make menuconfig を実行します (後者では libncurses5-dev がインストールされている必要があります)。 オンラインヘルプを時間をかけて読み、注意深く選択してください。 一般的に、迷った場合はそのデバイスドライバ (イーサネットカードや、 SCSI コントローラなどの周辺機器を制御するソフトウェア) を入れた方が よいでしょう。なお注意していただきたいのですが、 特定のハードウェアに関係のないその他のオプションで、 よく理解できないものはデフォルトの値のままにしておいてください。 また、「Loadable module support」 にある 「Kernel module loader」 (デフォルトでは選択されていません) は忘れずに選択してください。 さもないと、Debian のインストールに問題が生じることもあります。

続いてソースツリーをクリアし、kernel-package のパラメータを リセットします。これには、make-kpkg clean を実行してください。

さあ、カーネルをコンパイルしましょう。 fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image を実行してください。バージョン番号 「1.0」 は自由に変えられます。 この番号は、構築したカーネルを後から確認できるようにするためのものだからです。 同様に、「custom」 の箇所にもお好みのキーワード (例えばホスト名など) を使うことができます。マシンのパワーにもよりますが、カーネルのコンパイルには かなり時間がかかります。

一旦コンパイルが完了すれば、他のパッケージと同じように、そのカスタムカーネルを インストールできます。root アカウントで dpkg -i ../linux-image-2.6.18-subarchitecture_custom.1.0_powerpc.deb を実行してください。subarchitecture は、 カーネルのオプションで設定された 任意のサブアーキテクチャを表しています。 また dpkg -i とすると、カーネルと一緒に 役に立つ補助的なファイルもいくつかインストールされます。例えば カーネルの問題をデバッグするのに役立つ System.map や、 現行のカーネルの設定が記録されている /boot/config-2.6.18 などが適切にインストールされます。 さらに、新たに作成されたカーネルパッケージは、新しいカーネルを使用するように ブートローダの設定を自動的に更新してくれます。なお、モジュールパッケージを作成した場合、 同様にそれらもインストールする必要があるでしょう。

さて、システムを再起動する時がやってきました。これまでの作業の間に何か警告が表示されていたら それらを注意深く読み、それから shutdown -r now を実行してください。

Debian カーネルやカーネルのコンパイルに関するより詳しい情報については、 Debian Linux Kernel Handbook をご覧ください。 kernel-package に関するより詳しい情報については、 /usr/share/doc/kernel-package にある素晴しいドキュメントをお読みください。



[16] 他にも、カーネルソースを展開してカスタムカーネルをビルドできる場所は ありますが、特別なパーミッションを必要としないここが最も簡単です。