web-dev-qa-db-ja.com

カスタムビルドisoがEFIで起動しないのはなぜですか?

Mkisofsモードでxorrisoを使用してカスタムisoを構築しています。ビルドは正しいようですが、後でisoを検査すると2つのブートイメージ(1つのBIOS、2つのUEFI)が表示されますが、OVMFファームウェアを使用してqemuからISOにブートすると、ブート可能なメディアが見つかりません。

Qemuでまったく同じブートを試しますが、クリーンにダウンロードされたubuntu 16.04サーバーisoを使用すると、問題なくブートします。

BIOS(UEFIではない)を使用している場合、どちらも正常に起動します。

xorrisoコマンド:

xorriso -as mkisofs \
   -l -J -R -V version \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
   -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
   -isohybrid-mbr isohhdpfx.bin \
   -eltorito-alt-boot -e EFI/BOOT/BOOTX64.EFI -no-emul-boot \
   -isohybrid-gpt-basdat \
   -o testos.iso ./cddir/

xorriso -report_el_torito plaincmdを使用して2つのiso(ubuntuと私のカスタムビルドのISO)を調べる詳細は、次のGist https://Gist.github.com/deitch/e069268f92402d6a2b1c7e060ddba622

5
deitch

xorrisoをご利用いただきありがとうございます。

問題は、xorrisoにEFIシステムパーティションとしてマークを付けさせたイメージファイルにあります。これは、/EFI/BOOT/BOOTX64.EFI(または32ビットx86の場合は.../BOOTIA32.EFI)という名前のバイナリファイルとその他のファイルを含むFATファイルシステムイメージであると想定されています。コンテンツについて学習するには、Ubuntu ISOから/boot/grub/efi.imgファイルをマウントします。

Ubuntuなどで使用されているFATファイルシステムは、おそらくGRUB2プログラムgrub-mkimageで作成されています。 ISOLINUX/SYSLINUX EFIソフトウェアは、CD-ROMデバイスを参照するとエラーが発生するため、使用できません。

ブータブルISOを取得する非常に便利な方法は、プログラムgrub-mkrescueです。 GRUB2がBIOSおよびEFI用に構成されている場合(たとえば、バイナリパッケージgrub-pcgrub-efi-AMD64、およびgrub-efi-ia32をインストールすることにより)、grub-mkrescueは、BIOSおよびEFIで起動するISOを生成します32ビットおよび64ビットのx86マシン:BIOSおよびEFIのEl Toritoブートイメージ、BOOTX64.EFIおよびBOOTIA32.EFIのEFIイメージ、ハードディスクのBIOSのMBR、ハードディスクのEFIのGPT。

8
Thomas Schmitt

これを行う非常に簡単な方法は次のとおりです。

追加efi.img(ubuntu ISOのboot/grub/efi.imgから)をISOに変換すると、すべてのシステムで起動します。

cat efi.img >> youriso.iso

その後、ISOはcdromとUSBペンドライブの両方として機能します。 :D

0
Zibri