11.4. Создание компакт-диска с данными для распространения

Проблема
Требуется записать компакт-диск с данными, который бы читался в Linux и Windows.
Диск может содержать текстовые файлы, документы, программы или графичес кие изображения.
Решение
Воспользуйтесь командами mkisofs, mount и cdrecord. Сначала упакуйте все файлы
в единый файл .iso командой mkisofs, затем смонтируйте .iso для проверки пра вильности файловой системы. Затем запишите данные на диск командой cdrecord.
В нашем примере файл .iso называется data.iso, компакт-диску присвоено
имя data_disk, а все файлы копируются из каталога /disk_data. Точка монтирова ния для .iso — /test-iso.
Выполните следующие команды:
# mkisofs -J -г -v -V data disk -о data.iso /diskdata
# mkdir /test-iso
# mount -t iso9660 -o ro.loop data.iso /test-iso
# Is /test-iso
# umount /test-iso
# cdrecord -v eject dev=0,l,0 data.iso
Комментарий
В представленном решении все команды выполняются пользователем root. Это
сделано для простоты, потому что команды mount, mkisofs и cdrecord требуют при вилегий root. Чтобы пользователи могли выполнять команду mount, используй те sudo. Для выполнения команд mkisofs и cdrecord создайте группу cdrecord. На значьте ее владельцем mkisofs и cdrecord и включите пользователей в группу
cdrecord.
Помните, что в ядре 2.6 эмуляция IDE-SCSI не нужна, поэтому в командной
строке cdrecord можно просто указать имя /dev:
# cdrecord dev=7dev/hdc <номанды>
В этих нескольких командах выполняется довольно большая работа. Команда
mkisofs берет все файлы и упаковывает их в один большой файл .iso. Если вам
когда-либо доводилось загружать дистрибутив Linux для записи на компакт-диск,
он был упакован в виде файла .iso. Это часто создает проблемы для новичков,
которые не понимают, почему они получили один гигантский файл вместо дерева
каталогов с файлами Linux.
Рассмотрим командную строку mkisofs более подробно:
# mkisofs -J -r -v -V data disk -о data.iso /diskdata
Ключи:
О -J — использование схемы имен Joliet для совместимости с Windows;
О -г — использование схемы имен Rock Ridge для совместимости с Unix/Linux.
Все файлы доступны для чтения для всех пользователей;
О -v — расширенный вывод;
О -V data_disk — определение идентификатора тома (data_disk). Это то самое имя
диска, которое отображается в Проводнике Windows и в команде file - </dev/
scd* (о том, как определить имена/dev, рассказано в разделе 9.12);
О -о data.iso /disk.data — имя нового образа .iso и файлы, выбранные для упаков ки в .iso (в данном случае все содержимое /disk_data). Обратите внимание:
корневой каталог /disk-data не копируется, только его содержимое.
Монтирование .iso перед записью диска является простейшей страховкой. Если
вы видите все свои файлы — можно переходить к записи. Если нет, значит, при
формировании файла .iso была допущена ошибка и его придется построить зано во. Проверка .iso осуществляется так:
# mkdir /test-iso
# mount -t iso9660 -o ro.loop data.iso /test-iso
Откройте каталог/test-iso и проверьте свои файлы.
Параметры команды mount:
О -t iso9660 — тип файловой системы. Компакт-диски с данными всегда отно сятся к типу iso9660 (кроме udf, но в этом случае вам не придется создавать
образ .iso);
О -о гоДоор data.iso — параметры монтирования data.iso: доступ только для чте ния, с использованием файловой системы, внедренной в файл;
О /test-iso — каталог, созданный как точка монтирования.
После завершения проверки .iso можно записать файл на диск.
# cdrecord -v -eject dev=0.1.0 data.iso
Параметры команды:
О -v — расширенный вывод;
О -eject — извлечение диска после записи (не обязательно);
О -dev=0,l,0 — адрес SCSI устройства записи компакт-дисков;
О data.iso — имя файла .iso, который содержит файлы, записываемые на диск.
Команда cdrecord по умолчанию записывает данные на максимальной скорос ти, поддерживаемой устройством и диском. При возникновении ошибок попро буйте снизить скорость записи:
# cdrecord -v -eject speed=4 dev=0,l,0 data.iso
Современные записывающие устройства поддерживают высокую скорость за писи (20Х и выше), но многие диски CD-R/CD-RW ограничиваются гораздо бо лее низкими скоростями. Как правило, команда cdrecord автоматически подбира ет оптимальную скорость записи.

•XI
См. также
cdrecord(l), mount(8), mkisofs(8); раздел 9.12; раздел 11.2