Unixのカーネルは,あなたのプログラムとハードウェアの仲介者として働きます。 まず,すべての動作中のプログラム(プロセス)のメモリー管理(とそのための 調整)を行いますし,またそれらのプロセスが公平に(お好みとあらば不公平に) プロセッサのサイクルを共有できるようにします。さらに,プログラムがハード ウェアと会話するための素晴らしい,またかなり汎用性のあるインターフェース を提供します。
カーネルにはこれ以外にも機能がありますが,以上の基本的な機能だけは知ってお くべきでしょう。
新しいカーネルを使うと,たいていはより多くのハードウェアと会話ができるよう になります(すなわち,より多くのデバイスドライバがついてくる)し,よりよい プロセス管理ができますし,古いバージョンより速く動作しますし,古いバージョ ンより安定であるかもしれませんし,また古いバージョンのくだらないバグが修正 されます。ほとんどの人は,新しいデバイスドライバが欲しかったり,バグを修正 したいのでカーネルをアップグレードするのです。
Hardware-HOWTOを見てください。代わりに,linuxソースのファイル
`config.in
'を見てもいいし,`make config
'するときにもわか
ります。これで標準のカーネル配付でサポートされるすべてのハードウェアを知る
ことができますが,これがlinuxのサポートするハードウェアのすべてというわけ
ではありません。多くの共通のデバイスドライバ(PCMCIAドライバや特定のテープ
ドライバなど)は別々に管理,配付されるローダブルモジュールです。
Linusはlinuxのソースに含まれているREADME
ファイルに書かれているバ
ージョンのgccを推奨しています。もしこのバージョンを持っていなかったら,推
奨されているバージョンのgccのドキュメントに,libcをアップグレードする必要
があるかどうかが書かれています。アップグレードはそんなに難しくはありません
が,説明にしたがうことが大切です。
ローダブルモジュールとは,カーネルには直接リンクされない(カーネル本体には含 まれない)カーネルコードのかけらです。個別にコンパイルし,ほとんどいつでも動 作中のカーネルに組み込んだり取り外したりすることができます。柔軟性ゆえ,特定 のカーネル機能を実現するのに,好んで用いられています。多くのポピュラーなデバ イスドライバ,例えばPCMCIAドライバやQIC-80/40 テープドライバは,ローダブルモ ジュールです。
あなたのシステム設定しだいです。まず,圧縮したlinuxのソースはバージョン2.0.10 で6メガバイト弱というところです。ほとんどのサイトでは解いた状態でも保存して います。解凍すると,24 MBになります。しかしそれで終りではありません。実際に コンパイルするにはそれ以上必要です。これはカーネルに何を組み込むかによりま す。例えばあるマシンに,ネットワークサポート,3Com 3C509ドライバ,および3つ のファイルシステムを組み込むと,ほぼ30MBを使用します。圧縮したlinuxソースに 加えて,このようなコンフィギュレーションではおよそ36 MBが必要です。他の構成 では,ネットワークデバイスのサポートなし(ただしネットワーク自体はサポート), サウンドカードサポートの状態でずっと多くを消費します。また,新しいカーネル は以前より大きなソースツリーを持つ傾向がありますので,一般に,もし多くのハ ードウェアをサポートするのなら,それに見合うハードディスクの空きが必要です (また,記憶装置の空き容量に問題があるならば,最近のハードディスクの値段を 考慮して,ハードディスクを追加することをお勧めします)。
ほとんどの人にとって,答えは「かなり長く」となります。システムの速度や,メ モリーの量が最終的に時間を決めます。が,カーネルに組み込むものの数にも多少 関係します。RAM 16 MBの486DX4/100で,v1.2のカーネルにおいて5つのファイルシ ステム,ネットワークサポートおよびサウンドカードサポートで20分前後かかりま す。386DX/40(8 MB RAM )で同様なコンフィギュレーションだと,コンパイルは 1時間半近く掛かります。まあ,お茶を飲んだり,テレビを見たり,編み物をした り,マシンがカーネルをコンパイルしている間暇つぶしできるようなことをしてい たほうがよいでしょう。どうしようもなく遅いマシンを使っているのなら,ほかの 人に速いマシンでコンパイルしてもらう手もありますね。