在Ubuntu中编辑可启动的ISO文件

我收到了一个ISO文件,它是一个带有一些额外位的WindowsPE镜像。我需要向其中添加一些文件。它仍然需要能够引导启动。
我尝试了isomaster,它工作得很好,大部分情况下都没问题,但是它不显示长文件名,并且如果我编辑它,会破坏(全部!)长文件名。xorriso也是一样的(我尝试了“-readfs any,norock, nojoliet, ecma119”)。
如果我在Ubuntu中挂载这个ISO,它可以正常显示长文件名。
Xorriso还警告说:“发现隐藏的El-Torito镜像。无法确定其大小,因此修改镜像或引导镜像修补可能会导致不良结果。”
我该如何向这个ISO添加文件?

xorriso 1.4.6,isomaster 1.3.13-1,都来自于Apt。 - AMADANON Inc.
2个回答

xorriso命令

-boot_image "any" "keep"

在执行命令"-dev"之前,ISO启动可能会保持可引导状态。这取决于存在的引导设备是什么。 多会话的一个大障碍可能是UDF文件系统的存在。 我没有可引导的MS-Windows ISOs。所以我无法进行实验。
在"-dev"之前执行命令"-read_fs "norock,nojoliet""可以阻止从ISO 9660 Rock Ridge树或Joliet树加载长名称。 我猜想微软只写入了自己的Joliet而不是我们的Rock Ridge。 建议:省略"-read_fs"并让xorriso决定要加载哪个树。
要列出所有已加载的文件名而不进行刻录,请按以下步骤执行。
xorriso -indev $the_iso -find / -- 2>&1 | less

更新:
我找到了 Win10_1607_English_x64.iso。它是一个带有小型 ISO 9660 树的 UDF,只包含一个文件 /README.TXT。如果你显式地挂载 -t iso9660(自动默认为 -t udf),你就可以看到它。文本内容如下:
This disc contains a "UDF" file system and requires an operating system
that supports the ISO-13346 "UDF" file system specification.

这个图像包含一个El Torito目录,其中引用了两个启动镜像。一个是用于BIOS的,一个是用于EFI的,xorriso可以保留它们。但是考虑到有效载荷只存在于UDF树中,所以xorriso的ISO 9660多会话功能没有用处。

我确实希望使用长文件名 - xorriso和isomaster在大多数ISO文件上似乎可以正常处理长文件名,但在这个ISO文件上却不行。 - AMADANON Inc.
我理解你的目标(和沮丧)。但至少我找到的Win10“.iso”不是以ISO 9600文件系统提供其文件,而是以其(我可以说“恼人的”吗?)专用继任者UDF(又名ISO-13346)提供。引导入口点类似于ISO 9660,但超级块和目录树不同。我不知道GNU / Linux中是否有任何UDF多会话工具。(mkisofs仅针对视频进行单个会话的UDF。) - Thomas Schmitt

另一个选择是在WINE中使用Imgburn。我自己尝试过,至今还没有遇到任何错误。(至少在Wine 1.6版本中)请注意,如果你最终选择了Imgburn,请不要运行默认安装程序,因为它附带了广告软件。相反,使用7-zip打开安装程序的EXE文件并提取实际的程序。只是提醒一下 - 实际的程序完全合法和安全。只是它附带的安装程序使用了OPENCANDY
一旦你成功运行了Imgburn,你会发现它是一个非常强大的程序。
你需要将ISO挂载到文件系统并提取其中的内容(请注意,这部分不使用Imgburn),然后将ISO的内容复制到你选择的文件夹中。完成这些步骤后,你可以修改所需的文件。完成修改后,你可以使用Imgburn将其重新构建为ISO文件。你需要指定引导扇区文件为ISO内部的etfsboot.com文件。

enter image description here