新しいカーネルのコンパイル
新しいカーネルをコンパイルしようとする動機はなんでしょう?
Debian では、標準で入っているカーネルで多くの機能をサポートしてい
るので、ほとんどその必要はありません。しかし、以下のような目的のためには、
新しいカーネルをコンパイルすることは有益です。
特殊なハードウェアを使ったり、
標準カーネルとハードウェアとの競合を回避するため
APM や SMP など、
既存のカーネルがサポートしていないハードウェアや機能を利用するため
使わないドライバを取り除くことでカーネルを最適化し、
起動にかかる時間を短くするため
(ハイメモリサポートなど)
デフォルトのカーネルでサポートされていない機能を利用するため
最新のカーネルや開発版のカーネルを使用するため
目新しいことをして友達を感心させるため
カーネルイメージの管理
カーネルのコンパイルを恐がらないでください。楽しく、かつ役に立つ作業です。
Debian 流にカーネルをコンパイルするのに必要なパッケージは、
kernel-package、
kernel-source-&kernelversion; (この文書を執筆している
時点で最も新しいバージョンです)、fakeroot、あとは
多分すでにインストール済みのパッケージがいくつか、です (完全な一覧については
/usr/share/doc/kernel-package/README.gz を
ご覧ください)。
この方法はカーネルソースから .deb を作り、また非標準のモジュールが
あれば、作成したカーネルに依存した .deb も同時に作ります。
これはカーネルイメージの管理には良い方法で、
/boot にカーネル、System.map、
ビルドに使った設定ファイルの記録を保存します。
必ずしも「Debian 流」にカーネルをコンパイルする必要は
ありません。しかし、カーネルの管理にもパッケージング
システムを用いるほうが、実際に安全で簡単です。実は
kernel-source-&kernelversion; ではなく、Linus が
配付しているカーネルソースをそのまま利用することもできますが、その場合でも
kernel-package を用いてコンパイルしてください。
kernel-package の利用に必要な文書すべては、
/usr/share/doc/kernel-package
ディレクトリにあります。
そのため、この節では簡単な解説のみを行います。
以降では、あなたがマシン上で行動する自由があって、ホームディレクトリの
どこかにカーネルソースを展開すると仮定します。
他にも、カーネルソースを展開してカスタムカーネルをビルドできる場所は
ありますが、特別なパーミッションを必要としないここが最も簡単です。
。また、カーネルバージョンが &kernelversion; だと仮定します。
カーネルソースを取り出したいディレクトリにいることを確認してから、
tar xjf /usr/src/kernel-source-&kernelversion;.tar.bz2
としてソースを展開し、作成された kernel-source-&kernelversion;
ディレクトリに移動してください。
次にカーネルコンパイルの設定を行います。X11 のインストールおよび設定が
済んでいて、X11 を実行中の場合は make xconfig を、
そうでない場合は make menuconfig を実行します (後者では
libncurses5-dev がインストールされている必要があります)。
オンラインヘルプを時間をかけて読み、注意深く選択してください。
一般的に、迷った場合はそのデバイスドライバ (イーサネットカードや、
SCSI コントローラなどの周辺機器を制御するソフトウェア) を入れた方が
よいでしょう。なお注意していただきたいのですが、
特定のハードウェアに関係のないその他のオプションで、
よく理解できないものはデフォルトの値のままにしておいてください。
また、Loadable module support
にある Kernel module loader
(デフォルトでは選択されていません) は忘れずに選択してください。
さもないと、Debian のインストールに問題が生じることもあります。
続いてソースツリーをクリアし、kernel-package のパラメータを
リセットします。これには、make-kpkg clean を実行してください。
さあ、カーネルをコンパイルしましょう。
fakeroot make-kpkg --revision=custom.1.0 kernel_image
を実行してください。バージョン番号 1.0
は自由に変えられます。
この番号は、構築したカーネルを後から確認できるようにするためのものだからです。
同様に、custom
の箇所にもお好みのキーワード (例えばホスト名など)
を使うことができます。マシンのパワーにもよりますが、カーネルのコンパイルには
かなり時間がかかります。
PCMCIA の機能が必要なら、pcmcia-source
のインストールも必要です。root アカウントで /usr/src
ディレクトリに gzip で圧縮された tar ファイルを展開します (モジュールは
あるべき場所、つまり /usr/src/modules
になくてはなりません)。それから root アカウントで make-kpkg
modules_image を実行します。
一旦コンパイルが完了すれば、他のパッケージと同じように、そのカスタムカーネルを
インストールできます。root アカウントで dpkg -i
../kernel-image-&kernelversion;-subarchitecture_custom.1.0_&architecture;.deb
を実行してください。subarchitecture は、
カーネルのオプションで設定された
i586
のような
任意のサブアーキテクチャを表しています。
また dpkg -i kernel-image... とすると、カーネルと一緒に
役に立つ補助的なファイルもいくつかインストールされます。例えば
カーネルの問題をデバッグするのに役立つ System.map や、
現行のカーネルの設定が記録されている
/boot/config-&kernelversion; などが適切にインストールされます。
さらに、新たに作成された
kernel-image-&kernelversion; パッケージは、
自動的にあなたのプラットフォームのブートローダを設定してくれますので、
ブートローダを再度実行する必要はありません。
なお、モジュールパッケージを作成した場合、例えば PCMCIA がある場合は、
同様にそれらもインストールする必要があるでしょう。
さて、システムを再起動する時がやってきました。これまでの作業の間に何か警告が表示されていたら
それらを注意深く読み、それから shutdown -r now を実行してください。
kernel-package に関するより詳しい情報については、
/usr/share/doc/kernel-package にある素晴しいドキュメントをお読みください。