為什麼我的自定義建構 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/
檢查 2 iso(ubuntu 和我定制的)的詳細資訊
xorriso -report_el_torito plain
在cmd
以下要點中https://gist.github.com/deitch/e069268f92402d6a2b1c7e060ddba622
謝謝你飛
xorriso
。問題出在您讓 xorriso 標記為 EFI 系統分區的圖像文件中。它應該是一個 FAT 文件系統映像,其中包含一個名為
/EFI/BOOT/BOOTX64.EFI
(或…/BOOTIA32.EFI
對於 32 位 x86)以及可能的其他文件的二進製文件。從 Ubuntu ISO 掛載文件 /boot/grub/efi.img 以了解其內容。Ubuntu 和其他人使用的 FAT 文件系統可能是由 GRUB2 程序 grub-mkimage 生成的。無法使用 ISOLINUX/SYSLINUX EFI 軟體,因為它在看到 CD-ROM 設備時會退出。
獲取可引導 ISO 的一種非常方便的方法是程序
grub-mkrescue
。如果為 BIOS 和 EFI 配置了 GRUB2(例如,通過安裝二進制包grub-pc
、grub-efi-amd64
和grub-efi-ia32
),那麼grub-mkrescue
將生成一個在 32 位和 64 位 x86 機器的 BIOS 和 EFI 上啟動的 ISO:El Torito BIOS 和 EFI 啟動映像,EFI 映像具有BOOTX64.EFI
和BOOTIA32.EFI
,MBR 用於硬碟的 BIOS,GPT 用於硬碟的 EFI。