Linux の主要なコンポーネントをいくつか見てきたので、それらがシステム起動時にどのように連携するかを見てみましょう。電源ボタンを押してからログインプロンプトが表示されるまでの全シーケンスは、「Linux ブートプロセス」として知られています。これは、電源が切れたマシンを完全に機能するオペレーティングシステムに変える、興味深い道のりです。
Linux オペレーティングシステムの起動プロセスは、4 つの主要なステージに簡略化できます。
ステージ 1 BIOS
BIOS(Basic Input/Output System)またはその最新の後継である UEFI(Unified Extensible Firmware Interface)は、コンピューターの電源を入れたときに最初に実行されるソフトウェアです。POST(Power-On Self-Test)を実行して、CPU、メモリ、ストレージデバイスなどのシステムのハードウェアを初期化し、検証します。ハードウェアチェックが完了すると、BIOS の主な役割は、ストレージデバイスからブートローダーを見つけてロードすることです。
ステージ 2 ブートローダー
ブートローダーは BIOS から制御を引き継ぎます。その主な責任は、Linux カーネルをメモリにロードすることです。Linux の一般的なブートローダーは GRUB(GRand Unified Bootloader)です。GRUB は多くの場合メニューを表示し、どのオペレーティングシステムまたはカーネルバージョンを起動するかを選択できるようにします。選択(またはタイムアウト)が行われると、選択されたカーネルと初期 RAM ディスク(initrd)をメモリにロードし、制御をカーネルに渡します。
ステージ 3 カーネル
カーネルがメモリにロードされると、システムの制御を引き継ぎます。まず、自分自身を解凍し、コアハードウェアとメモリ管理を初期化します。次に、カーネルはシステムファイルがすべて含まれるルートファイルシステムをマウントします。ブートプロセス linuxが依存する最後の最も重要なタスクは、最初のユーザー空間プログラムであるinitプロセスを実行することです。
ステージ 4 Init
initプロセスは、カーネルによって開始される最初のプロセスであり、システム上の他のすべてのプロセスの祖先です。その主な仕事は、設定に従って必須のサービスやバックグラウンドプロセス(デーモン)を開始することにより、システムを使用可能な状態にすることです。従来の System V init、Upstart、そして現在広く採用されている systemd など、いくつかのinitの実装があります。
これにより、ブートプロセス linuxがたどるプロセスの概要が示されました。今後のレッスンで、これらの各ステージについてさらに詳しく掘り下げます。