如何使用 mkisofs 创建一个 FreeBSD ISO,它将在 UEFI 下的 VirtualBox 中启动?

Rox*_*oxy 5 freebsd iso

我正在尝试编写一个脚本来解压和重新打包 FreeBSD ISO,这样我就可以使用它进行安装。目标是无人值守的安装。

我已经编写了以下脚本,但它不起作用。虽然原始 ISO 将在 UEFI 模式下在 VirtualBox 中启动,但新创建的 ISO 不会。

#!/bin/sh

inst_cfg="$1"
src_iso="$2"
dst_iso="$3"

iso_mnt=$(mktemp -d /tmp/freebsd-mnt-XXXXXX)
iso_wrk=$(mktemp -d /tmp/freebsd-wrk-XXXXXX)

vol_id=$(isoinfo -d -i "${src_iso}" | sed -n -e 's/^Volume id: \(.*\)$/\1/p')

md_name=$(mdconfig -a -t vnode -f "${src_iso}")
mount -t cd9660 "/dev/${md_name}" "${iso_mnt}"

cp -a -v "${iso_mnt}/" "${iso_wrk}"
cp "${inst_cfg}" "${iso_wrk}/etc/installerconfig"
mkisofs -J -R -no-emul-boot -V "${vol_id}" -b boot/cdboot -o "${dst_iso}" "${iso_wrk}"

umount "${iso_mnt}" # cd9660
mdconfig -d -u "${md_name}"

rm -rf "${iso_mnt}"
rm -rf "${iso_wrk}"
Run Code Online (Sandbox Code Playgroud)

创建的文件系统看起来不错。我已经区分了原始和自定义 ISO 的installerconfig文件,唯一的区别是添加的文件和boot.catalog(我理解mkisofs添加,但为什么?这可能是问题吗?)

我尝试了各种选项组合mkisofs,包括-R -U, -L -D -R, -J -R,但没有任何区别。

此外,有趣的是FreeBSD 手册有以下评论:

因此,如果 /tmp/myboot 拥有一个可引导的 FreeBSD 系统,其引导映像位于 /tmp/myboot/boot/cdboot 中,则此命令将生成 /tmp/bootable.iso:

mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

这并没有产生一个ISO,根据VirtualBox的靴子在UEFI模式。

有谁知道出了什么问题?