我正在嘗試從 rhel-8 安裝磁碟建立自訂 ISO,該磁碟可以在 BIOS 或 EFI 伺服器上啟動。一切都很順利,直到我嘗試創建 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。我究竟做錯了什麼?
答案1
看來我需要這個-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
答案2
從手冊頁:
-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分割區的部分)。
順便說一句,在寫入 USB 之前isohybrid --uefi new.iso
需要命令。
似乎有很好的相關貼文+討論Fedora 17 ISO 鏡像剖析,我還沒讀完。
PS 為什麼許多其他選項很重要(例如,除了 4 之外,沒有任何大小似乎可以解決)我還沒有找到(截至目前為止)。-e
我的系統上的手冊頁中似乎沒有該選項,但可以使用。https://wiki.osdev.org/Mkisofs:
-e ISOPATH 宣布一個資料檔作為 EFI 的 El Torito 啟動映像。這不是原始 mkisof 的選項,但可以被 genisoimage 的某些變體和 xorriso -as mkisof 理解。