我正在尝试编写一个脚本来解压和重新打包 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模式。
有谁知道出了什么问题?
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |