ISO 主控

ISO 主控

我正在寻找可用于编辑ISO 映像。包括可启动的 ISO 映像,如 Ubuntu 和 Windows ISO。不仅可以编辑,还可以保存已编辑的 ISO,并且在刻录到 USB 驱动器或 CD/DVD 上时仍可启动。

答案1

ISO 主控 安装 isomaster

我以前使用过 ISO Master 向 ISO 添加文件。它非常适合您的需要,因为它保留了 ISO 是否可启动的状态。我过去曾用它向实时磁盘添加其他内容(如音乐)。但请注意,对 ISO 文件进行更改后,您只能“另存为”,即会创建另一个 ISO 文件,因此请确保您有足够的磁盘空间来保存这两个文件。

异构体

答案2

对此的常见答案是解压 iso 文件,修改它,然后重新打包。看起来“ISO Master”(如 dv3500ea 的回答中提到的)是执行此操作的良好前端。

如果:

  • 你没有足够的空间
  • 你只想进行细微修改,而不是重写整个内容
  • 您想要修改包含 isofs 文件系统(又名 iso9660)的存储设备,但不复制整个设备,或者
  • 如果你认为拆包/重新打包这件事只是不够黑客

那么这个答案就是为你准备的!

总之,我们将用我们想要的文件替换 isofs 文件系统中的现有文件。我们想要的文件必须小于现有(目标)文件,并且尾随空格(或垃圾)必须是可以接受的。这实际上只需要两个命令,但要小心:输入错误可能会完全破坏目标文件系统,甚至覆盖源文件。备份是你的好朋友!

就我而言,我想在实时启动中存储一个脚本,这样我就不必每次都重新输入它。脚本位于script.py,我的目标(USB 棒)位于/dev/sdc。脚本的大小为 202 字节,因此我们的第一步是找到一个大于 202 字节的文件,以便我们可以覆盖它。在 上安装它后/mnt,我在 找到了一个合适的文件/mnt/info.txt

我们不能直接info.txt在挂载点上覆盖,否则它会抱怨这是一个只读文件系统。但是我们是 root,所以让我们告诉他们这意味着什么!我们需要找出info.txt文件系统上的 。找到一些(可能)唯一的字符串info.txt,例如This is the official distribution CD of X.,然后在磁盘上搜索它:

$ sudo strings -a -t d /dev/sdc | grep 'CD of X.'
2573588480 This is the official distribution CD of X. See INSTALL for how to [...]

或者,也可以使用 grep 来完成此操作,这样速度要快得多,但您需要从一开始就指定它:$ sudo grep -oba 'This is ...' /dev/sdc

现在我们知道它在哪里,我们只需要用我们的文件替换那些字节:

$ sudo dd if=script.py of=/dev/sdc conv=notrunc bs=1 seek=2573588480 count=202

这一行:

  • 将字节从输入文件(if)复制到输出文件(of),并且它不关心输出文件实际上是否是一个设备,因为“一切都是文件”。
  • conv=notrunc告诉它不要截断输出文件,因为我们只想覆盖几个字节,而不是从某个点开始覆盖文件。
  • bs=1将块大小设置为 1。您通常希望块大小为 4k 或更高,但是这样既避免了进行(内联)数学运算,又让我们可以指定精确到字节的位置。
  • seek=N在输出文件中寻找某个点(请注意,这seek=N与 不同,skip=N因为skip跳过了输入文件中的字节!)。当然,我们将其设置为目标文本所在的位置。
  • count=N仅复制这么多字节。我认为可以省略它,因为它会注意到输入文件的结尾,但是为了确保万无一失,我还是保留了它。

瞧,文件被覆盖了!

但是,目标文件比我们的脚本大,所以在 USB 上,文件现在类似于:“while do if run() blah; blah(); yright 2007 X Inc。”。有尾随垃圾。有两种方法可以解决这个问题:使我们的输入文件更长(添加空格),或在末尾添加注释符号。请注意,许多编辑器在末尾添加换行符,因此您可能需要设置count=为字节(如果您的文件现在是 203 个字节,并且您注意到最后一个字节是换行符,请将计数设置为 202)。您可以使用并检查最后一个字节是否为(或者,在奇怪的情况下,)来检查N-1文件中是否有换行符。xxd script.py | tail0a0d

对于文件来说,该过程是相同的.iso,只需在脑海中用 替换/dev/sdc即可your.iso

请注意,当您检查挂载点中的目标以查看其是否有效时,您可能需要strings再次使用(这次搜索您的脚本),因为该文件可能仍在读取缓存中。

答案3

电源ISO刚刚发布了免费Linux 版本他们的 ISO 编辑软件1.喜欢ISO 主控,它会保留 ISO 是否可启动的状态。但是,它允许您直接保存到原始文件(通过先删除它),因此不需要为两个文件提供足够的磁盘空间。我还发现它的界面比 ISO Master 更易于使用且更直观。

PowerISO for Linux 的屏幕截图


1与 Windows 程序不同,Linux 版本可以免费使用,没有任何大小限制或类似限制。

答案4

我最近(2023-03)需要重新打包 Debian GNU Linux iso 以在里面添加一些固件,但我使用“isomaster”没有成功。

我记得 2014 年大多数 ISO 以 MBR 模式启动时“isomaster”方法运行良好。

但很抱歉,2023 年的混合 UEFI / MBR ISO 已经无法再使用 ISOMASTER 软件的旧方法。这是因为今天的 ISO 不是简单的 ISO,而是由于引导加载程序的混合状态(UEFI / MBR)而被视为并通常称为“isohybrid”

下面是一个完整示例的链接,其中我需要将文件添加到 ISO,并且我确实在 2023 年使用 UEFI 和 MBR 重新打包了 Debian GNU Linux isohybrid ISO,之后我在几乎所有情况下都成功启动了它(从 USB 记忆棒、从硬盘驱动器、从刻录的 DVD、从以 MBR 模式启动 VM 的虚拟机管理程序和从以 UEFI 模式启动 VM 的虚拟机管理程序):

使用原始启动设备重新打包 ISO

希望能够有所帮助

相关内容