【Linux】Linuxの起動の流れ
Linuxの起動プロセスは、以下の4つの主要なフェーズに分けられます。各フェーズで特定の役割を果たすコンポーネントが順番に実行され、システムが正常に起動するようにします。
- ファームウェア(BIOS/UEFI)
- ブートローダ(GRUB Legacy/GRUB 2)
- カーネル(vmlinuz)
- プロセス制御の初期化(init/systemd)
➊ ファームウェア(BIOS/UEFI)のフェーズ
ファームウェアは、システムの電源が入った後に最初に実行されるソフトウェアです。BIOS(Basic Input/Output System)またはUEFI(Unified Extensible Firmware Interface)として知られています。
項目 | 説明 |
---|---|
役割 | ハードウェアの初期化とブートデバイスの検出 |
主なタスク | POST(Power-On Self Test)を実行し、ハードウェアの状態をチェックします。 |
結果 | 有効なブートデバイスが検出されると、ブートローダーに制御を移します。 |
❷ ブートローダ(GRUB Legacy/GRUB 2)のフェーズ
ブートローダは、カーネルをメモリにロードし、システムの制御をカーネルに渡す役割を果たします。GRUB(GRand Unified Bootloader)が一般的に使用されます。
項目 | 説明 |
---|---|
役割 | カーネルと初期RAMディスク(initramfsまたはinitrd)の読み込みと実行 |
主なタスク | ブートメニューを表示し、ユーザーが選択したカーネルをロードします。 |
結果 | カーネルイメージをメモリにロードし、カーネルに制御を渡します。 |
❸ カーネル(vmlinuz)のフェーズ
カーネルは、オペレーティングシステムの中核部分であり、システムリソースの管理とプロセスの実行を担当します。
項目 | 説明 |
---|---|
役割 | ハードウェアの抽象化とリソース管理 |
主なタスク | ハードウェアデバイスの初期化とシステムの基本的な設定 |
結果 | 初期化プロセス(initまたはsystemd)に制御を渡します。 |
➍ プロセス制御の初期化(init/systemd)のフェーズ
初期化プロセスは、システムの他のすべてのプロセスを起動および管理します。伝統的なinit
システムと、現代の多くのディストリビューションで使用されるsystemd
があります。
項目 | 説明 |
---|---|
役割 | システムの残りの部分の初期化とサービスの起動 |
主なタスク | ランレベルやターゲットに応じてサービスを起動し、ユーザーがログインできるように準備します。 |
結果 | システムが完全に起動し、ユーザーがログインして使用できる状態になります。 |
まとめ
Linuxの起動プロセスは、複数のフェーズを経てシステムを起動します。各フェーズで特定のタスクが実行され、次のフェーズに制御が渡されることで、システムが正常に起動します。以下にそれぞれのフェーズをまとめます。
- ファームウェア(BIOS/UEFI): ハードウェアの初期化とブートデバイスの検出
- ブートローダ(GRUB Legacy/GRUB 2): カーネルのロードと実行
- カーネル(vmlinuz): ハードウェアの抽象化と初期設定
- プロセス制御の初期化(init/systemd): システムサービスの起動と管理
この一連のプロセスにより、Linuxシステムはユーザーが使用可能な状態にまで起動されます。