Linux

mkisofs 錯誤 - 啟動映像…efibot.img 不是允許的大小

  • November 29, 2021

我正在嘗試從可以在 BIOS 或 EFI 伺服器上啟動的 rhel-8 安裝磁碟創建自定義 ISO。一切都很好,直到我嘗試創建iso。如果我執行以下命令:

mkisofs -J -R -T -V "NGS-8.4-0 Server" \
   -o ngs-8.4-0.iso \
   -b isolinux/isolinux.bin \
   -c isolinux/boot.cat \
   --no-emul-boot \
   --boot-load-size 4 \
   --boot-info-table \
   --eltorito-alt-boot \
   -e images/efiboot.img \
   -m TRANS.TBL \
   ngs-dvd

我得到以下輸出:

Creating NGS iso...I: -input-charset not specified, using iso-8859-1 (detected in locale settings)

(bunch of TRANS.TBL output deleted)

Size of boot image is 4 sectors -> No emulation
Size of boot image is 19612 sectors -> genisoimage: Error - boot image '/NGS/ngs-dvd/images/efiboot.img' has not an allowable size.

但是,如果我刪除兩個選項 ( --eltorito-alt-boot& -e images/efiboot.img),它會創建一個可引導的 iso。我究竟做錯了什麼?

看來我需要該-no-emul-boot選項兩次。每個引導映像(BIOS 和 EFI)一個。最終的工作配置是:

/usr/bin/mkisofs -J -R -T -V "NGS-8.4-0 Server" \
   -o ngs-8.4-0.iso \
   -b isolinux/isolinux.bin \
   -c isolinux/boot.cat \
   -no-emul-boot \
   -boot-load-size 4 \
   -boot-info-table \
   -eltorito-alt-boot \
   -e images/efiboot.img \
   -no-emul-boot \
   -m TRANS.TBL \
   ngs-dvd

從手冊頁:

-eltorito-alt-boot 從一組新的 El Torito 引導參數開始。一張 CD 上最多可儲存 63 個 El Torito 引導條目。

因此,您需要-no-emul-boot再次添加的答案中的發現-eltorito-alt-boot意味著添加的 EFI 圖像-e也需要-no-emul-boot正常工作,並且由於它是下一個 El Torito 條目並以新的參數集開始,因此需要再次明確列出所需的參數。

從問題:

但是,如果我刪除兩個選項(–eltorito-alt-boot & -e images/efiboot.img),它會創建一個可引導的 iso。

我最初也是這樣做的,它創建了只導致傳統啟動的iso(沒有EFI,-e添加了稍後成為USB上的EFI分區的部分)。

順便說一句,在寫入 USBisohybrid --uefi new.iso命令之前是必需的。

似乎有很好的相關 post+discussion Anatomy of a Fedora 17 ISO image,我還沒有全部閱讀。

PS 為什麼許多其他選項很重要(例如,除了 4 似乎沒有任何尺寸)我無法找到(截至目前)。-e我的系統上的手冊頁中似乎沒有選項,但有效。https://wiki.osdev.org/Mkisofs

-e ISOPATH 將數據文件宣佈為 EFI 的 El Torito 引導映像。這不是原始 mkisofs 的選項,但可以被 genisoimage 的一些變體和 xorriso -as mkisofs 理解。

引用自:https://unix.stackexchange.com/questions/675211