如何编辑ISO映像(包括可引导的ISO)


30

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

Answers:


42

ISO大师 安装isomaster

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

isomaster


2

PowerISO刚刚发布了他们的ISO编辑软件的Linux版本。与ISO Master一样,它保留ISO是否可启动的状态。但是,它允许您直接保存到原始文件(首先将其删除),因此无需为两个文件都拥有足够的磁盘空间。我还发现它的界面比ISO Master更加易于使用和直观。

Linux版PowerISO的屏幕截图


1

常见的解决方法是解压缩iso文件,对其进行修改,然后再次打包。就像dv3500ea的答案中提到的那样,“ ISO Master”看起来是一个很好的前端。

如果:

  • 你没有足够的空间
  • 您只想进行手术修改,而不是重写整个内容
  • 您想要修改包含isofs文件系统(即iso9660)的存储设备,而不复制整个设备,或者
  • 如果您认为拆包这个东西还不够hacky

那么,这个答案适合您!

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

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

我们不能只是覆盖info.txt挂载点,它会抱怨说这是一个只读文件系统。但是,我们是根,所以让我们向他们展示这意味着什么!我们需要找出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记忆棒上,文件现在类似于:“如果run()blah; blah(); yright 2007 X Inc.,则可以。” 有尾随的垃圾。解决此问题的两种方法:使输入文件更长(添加空格),或在末尾添加注释符号。请注意,许多编辑器都在末尾添加换行符,因此您可能希望将其设置count=N-1字节(如果文件现在为203字节,并且您注意到最后一个字节是换行符,则将count设置为202)。您可以使用xxd script.py | tail并检查最后一个字节是否为0a(或,在奇怪的情况下为0d)来检查文件中是否有换行符。

对于.iso文件来说,该过程是相同的,只是在精神上替换/dev/sdcyour.iso

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.