0.10 Linuxカーネルの起動

 次に、これらの機能を持つLinuxカーネルの起動手順を紹介しましょう。PCの電源が入ると、LILOやGRUBなどのブートローダが起動し、これらによってLinuxカーネルのイメージが実メモリ上に読み込まれ、Linuxカーネルの起動エントリから実行が開始されます。マルチプロセッサのマシンであっても、起動処理だけは1つのCPUで行います。

 起動されたLinuxカーネルは、まず基本的なカーネル機能のメモリ上にあるデータ構造を初期化します。

 次にプロセスIDが1番のプロセスを起動し、初期化処理の続きを行わせます。プロセスID1番のプロセスが担当する初期化処理は、待ち合わせが必要となる各種デバイスの初期化処理や、ルートファイルシテムのマウント処理です。各種カーネルスレッドの起動も、この初期化処理の中で行います。初期化処理の最後に、このプロセスはinitプログラムをexecで実行し、initプロセスになります。

 Linuxカーネルとしての初期化処理は、これで完了です。初期化処理完了後は、Linuxカーネルはシステムコール発行や、割り込み発生を待ち続けます。各種デーモンを起動したり、rcスクリプトを起動したりする作業はinitプロセスの役目です。

 詳細は、「第27章 カーネルの初期化」で説明します。