#!/bin/bash
# The example names get mapped to their roles here
orig_iso="$HOME"/iso/foxclone.iso
new_iso="$HOME"/iso/foxclone025-02.iso
mbr_template="$HOME"/isohdpfx.bin
workdir="$HOME"/work
echo $HOME
echo $workdir is workdir
# Extract MBR template file to disk
dd if="$orig_iso" bs=1 count=432 of="$mbr_template"
# Create the new ISO image
xorriso -as mkisofs \
-U \
-allow-lowercase \
-r -V 'foxclone025-02' \
-o "$new_iso" \
-J -J -joliet-long \
-isohybrid-mbr "$mbr_template" \
-b "$workdir"/isolinux/isolinux.bin \ <-------- fails here. The file does exist at that location.
-c isolinux/boot.cat \
-boot-load-size 4 -boot-info-table -no-emul-boot \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus
终端错误 我已经花了两天时间试图解决这个问题,做了大量研究。有人发现我的眼睛漏掉了什么吗?
编辑:通过更改行来修复它:
xorriso -as mkisofs \
到
xorriso -as mkisofs "$workdir" \
并删除行$workdir
中的引用-b
答案1
xorriso 的投诉表明 ISO 中未找到 -b 文件。在命令中我看到了两个原因:
1:您使用绝对磁盘路径,而不是ISO中的路径。
2:没有 xorriso 参数来查看文件将通过哪个参数进入 ISO。实际上似乎根本没有文件被映射到 ISO 中。
提议:
如果您想要 ISO 中“$workdir”的所有文件,请添加参数“$workdir”。
如果您希望 isolinux.bin 出现在 ISO 的 /isolinux/ 中,请从选项 -b 的路径中删除前缀“$workdir”/,以便该路径符合 mkisofs 和 xorrisofs (*) 的规定。
xorriso -as mkisofs ... -b isolinux/isolinux.bin ... "$workdir"
(*) mkisofs 要求“相对于源路径”的磁盘路径,xorrisofs 要求在新 ISO 中的路径。ISO 中的默认工作目录是 /。因此路径“isolinux/isolinux.bin”可用且建议两者使用。
了解 Debian 原则上如何打包其 x86 可启动 ISO: https://wiki.debian.org/RepackBootableISO#Remove_the_unneeded_Jigdo_production_options
(xorriso 的支持邮件列表是[电子邮件保护]。
祝你今天过得愉快 :)
托马斯