新しいLinuxをインストールすると、インストーラーはブートローダー(efiファイル)をEFIパーティションにインストールし、メニューエントリをNVRAMで更新します。また、新しく追加されたブートローダーをデフォルトとして設定する可能性があります。ブートローダーは/boot/grub/grub.cfg
を読み取り、カーネルとinitrdをロードします。
私の質問は、ESPに複数のブートローダー(.efi)が存在する場合、それらは同一ですか?それらはすべてGRUB2であるためです。それらのそれぞれがシステム内のすべてのカーネルを検出できますか?
各OSのパーティションには/boot/grub/grub.cfg
ファイルがあるため、デフォルトのブートローダーによって読み取られるのはどれですか。
私の質問は、ESPに複数のブートローダー(.efi)が存在する場合、それらは同一ですか?それらはすべてgrub2なので。それらすべてがシステム内のすべてのカーネルを検出できますか?
ディスクに複数のUEFI Linuxインストールが存在する場合、それらは通常同じEFIシステムパーティション(ESP)を使用しますが、それぞれのEFI実行可能ファイルは、EFI/bootloader-id
という形式のESPの異なるサブディレクトリにあります。 EFI実行可能ファイルの名前は同じです。 64ビットインストールの場合はgrubx64.efi
です。したがって、EFI変数はEFI/bootloader-id/grubx64.efi
に配置されます。
これらの実行可能ファイルは、それぞれのシステムで実行されているgrub-install
によってインストールされますが、grub-install
を使用して--efi-directory
をそのパーティションにポイントする必要がある場合があります。また、bootloader-id
と--bootloader-id
の値を選択する必要がある場合もあります。 Linuxディストリビューションが異なれば、bootloader-id
のデフォルトも異なります。たとえば、Debianのデフォルトはdebian
です。 grub-install
オプションの詳細については、man grub-install
を参照してください。
grub-install
は、UUIDを使用して、ブート/ルートデバイスの名前を実行可能ファイルに固定します。
これらのEFI実行可能ファイルは、マザーボード上のEFIファームウェアによって実行されます。 EFI実行可能ファイルはLinuxインストールのブート/ルートデバイスを認識しているため、grub.cfg
の位置はブート/ルートデバイスに対して固定されているため、EFI実行可能ファイルは対応する/boot/grub/grub.cfg
を実行できます。そのインストールに。そしてgrub.cfg
には、システムにインストールされているカーネルの名前を含む、ブートに必要なすべての情報が含まれています。
Arch Wiki GRUB page は、これらの問題を十分にカバーしています。 Debian Wiki UEFIページ も参照してください。