任意のUEFIブートスタブを作成するには?

任意のUEFIブートスタブを作成するには?

メンテナンスオペレーティングシステムとしてTinyCoreをインストールしました。私はGRUB2を与えた。ただし、TinyCoreのインストール手順では、MBRメソッドを使用してGRUB2を追加するように指示します。 (動作しますが、EFIがMBRと互換性があるためです。)理想的には、EFIブートスタブベクトルをTinyCoreの/boot/grubに移動し、TinyCoreのGRUB2から何でも起動できるように接続したいと思います。システムは考えます。あるいは、2番目のオプションは、EFIブートスタブベクトルがTinyCoreのvmlinuzに移動するようにリンクしたいと思います。

TinyCoreにはefibootmgrはありません。 Ubuntu USBスティックから起動すると、efibootmgrに「システムはefivarsをサポートしていません」というメッセージが表示されます。

TinyCoreのgrubディレクトリを別のLinuxボックスにインポートしてgrub.efiを作成してから、このコンピュータに再インポートしてこのコンピュータのESPにコピーする方法はありますか?

ベストアンサー1

Ubuntu USBスティックから起動すると、efibootmgrに「システムはefivarsをサポートしていません」というメッセージが表示されます。

これは、従来の BIOS スタイルを使用して USB スティックから起動するために発生するため、UEFI 互換性サポートモジュールは起動変数にアクセスするために UEFI ランタイムインターフェイスを無効にします。デフォルトのUEFIモードでUSBスティックを起動できる場合は、正常にefibootmgr動作します。ファームウェア起動設定にUEFIまたは従来の起動方法を最初に試す選択肢が含まれている場合は、USBスティックから起動するときに「UEFI優先」モードに切り替えてみてください。

レガシーMBR GRUB2では、レガシーMBRスタイルを使用して起動できるオペレーティングシステムのみを起動できます。デフォルトのUEFIを使用して起動するためにインストールされているオペレーティングシステムに接続するには、UEFIバージョンのGRUB2が必要です。

UEFI GRUBをあるディストリビューションから別のディストリビューションに移植する際の問題は、ディストリビューションごとにわずかに異なる設定になっていることです。たとえば、Debianはgrub.efi他のディストリビューションからより多くのGRUBモジュールを読み込み、GRUBのインストール時に指定されたファイルシステム(通常は/bootディレクトリを含むファイルシステム)の設定ファイルです。

このアプローチの問題は、セキュアブートが有効になっているとこれが不可能であることです。ロードされたすべての実行コードは署名する必要があり、GRUBモジュールは標準のUEFIバイナリと同じバイナリファイル形式を使用しないため、ログイン状態では使用できません。 UEFIファームウェアとして認識されます。

一方、RedHatから派生したディストリビューションは、必要なすべてのGRUBモジュールをデフォルトのgrubx64.efiバイナリに含める傾向があり、その後Secure Bootを介して単一の操作で正常にロードできますshim.efi。 GRUB設定ファイルはESPファイルシステムにも配置され、通常はデフォルトのUEFI GRUBバイナリの名前を反映します。つまり、バイナリの名前が変更されると、foo.efi同じディレクトリから検索されます。foo.cfg

これを知っている場合は、grub.efiセキュアブートが無効になっていることを確認し、RedHat / CentOS / Fedoraインストールメディアからバイナリをインポートして手動で最小設定ファイルを作成し、それをESPに入れます(おそらく\EFI\boot\bootx64.efiUEFIでは\EFI\boot\bootx64.cfg自動的に選択する必要があります)。変数が必要)一度起動します。その後、TinyCoreのデフォルトのGRUB設定ジェネレータで作成されたGRUB設定ファイルがそのGRUBバージョンと互換性があることを確認してから、簡略化された設定ファイルを実際のGRUBに置き換えるか、移植されたGRUBバージョンをTinyCoreのデフォルトUEFIバージョンに置き換えることができます。幼虫。

UEFIファームウェアからTinyCoreを直接起動するには、コンパイルされたvmlinuzカーネルを使用し、CONFIG_EFI_STUB=y起動パラメータとinitramfsファイルをどのように処理するかを把握する必要があります。 UEFIブート変数にブートオプションを設定して、これを一度行いました。ブートローダがないと、起動時に起動パラメータを変更できない可能性があるため、カーネルの更新に問題がある場合にアクセスできるように、事前に異なる起動パラメータを使用して複数のUEFI起動変数設定を作成することをお勧めします。例えば。

(これは、ファームウェアレベルのUEFI起動オプションにUEFIシェルから起動する方法が含まれている場合は、「ブートローダなし」のUEFI起動可能インストールを設定するのに役立ちます。)

UEFIブート変数で使用されているUUIDは、blkidコマンドを実行して取得できます。 GRUBはファイルシステムUUID(=このUUID=フィールド)を使用し、UEFIブート変数はパーティションの一意のUUID(=このフィールドPARTUUID=)を使用します。

おすすめ記事