mkisofs と -eltorito-boot efiboot.img を使用して UEFI ブート可能なイメージを作成する

mkisofs と -eltorito-boot efiboot.img を使用して UEFI ブート可能なイメージを作成する

現在 BIOS 経由で起動する既存のカスタム USB ISO インストーラー イメージを、UEFI 経由で起動するイメージに変換しようとしています。mkisofsと を使用してisohybridISO を作成し、ISOLINUX 経由で起動します。-eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.imgUEFI ブートを有効にするにはオプションを使用する必要があることはわかっていますが、Google でその入手先を示すページが見つかりませんefiboot.img。誰もがそのソース ファイルをどこで入手できるかを示していますが、誰もがすでに入手済みであると想定しています。これはどのように構築または取得するのでしょうか。manのページはmkisofs役に立ちません。 を使用する必要がありますかxorriso?

ちなみに、私はこれを libvirt/kvm/qemu/virt-manager 経由で起動しようとしていますが、最終的には実際のハードウェアで起動する必要があります。開発環境は openSUSE Leap 42.1 です。BIOS や複数のプラットフォームをサポートする必要はありません。既存のビルド コードをあまりいじりたくないのですが、少なくとも 1 つのコメント (@mikeserv) で、ISO はこれにまったく適さないメカニズムであることが示唆されています (つまり、これはひどいハックであり、まったく不要です)。ただし、それにはビルドを完全に作り直す必要があり、かなりの時間がかかります。

このトピックに関するチュートリアルやその他のよく書かれたページへのリンクをいただければ幸いです。私はすでに Syslinux の Web サイトと Rod Smith のページを見ましたが、他のすべてを見るのに完全に疲れてしまいました。

答え1

xorriso を使用する必要がありますか?

必ずしもそうではありません。EFI システム パーティションを El Torito ブート イメージとしてマークできる ISO プロデューサーが必要です。mkisofsおそらく、あなたが言及したオプションで十分でしょう。isohybrid --uefi後で適用して、ハード ディスクのようなデバイスからブート可能にすることができます。(動作させるには、ISOLINUX BIOS ブート イメージも必要になる場合がありますisohybrid 。)

主な問題は、EFI システム パーティション ファイルが必要であることです。このファイルは、FAT イメージ内または囲む ISO 9660 ファイル システム内にあるオペレーティング システム ファイルを起動するために必要なプログラムを含む FAT ファイル システム イメージである必要があります。

SYSLINUX EFI ソフトウェアは光学メディアから起動しません。そのため、ほとんどのプロジェクトでは、その目的で GRUB 2 (GRUB レガシーではない) を使用し、それを ISOLINUX BIOS ソフトウェアと組み合わせています。 Debian ネットインスト amd64 ISOたとえば、ISOのGRUB設定に飛び乗るのに十分なGRUBの頭脳を備えた小さなFATイメージがあります。openSUSE NET-x86_64 ISO大きいです。

DebianのEFI機器を検査するには、ISOとしてマウントし、そのファイルをFATとしてマウントします。プログラムによって検査された/boot/grub/efi.imgファイルの中には、 埋め込まれたGRUB構成が含まれていることがわかります。/efi/boot/bootx64.efistrings

search --file --set=root /.disk/info
set prefix=($root)/boot/grub
source $prefix/x86_64-efi/grub.cfg
(memdisk)/boot/grub

FAT イメージ ファイルは GRUB プログラムによって作成されたと理解しています mkimage。このファイルは/.disk/infoDebian ISO にのみ存在すると考えられるため、searchこれを使用して ISO ファイルシステムを見つけることができます。

SuSE ISO では、FAT イメージは という名前です/boot/x86_64/efi。Debian のものよりも多くのものが含まれています。EFI ブート ファイルの他に、 と、私の GRUB の知識を超えたその他のファイルbootx64.efi があります。grub.cfg

起動可能な ISO の開発を最初から始める場合は、GRUB プログラムを使用して ISO を作成することを検討してくださいgrub-mkrescue。(それが本当に必要なときです xorriso。私はその開発者です。)

grub-pcDebianでは、grub-efi-ia32-binBIOS用に、、 x86_64 EFI用にパッケージをインストールする必要がありますgrub-efi-amd64-bin。ディレクトリツリーにペイロードを用意し、以下を実行します。

grub-mkrescue -o output.iso my_prepared_dir

grub-mkrescueSuSE は Debian と同様の GRUB パッケージを提供しており、 BIOS や EFI 機器を生成するように実行するよう構成されていると思います。

関連情報