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 plain
とcmd
を使用して2つのiso(ubuntuと私のカスタムビルドのISO)を調べる詳細は、次のGist https://Gist.github.com/deitch/e069268f92402d6a2b1c7e060ddba622
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-pc
、grub-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。
これを行う非常に簡単な方法は次のとおりです。
追加efi.img
(ubuntu ISOのboot/grub/efi.imgから)をISOに変換すると、すべてのシステムで起動します。
cat efi.img >> youriso.iso
その後、ISOはcdromとUSBペンドライブの両方として機能します。 :D