EFI と GRUB2 バイナリの入手先とブートシステムのマウント方法

EFI と GRUB2 バイナリの入手先とブートシステムのマウント方法

UEFI と GRUB2

grub2 を起動するためのバイナリ
(bootia32.efi および bootx64.efi) を入手できるサイトを知っている人はいますか...
また、GRUB2 バイナリも... これに関する優れたチュートリアル ヘルプも教えてください...

こんな感じのマルチブートディスクを作りたいのですが…

EFI
    \BOOT
        \bootia32.efi
        \bootx64.efi
        \<grub-binaries>
        \<grub-background-image>
        \<grub-configuration-file>

    \AndroidX86v6
    \Microsoft
    \Ubuntu
    \Tails
    \Kali
    ...

答え1

およびbootx64.efibootia32.efiEFIフォールバックブートローダープログラムを指します。このプログラムは何でも-- GRUB、Windows ブート ローダー、EFI シェル、マルウェアなど。したがって、その名前でプログラムを検索しないでください。実際の名前 (質問では GRUB) でプログラムを検索し、ブート メディアでEFI\BOOT\bootx64.efiまたはEFI\BOOT\bootia32.efi(プラットフォームによって異なります) に名前を変更する必要があります。実際、コンピューターの内蔵ハード ディスクにインストールする場合は、その名前をまったく使用しない方がよいでしょう。代わりに、起動するバイナリの名前を記憶するために、EFI 自体の組み込みブート マネージャーに頼る必要があります。(例外は、ファームウェアがひどく壊れている場合です。まだ一部にそのようなものがあります。) ファイル名は、もともと OSboot{arch}.efiインストーラーや緊急回復ツールなどの起動可能なリムーバブル ディスクでのみ使用することを意図していましたが、NVRAM エントリが破損した場合など、内蔵ハード ディスク上の最後の手段としてのブート ローダーにも使用されます。

質問の主旨に関して言えば、GRUBバイナリは個々のディストリビューションによってビルドされる傾向があり、私の知る限り、EFI用の「GRUB」バイナリの公式ソースはありません。入手する通常の方法は、1つのGRUB バイナリは、それを使用する Linux ディストリビューションをインストールするためのものです。これは通常 としてインストールされます/boot/efi/EFI/{distname}/grubx64.efi。ここで は、Ubuntu やFedora{distname}などのディストリビューションで使用されるコードです。ただし、このバイナリを移動して名前を変更するだけでは機能しない可能性があることに注意してください。これは、バイナリの構成ファイルへのパスがハードコードされている可能性があるためです。ターゲット コンピュータでも Secure Boot が使用されている場合は、またはファイルをフォールバック ファイル名として名前変更し、その名前を使用して を Shim と同じディレクトリにコピーする必要があります。1 台のコンピュータにインストールする場合は、GRUB の移動や名前変更に煩わされることはありません。通常どおりインストールするだけで、少なくとも次のディストリビューションをインストールするか、何かによってブート順序が再構成されるまでは、GRUB がブート プロセスを引き継ぎます。ubuntufedorashimx64.efishim.efigrubx64.efi

複数の Linux ディストリビューションがあるシステムでは、GRUB は少々扱いにくいかもしれません。これは、GRUB がブート オプションのメニューを作成するために複雑な設定ファイルに依存しており、その設定ファイルは GRUB をインストールしたディストリビューション内で維持されるためです。これは、1 つの Linux ディストリビューションだけをインストールする場合は問題なく機能しますが、複数のディストリビューションがある場合は、新しいカーネルをインストールしたディストリビューションで GRUB を更新する必要があります。他のディストリビューション。別の方法としては、ある GRUB を別の GRUB からチェーンロードする方法がありますが、これはより適切に機能するかもしれませんが、起動時に面倒になります。

もう1つのアプローチは、より複雑な設定を必要としないブートマネージャを使用することです。私自身は再検索はこれが可能です。ブートごとに Linux カーネルを検出するので、一度セットアップすれば、自身の設定を変更せずに最新のカーネルを起動できます。SYSLINUX や ELILO などの他のブート ローダーでは、集中化された構成ファイルで GRUB スタイルの構成が必要ですが、そのファイルはより単純なので、手動で管理するのが簡単です。これらのツールのいずれかをリムーバブル ディスクで使用する場合は、それをファイル名にコピーする必要がありますboot{arch}.efi

これらすべてには、他にも数多くの注意点や癖がありますが、あなたの使用目的やハードウェアについて詳しく知らないため、ここでそれらすべてを説明するには、小さな本を書くしかありません。詳細については、次のサイトのいずれかまたは複数を参照してください。

答え2

grub を使用して UEFI PXE ブートまたは UEFI HTTP ブートを実行するだけの場合は、インストールなしでビルド済みのバイナリをここで入手できます。 https://images.maas.io/ephemeral-v3/stable/bootloaders/uefi/amd64/20230222.0/

shim-signed.tar.xz
grub2-signed.tar.xz

解凍すると、

bootx64.efi
grubx64.efi

次に、それらを提供するための TFTP サーバーと HTTP サーバーを準備し、TFTP/HTTP 経由で grub/grub.cfg を準備します。

私は上記の方法をうまく使ってきました。

インストールなしで入手できる便利な場所もいくつかあります。 http://archive.ubuntu.com/ubuntu/dists/jammy/main/uefi/grub2-amd64/current/

(ジャミーをフォーカルまたはバイオニックに変更できます)

...
grubnetx64.efi
grubnetx64.efi.signed
grubx64.efi
grubx64.efi.signed

試していませんが、grubnetx64.efi.signedのネットバージョンを意味すると思いますgrubx64.efi.signed。ただし、 *.efi.signed と *.efi の違いについてはよくわかりません。

bootx64.efiはここにあります http://archive.ubuntu.com/ubuntu/dists/jammy/main/signed/shim-amd64/current/解凍したファイルの名前を bootx64.efi に変更するだけです。

関連情報