web-dev-qa-db-ja.com

GRUB 2はUEFIを使用する複数のLinuxパーティションでどのように機能しますか?

新しいLinuxをインストールすると、インストーラーはブートローダー(efiファイル)をEFIパーティションにインストールし、メニューエントリをNVRAMで更新します。また、新しく追加されたブートローダーをデフォルトとして設定する可能性があります。ブートローダーは/boot/grub/grub.cfgを読み取り、カーネルとinitrdをロードします。

私の質問は、ESPに複数のブートローダー(.efi)が存在する場合、それらは同一ですか?それらはすべてGRUB2であるためです。それらのそれぞれがシステム内のすべてのカーネルを検出できますか?

各OSのパーティションには/boot/grub/grub.cfgファイルがあるため、デフォルトのブートローダーによって読み取られるのはどれですか。

4
user3346398

私の質問は、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ページ も参照してください。

5
Faheem Mitha