我正在寻找适用于Ubuntu的工具,可以用来编辑ISO镜像。包括可引导的ISO镜像,如Ubuntu和Windows ISO镜像。不仅能够编辑,还可以保存编辑后的ISO,并且在烧录到USB驱动器或光盘时仍然能引导启动。
我以前用过ISO Master来向ISO文件中添加文件。它非常适合你的需求,因为它能保留ISO文件是否可引导的状态。我以前使用它来向现场光盘中添加其他内容(比如音乐)。不过请注意,在对ISO文件进行更改后,你只能选择“另存为”,也就是会创建另一个ISO文件,所以请确保你有足够的磁盘空间来存放两个文件。
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 [...]
$ 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=
设置为N-1
字节(如果现在文件有203个字节,且你注意到最后一个字节是换行符,则将count设置为202)。您可以使用xxd script.py | tail
命令检查文件中是否有换行符,并检查最后一个字节是否为0a
(或者在某些特殊情况下为0d
)。
对于.iso
文件,此过程完全相同,只需将/dev/sdc
替换为your.iso
。
请注意,当您检查挂载点上的目标文件以查看是否成功时,您可能需要再次使用strings
命令(这次搜索您的脚本),因为该文件可能仍然位于读取缓存中。
1与其Windows程序不同,Linux版本可以免费使用,没有任何大小限制或类似的限制。
sudo isohybrid output.iso
如果您的系统没有isohybrid命令,请使用以下命令进行安装:sudo apt install syslinux-utils
- diegov
sudo isohybrid output.iso
如果您的系统没有isohybrid命令,请使用以下命令进行安装:sudo apt install syslinux-utils
- diegov