Задача

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

Решение

Подготовка


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

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 Клуб

взято тут
http://www.it-simple.ru/?p=550

PS
удобней когда виден процесс копирования




новая опция status=progress
dd if=/dev/cdrom of=disk.iso status=progress

cp с прогрессбаром на питоне
https://github.com/yannicklm/pycp

http://habrahabr.ru/post/56796/
http://habrahabr.ru/post/117050/
http://habrahabr.ru/post/65384/

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 07:50 pm
Powered by Dreamwidth Studios