UEFIベースのブートについて
Oracle Linuxリリースを実行しているUEFIベースのシステムでは、システム・ブート・プロセスでは次のシーケンスが使用されます:
-
システムの電源が投入されると、システムは電源オン・セルフテスト(POST)を実行して、システムのコア・ハードウェア・コンポーネント(CPUやメモリーなど)を検出およびチェックします。その後、UEFIファームウェアが初期化されます。
-
UEFIファームウェアは、ネットワーク・デバイスやストレージを含め、周辺機器コンポーネントなどの他のハードウェアを検出します。UEFIファームウェアには、様々なストレージ・デバイス上のブート・ローダーと直接対話できる独自のブート・マネージャが含まれています。ブート・マネージャは、様々なブート・デバイスや検出されたブート・ローダーの優先度を含む一連の変数を格納します。
UEFIは、EFIシステム・パーティション(ESP)として識別する特定のグローバル一意識別子(GUID)を持つFAT32形式のGPTパーティションを検索します。このパーティションには、ブート・ローダーなどのEFIアプリケーションやその他の構成ファイルが含まれています。
複数のブート・デバイスが存在する場合、UEFIブート・マネージャは、ブート・マネージャで定義された順序に基づいて適切なESPを使用します。
efibootmgr
ツールでは、デフォルト定義を使用しない場合に、別の順序を定義できます。 -
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の操作』を参照してください。
-
ブート・ローダーは、
vmlinuz
カーネル・イメージ・ファイルとinitramfs
イメージ・ファイルをメモリーにロードします。カーネルは、initramfs
イメージの内容を一時的なメモリーベースのファイル・システム(tmpfs
)に抽出します。initramfs
には、ブートに必要な必須のドライバおよびユーティリティが含まれています。 -
ブート・ローダーは、制御をカーネルに渡し、
initramfs
およびその他のブート・パラメータへのポインタを提供します。カーネルは、システムの初期化、ハードウェアの検出、必要なドライバのロード、およびルート・ファイル・システムのマウントを続行します。 -
カーネルは、
initramfs
内でinit
プロセスを検索し、プロセスID 1 (PID 1)で定義済のプロセスを開始します。Oracle Linuxでは、デフォルトのinit
プロセスがsystemd
として構成されます。詳細は、『Oracle Linux 8: systemdでのシステムの管理』を参照してください。 -
systemd
は、定義されているすべてのプロセスを実行します。ノート:
systemd
ユニットを定義して、ブート・プロセス中に処理する他のアクションを指定します。/etc/rc.local
ファイルを使用することよりも、この方法をお薦めします。