Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
次に、これらの機能を持つLinuxカーネルの起動手順を紹介しましょう。PCの電源が入ると、LILOやGRUBなどのブートローダが起動し、これらによってLinuxカーネルのイメージが実メモリ上に読み込まれ、Linuxカーネルの起動エントリから実行が開始されます。マルチプロセッサのマシンであっても、起動処理だけは1つのCPUで行います。
起動されたLinuxカーネルは、まず基本的なカーネル機能のメモリ上にあるデータ構造を初期化します。
次にプロセスIDが1番のプロセスを起動し、初期化処理の続きを行わせます。プロセスID1番のプロセスが担当する初期化処理は、待ち合わせが必要となる各種デバイスの初期化処理や、ルートファイルシテムのマウント処理です。各種カーネルスレッドの起動も、この初期化処理の中で行います。初期化処理の最後に、このプロセスはinitプログラムをexecで実行し、initプロセスになります。
Linuxカーネルとしての初期化処理は、これで完了です。初期化処理完了後は、Linuxカーネルはシステムコール発行や、割り込み発生を待ち続けます。各種デーモンを起動したり、rcスクリプトを起動したりする作業はinitプロセスの役目です。
詳細は、「第27章 カーネルの初期化」で説明します。