Задача

Снять образ с загрузочного компакт-диска, изменить файлы в образе и записать результат на другой компакт-диск.

Решение

Подготовка

Снимаем образ с компакт-диска. Работа с образом быстрее, да и резервная копия никогда не помешает.

dd if=/dev/cdrom of=cdimage-orig.iso bs=2048

Создаём папку для монтирования образа, аналог «подключения виртуального диска» в виндах. В зависимости от места создания, возможно, придётся делать от имени суперпользователя. Лично у меня эта папка была создана однократно и именно для таких целей - для подключения образов дисков.

sudo mkdir /mnt/vcd

Монтируем образ компакт-диска в папку. Только от имени суперпользователя.

sudo mount cdimage-orig.iso /mnt/vcd -o loop

Создаём папку для копирования содержимого диска, в которой будем изменять файлы. Путь к cd-dir должен быть указан либополный, либо относительно текущего каталога. У меня обычно это папка в домашнем каталоге.

mkdir cd-dir

Копируем файлы с образа в папку.

cp /mnt/vcd/* cd-dir -R

Размонтируем образ, он нам больше не нужен. Тоже от имени суперпользователя. Если этого не сделать сейчас, образ будет автоматически размонтирован при перезагрузке.

sudo umount /mnt/vcd

Изменение содержимого

Всё содержимое компакт-диска сейчас у нас находится в папке cd-dir. Редактируем его по усмотрению.

Сборка каталога в образ

А вот эта задача уже посложнее. Стандарт загрузочного компакт-диска подразумевает наличие на нём двух файлов: загрузочного каталога и собственно образа загрузчика.

Например, в Ubuntu 8.04 эти два файла находятся в папке isolinux. Образ загрузчика - isolinux.bin, загрузочный каталог - boot.cat.

Загрузочный каталог - файл размером 2 килобайта, его содержимое роли не играет.
Особый интерес представляет образ загрузчика.

Немного теории.
BIOS не умеет грузиться с CD-ROMа, но умеет считывать с него информацию. Специально для загрузки с компакт-дисков была введена спецификация El Torito, El Torito Bootable CD Specification. Суть её в следующем: BIOS сканирует все дисковые системы компьютера, и по стандарту ISO9660 (формат хранения данных на компакт-дисках), эмулирует образ загрузчика как жёсткий диск (или флоппик), после чего происходит загрузка с этого диска в обычном режиме.

Нужно найти оба этих файла, после чего собрать образ компакт-диска из каталога:

mkisofs -r -iso-level 4 -b boot.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o cdimage-new.iso cd-dir/

boot.bin - полный путь к образу загрузчика относительно корня компакт-диска
boot.cat - полный путь к загрузочному каталогу относительно корня компакт-диска
-no-emul-boot - нужен в том случае, когда образ загрузчика не является точным образом загрузочного флоппи, включая размер
-boot-load-size 4 - задаёт число загрузочных секторов, ключ нужен для совместимости с «глючными» биосами, которых много. Если параметр будет не 4, то некоторые экземпляры откажутся запускаться
-boot-info-table - также для совместимости

Получившийся диск записываем командой:

cdrecord cdimage-new.iso

Умолчания

/dev/cdrom - файл-устройство привода компакт-дисков
cdimage-orig.iso - образ диска до редактирования
cdimage-new.iso - образ отредактированного диска
/mnt/vcd/ - каталог для монтирования образов
cd-dir - каталог для редактирования содержимого диска

Дополнительно

ISO9660 - стандарт файловой системы для хранения данных на дисках CD. Формат введён для независимости доступа к дискам от рабочей платформы (Windows, Linux, и т.д.)

Есть несколько уровней спецификации:

1. Формат имён файлов - 8.3, как в DOS. Не больше 8 символов в имени каталога. Не больше 8 вложенных каталогов. В именах используются только буквы латинского алфавита. Фрагментация файлов не допускается.
2. Имена файлов ограничены 32 символами. Набор символов в именах неограничен.
3. Допускается фрагментация файлов (необходимо для пакетной или инкрементной записи CD).
4. (ISO9660-2) Максимальная длина пути - 207 символов. Нет ограничения на вложенные папки. Символа «.» (точка) в именах файлов не носит особого значения.

Общее ограничение ISO9660 - размер файла не может превышать 2GB.

Расширение стандарта, называемое Joliet, добавляет поддержку длинных имён файлов и не-ASCII символов в именах.

Ссылки

Как самостоятельно сделать Bootable CD-ROM
ISO 9660
Bircoph, Red Hat Клуб


Otto
2011.10.26 20:01:50
#cid7050

Ответить

Большое спасибо автору за данную статью!))) Эта информация то, что искал. Проделывал всё с дистрибутивом Linux Slax 6.1.2
Получилось на УРА)))

imen
2012.10.18 17:39:07
#cid44563

Ответить

Упоминание неиспользуемого расширения фирмы майкрософт на фоне неупоминания используемого православного RockRidge прекрасно.
Есть основания полагать, что ты забыл про опцию, которую зовут ЕМНИП '-D'.

Если не баловаться с загрузочными дисками, то всё значительно проще.

2012.10.19 14:42:24
#cid44680

Ответить

#cid44563, imen

Упоминание неиспользуемого расширения фирмы майкрософт

Какого?

на фоне неупоминания используемого православного RockRidge

Не было необходимости. Задача другая стояла.

Есть основания полагать, что ты забыл про опцию, которую зовут ЕМНИП '-D'.

Это "-disable-deep-relocation", которая нарушает стандарт ISO9660, если не указан явно ISO9660:1999?
Которую рекомендуется использовать с осторожностью?

Если не баловаться с загрузочными дисками, то всё значительно проще.

Речь — именно про загрузочные.

imen
2012.10.19 15:26:05
#cid44688

Ответить

#cid44680,

Какого?

JOLIET вестимо.

Не было необходимости. Задача другая стояла.

Ой ли?..
А не желаешь ли ты попробовать создать загрузочный диск условно-современного (пусть 2010 год) фрюникса без использования RR?

Это "-disable-deep-relocation", которая нарушает стандарт ISO9660, если не указан явно ISO9660:1999?
Которую рекомендуется использовать с осторожностью?

Реверанс в направлении альтернативной ОС.
Фтопку!

Я тоже умею читать страницы руководства:

Общее ограничение ISO9660 - размер файла не может превышать 2GB.

Неверно.

man mkisofs:

If yo like to have files larger than 2 GB, you need to specify -iso-level 3 or above.

И файлы по 3-4 гига записываются на ура.

И, к началу заметки (и общей сути интернетов), для снятия образа _оптического_ диска рекомендуется скорее readcd.

Константин
2013.05.19 21:57:46
#cid62599

Ответить

Спасибо! Доходчиво и работает!