UEFIベースのブートについて

Oracle Linuxリリースを実行しているUEFIベースのシステムでは、システム・ブート・プロセスでは次のシーケンスが使用されます:

  1. システムの電源が投入されると、システムは電源オン・セルフテスト(POST)を実行して、システムのコア・ハードウェア・コンポーネント(CPUやメモリーなど)を検出およびチェックします。その後、UEFIファームウェアが初期化されます。

  2. UEFIファームウェアは、ネットワーク・デバイスやストレージを含め、周辺機器コンポーネントなどの他のハードウェアを検出します。UEFIファームウェアには、様々なストレージ・デバイス上のブート・ローダーと直接対話できる独自のブート・マネージャが含まれています。ブート・マネージャは、様々なブート・デバイスや検出されたブート・ローダーの優先度を含む一連の変数を格納します。

    UEFIは、EFIシステム・パーティション(ESP)として識別する特定のグローバル一意識別子(GUID)を持つFAT32形式のGPTパーティションを検索します。このパーティションには、ブート・ローダーなどのEFIアプリケーションやその他の構成ファイルが含まれています。

    複数のブート・デバイスが存在する場合、UEFIブート・マネージャは、ブート・マネージャで定義された順序に基づいて適切なESPを使用します。efibootmgrツールでは、デフォルト定義を使用しない場合に、別の順序を定義できます。

  3. UEFIブート・マネージャがデフォルトのブート・ローダーをロードします。Oracle Linuxは、2段階のブート・プロセスを使用してセキュア・ブート検証プロセスを処理します。2段階プロセスには、ESP上のshimブート・ローダーと呼ばれる第1段階ブート・ローダーと、GRUB 2と呼ばれる第2段階ブート・ローダーが含まれています。セキュア・ブートが無効になっている場合、shimブート・ローダーは、ブート・プロセスを続行するために、ESP上のGRUB 2ブート・ローダーを直接ロードします。ブート・ローダー・ファイルには、システム・アーキテクチャに従って名前が付けられます。たとえば、shimブート・ローダーの名前は、x86_64システムではshimx64.efi、aarch64システムではshimaa64.efiです。

    それ以外の場合は、セキュア・ブートが有効な場合、shimブート・ローダーがUEFIセキュア・ブート・キー・データベースに格納されているキーに対して検証され、さらに、UEFIセキュア・ブート・キー・データベースまたはマシン所有者キー(MOK)データベースに格納されている証明書に対してGRUB 2ブート・ローダー署名が検証されます。GRUB 2署名が有効な場合、GRUB 2ブート・ローダーが実行され、ロードするように構成されているカーネルが検証されます。

    セキュア・ブートの詳細は、『Oracle Linux: UEFI Secure Bootの操作』を参照してください。

  4. ブート・ローダーは、vmlinuzカーネル・イメージ・ファイルとinitramfsイメージ・ファイルをメモリーにロードします。カーネルは、initramfsイメージの内容を一時的なメモリーベースのファイル・システム(tmpfs)に抽出します。initramfsには、ブートに必要な必須のドライバおよびユーティリティが含まれています。

  5. ブート・ローダーは、制御をカーネルに渡し、initramfsおよびその他のブート・パラメータへのポインタを提供します。カーネルは、システムの初期化、ハードウェアの検出、必要なドライバのロード、およびルート・ファイル・システムのマウントを続行します。

  6. カーネルは、initramfs内でinitプロセスを検索し、プロセスID 1 (PID 1)で定義済のプロセスを開始します。Oracle Linuxでは、デフォルトのinitプロセスがsystemdとして構成されます。詳細は、『Oracle Linux 8: systemdでのシステムの管理』を参照してください。

  7. systemdは、定義されているすべてのプロセスを実行します。

    ノート:

    systemdユニットを定義して、ブート・プロセス中に処理する他のアクションを指定します。/etc/rc.localファイルを使用することよりも、この方法をお薦めします。