我正在尝试从 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 理解。