mkisofs 错误 - 启动映像...efibot.img 不是允许的大小

mkisofs 错误 - 启动映像...efibot.img 不是允许的大小

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

相关内容