web-dev-qa-db-ja.com

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

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

参考までに、libvirt/kvm/qemu/virt-managerを介してこれを起動しようとしていますが、最終的には実際のハードウェアで起動する必要があります。開発環境はopenSUSE Leap 42.1です。 BIOSや複数のプラットフォームをサポートする必要はありません。既存のビルドコードをいじくり回したくはありませんが、少なくとも1つのコメント(@mikeserv)は、ISOがこのための完全に間違ったメカニズムであることを示唆しています(つまり、大規模なハックであり、まったく不要です)。しかし、これには、かなりの時間を要するビルドの完全な改良が含まれます。

このトピックに関するチュートリアルまたは他のよく書かれたページへのリンクは感謝して受け取られます。私はすでにSyslinuxのWebサイトとRod Smithのページを見てきましたが、他のすべてを見るのはすごく疲れました。

4
eewanco

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

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

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

SYSLINUX EFIソフトウェアは光メディアから起動しません。そのため、ほとんどのプロジェクトではGRUB 2(GRUB legacy)ではなく)を使用し、それをISOLINUX BIOSソフトウェアと組み合わせます Debian netinst AMD64 ISO たとえば、ISOのGRUB構成にホップするだけの十分なGRUB脳を持つ小さなFATイメージがあります。 openSUSE NET-x86_64 ISO の方が大きいです。

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

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

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

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

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

Debianでは、BIOSの場合はgrub-pcgrub-efi-ia32-bin、x86_64 EFIの場合はgrub-efi-AMD64-binのパッケージをインストールする必要があります。ペイロードをディレクトリツリーに準備して実行する

grub-mkrescue -o output.iso my_prepared_dir

SuSEはDebianと同様のGRUBパッケージを提供しており、BIOSおよび/またはEFI機器を生成するためにgrub-mkrescueを実行するように構成しています。

5
Thomas Schmitt