Задача
Снять образ с загрузочного компакт-диска, изменить файлы в образе и записать результат на другой компакт-диск.
Решение
Подготовка
Снимаем образ с компакт-диска. Работа с образом быстрее, да и резервная копия никогда не помешает.
Создаём папку для монтирования образа, аналог «подключения виртуального диска» в виндах. В зависимости от места создания, возможно, придётся делать от имени суперпользователя. Лично у меня эта папка была создана однократно и именно для таких целей - для подключения образов дисков.
Монтируем образ компакт-диска в папку. Только от имени суперпользователя.
Создаём папку для копирования содержимого диска, в которой будем изменять файлы. Путь к cd-dir должен быть указан либополный, либо относительно текущего каталога. У меня обычно это папка в домашнем каталоге.
Копируем файлы с образа в папку.
Размонтируем образ, он нам больше не нужен. Тоже от имени суперпользователя. Если этого не сделать сейчас, образ будет автоматически размонтирован при перезагрузке.
Изменение содержимого
Всё содержимое компакт-диска сейчас у нас находится в папке cd-dir. Редактируем его по усмотрению.
Сборка каталога в образ
А вот эта задача уже посложнее. Стандарт загрузочного компакт-диска подразумевает наличие на нём двух файлов: загрузочного каталога и собственно образа загрузчика.
Например, в Ubuntu 8.04 эти два файла находятся в папке isolinux. Образ загрузчика - isolinux.bin, загрузочный каталог - boot.cat.
Загрузочный каталог - файл размером 2 килобайта, его содержимое роли не играет.
Особый интерес представляет образ загрузчика.
Немного теории.
BIOS не умеет грузиться с CD-ROMа, но умеет считывать с него информацию. Специально для загрузки с компакт-дисков была введена спецификация El Torito, El Torito Bootable CD Specification. Суть её в следующем: BIOS сканирует все дисковые системы компьютера, и по стандарту ISO9660 (формат хранения данных на компакт-дисках), эмулирует образ загрузчика как жёсткий диск (или флоппик), после чего происходит загрузка с этого диска в обычном режиме.
Нужно найти оба этих файла, после чего собрать образ компакт-диска из каталога:
boot.bin - полный путь к образу загрузчика относительно корня компакт-диска
boot.cat - полный путь к загрузочному каталогу относительно корня компакт-диска
-no-emul-boot - нужен в том случае, когда образ загрузчика не является точным образом загрузочного флоппи, включая размер
-boot-load-size 4 - задаёт число загрузочных секторов, ключ нужен для совместимости с «глючными» биосами, которых много. Если параметр будет не 4, то некоторые экземпляры откажутся запускаться
-boot-info-table - также для совместимости
Получившийся диск записываем командой:
Умолчания
/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
#cid7050
Ответить
Большое спасибо автору за данную статью!))) Эта информация то, что искал. Проделывал всё с дистрибутивом Linux Slax 6.1.2
Получилось на УРА)))
imen
#cid44563
Ответить
Упоминание неиспользуемого расширения фирмы майкрософт на фоне неупоминания используемого православного RockRidge прекрасно.
Есть основания полагать, что ты забыл про опцию, которую зовут ЕМНИП '-D'.
Если не баловаться с загрузочными дисками, то всё значительно проще.
#cid44680
Ответить
#cid44563, imen
Какого?
Не было необходимости. Задача другая стояла.
Это "-disable-deep-relocation", которая нарушает стандарт ISO9660, если не указан явно ISO9660:1999?
Которую рекомендуется использовать с осторожностью?
Речь — именно про загрузочные.
imen
#cid44688
Ответить
#cid44680,
JOLIET вестимо.
Ой ли?..
А не желаешь ли ты попробовать создать загрузочный диск условно-современного (пусть 2010 год) фрюникса без использования RR?
Реверанс в направлении альтернативной ОС.
Фтопку!
Я тоже умею читать страницы руководства:
Неверно.
man mkisofs:
If yo like to have files larger than 2 GB, you need to specify -iso-level 3 or above.
И файлы по 3-4 гига записываются на ура.
И, к началу заметки (и общей сути интернетов), для снятия образа _оптического_ диска рекомендуется скорее readcd.
Константин
#cid62599
Ответить
Спасибо! Доходчиво и работает!