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

Проблема

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

Решение

Воспользуйтесь командами mkisofs, mount и cdrecord. Сначала упакуйте все файлы в единый файл .iso командой mkisofs, затем смонтируйте .iso для проверки правильности файловой системы. Затем запишите данные на диск командой cdrecord.

В нашем примере файл .iso называется data.iso, компакт-диску присвоено имя data_disk, а все файлы копируются из каталога /disk_data. Точка монтирования для .iso — /test-iso.

# mkisofs -J -r -v -V data_disk -o data.iso /diskdata
# mkdir /test-iso
# mount -t iso9660 -o ro,loop data.iso /test-iso
# ls /test-iso
# umount /test-iso
# cdrecord -v eject dev=0,1,0 data.iso

Комментарий

В представленном решении все команды выполняются пользователем root. Это сделано для простоты, потому что команды mount, mkisofs и cdrecord требуют привилегий root. Чтобы пользователи могли выполнять команду mount, используйте sudo. Для выполнения команд mkisofs и cdrecord можно создать группу cdrecord, назначить ей владельцем эти программы и включить пользователей в эту группу.

В ядре 2.6 эмуляция IDE-SCSI не нужна, поэтому в командной строке cdrecord можно просто указать имя /dev:

# cdrecord dev=/dev/hdc data.iso

Команда mkisofs собирает все файлы и упаковывает их в один файл .iso. Если вам приходилось загружать дистрибутив Linux для записи на компакт-диск, вы, вероятно, уже работали с такими файлами. Основная проблема для новичков — это то, что они ожидают увидеть дерево файлов, а получают один большой файл.

Рассмотрим параметры команды mkisofs:

Перед записью компакт-диска обязательно смонтируйте созданный образ .iso для проверки. Если все файлы отображаются корректно, можно приступать к записи.

# mkdir /test-iso
# mount -t iso9660 -o ro,loop data.iso /test-iso
# ls /test-iso

Если файлы отображаются неверно, исправьте ошибки и пересоздайте .iso.

См. также

cdrecord(1), mount(8), mkisofs(8); раздел 9.12; раздел 11.2.