#!/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" \ 并删除-b行中对D5的引用。
发布于 2020-01-01 10:45:45
xorriso的抱怨说,-b文件没有在国际标准化组织中找到。在命令中,我看到了这样做的两个原因:
1:您使用绝对磁盘路径而不是ISO中的路径。
2:没有xorriso参数可以查看文件将通过什么方式进入ISO。实际上,根本没有文件被映射到ISO中。
提案:
如果你想要所有的文件"$workdir“在国际标准化组织,添加参数"$workdir”。
如果您期望isolinux.bin出现在ISO的/isolinux/中,则从选项-b的路径中删除前缀"$workdir"/以便路径符合mkisofs和xorrisofs (*)的规定。
xorriso -as mkisofs ... -b isolinux/isolinux.bin ... "$workdir"(*) mkisofs要求磁盘路径“相对于源路径”,而xorrisofs则要求新出现的ISO中的磁盘路径。国际标准化组织中的默认工作目录是/。因此,路径“isolinux/solinux.bin”是可用的,并建议两者都使用。
参见Debian如何原则上打包其x86可引导的ISO:https://wiki.debian.org/RepackBootableISO#Remove_这个_不需要_吉多_生产_选项
( xorriso的支持邮件列表是bug-xorriso@gnu.org)
祝你今天愉快:)
托马斯
https://askubuntu.com/questions/1199870
复制相似问题