Я ищу инструменты для Ubuntu, которая может использоваться для РЕДАКТИРОВАНИЯ ISO-образов. Включая ISO-образы, которые являются загрузочными как Ubuntu и Windows ISOs. Не только редактируют, но и сохраняют отредактированный ISO и может все еще загрузиться при записи на Карте памяти или CD/DVD.
Я использовал Ведущее устройство ISO для добавления файлов к ISOs прежде. Это подходит для того, чего Вы требуете, потому что это сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом для добавления другого содержания (как музыка) к живому диску. Обратите внимание, однако, что после внесения изменений в файл ISO, Вы можете только "Сохранить Как", т.е. другой файл ISO будет создан, поэтому удостоверьтесь, что у Вас есть достаточно дискового пространства для обоих.
Общий ответ на это должен распаковать файл ISO, изменить его и упаковать его снова. Похоже, что "Ведущее устройство ISO", как упомянуто в ответе dv3500ea, является хорошим фронтендом, чтобы сделать это.
Если:
Затем этот ответ для Вас!
Таким образом, мы заменим существующий файл в 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, файл - теперь что-то как: "в то время как делают, если выполнено () вздор; вздор (); X Inc yright 2007 года".. Там запаздывает мусор. Два способа зафиксировать это: сделайте наш входной файл дольше (добавьте пробелы), или добавьте символ комментария в конце. Обратите внимание, что многие редакторы добавляют новую строку в конце, таким образом, Вы могли бы хотеть установить count=
кому: N-1
байты (если Ваш файл - теперь 203 байта, и Вы замечаете, что последний байт является новой строкой, количеством набора к 202). Можно проверить файл на новые строки при помощи xxd script.py | tail
и проверяя, ли последний байт 0a
(или, в странных случаях, 0d
).
Процесс идентичен для .iso
файл, просто мысленно замените /dev/sdc
с your.iso
.
Обратите внимание, что при проверке цели в точку монтирования, чтобы видеть, работала ли она, Вы, возможно, должны были бы использовать strings
снова (на этот раз, ища Ваш сценарий), так как файл находится, вероятно, все еще в кэше считывания.
PowerISO просто выпустил версию Linux их программного обеспечения редактирования ISO. Как Ведущее устройство ISO, это сохраняет состояние того, является ли ISO загрузочным. Однако это позволяет Вам сохранять непосредственно в исходный файл (путем удаления его сначала), таким образом, нет никакой потребности иметь достаточно дискового пространства для обоих файлов. Я также нахожу, что его интерфейс легче и более интуитивен для использования, чем Ведущее устройство ISO.