Запись CD дисков в консоли
Зачастую проще воспользоваться консолью для записи CD/DVD дисков, нежели использовать графические утилиты, а зачастую это единственный вариант. И нет ничего проще! Для этого нам понадобятся: cdrecord и mkisofs. В gentoo они находятся в app-cdr/cdrtools.
Несколько терминов, связанных с форматами файлов:
- Yellow Book: физический формат CD с данными. - Orange Book: физический формат для записываемых компакт-дисков. - CD-MO --- магнито-оптические диски. - CD-WO --- единожды записываемые диски (включают в себя и гибриды наподобие Фото-CD). - CD-RW --- перезаписываемые диски. - ISO-9660: Старый стандарт расположения данных, позволяющий использовать только стандарт 8.3 для имен файлов (т.е. 8 символов - имя файла и 3 - расширение). - Rock Ridge: Расширение ISO-9660, предполагающее использование длинных имен для файлов и UNIX-подобных ссылок. Позволяет сохранить все атрибуты файла, такие как владелец и права доступа. Атрибуты UNIX-файлов при чтении диска в Windows не отображаются. - Joliet: Расширение ISO-9660, разработанное Microsoft, которое позволяет использовать символы Unicode в именах файлов, так же как и использовать длинные имена файлов. Кроме того, Joliet предоставляет возможность создания урезанных имен для совместимости с MS-DOS, выглядящих наподобие FILENA~1.TXT. Позволяет использовать имена файлов длиной до 64 символов, включая пробелы. - El Torito: Спецификация для загрузочных компакт-дисков. - HFS (Hierarchical File System): Оригинальная файловая система компьютеров Macintosh. - Мультисессия: Позволяет добавлять файлы в любое время, после записи одиночной сессии. Для того, чтобы диски читались, сессия должна быть закрыта. Однако такой подход исключает добавление файлов. Мультисессия позволяет связать отдельные сессии и обновленное содержание диска выглядит как один каталог. - CD-UDF (Universal Disk Format): файловая система-стандарт пошаговой записи пакетов данных.
Процесс записи выбранных вами файлов состоит из двух этапов. Вначале необходимо создать с помощью mkisofs iso-образ, и потом записать его на диск, используя программу cdrecord. Для создания образа воспользуемся следующим синтаксисом:
mkisofs -o test.iso -Jrv -V test_disk /home/usver/test_dir
-o - имя создаваемого iso-файла (test.iso);
-J - используем записи Joliet для совместимости с системой Windows;
-r - Rock Ridge расширение для совсестимости с *nix;
-v - так называемый verbose-режим;
-V - указываем имя тома (test_disk);
Для просмотра содержимого можно смонтировать iso-образ:
mount -t iso9660 -o ro,loop=/dev/loop0 test.iso /mnt/iso
Далее нам нужно найти адрес пишещего устройства:
cdrecord -scanbus
И записываем диск:
cdrecord -v -eject speed=48 dev=0,0,0 test.iso
-v - verbose-режим. Обозначает тоже, что и в предыдущем случае
-eject - выдвигает лоток привода после окончания процесса записи
-speed - указываем скорость записи диска. В нашем случае - 48х
-dev - записывающее устройство. Числа взяты из вывода программы cdrecord с параметром scanbus
-multi - создания мультисессийного диска
Для очистки CD-RW необходимо в качестве параметров указать следующее:
blank=all - очистить весь диск blank=disc - то же самое blank=fast - быстрая очистка диска blank=session - очистить последнюю сессию blank=unclose - открыть последнюю записанную сессию
То есть, например команда для быстрой очистки диска будет выглядеть следующим образом:
cdrecord dev=0,0,0 blank=fast -eject -speed=4 -v
Для прямого копирования содержимого с одного диска на другой можно воспользоваться командой вида:
cdrecord -v dev=0,0,0 speed=4 -isosize /dev/scd1
Но для пущей надежности лучше сначала сделать образ диска:
dd if=/dev/scd1 of=/tmp/diskfile.iso
Для того, чтобы добавить еще одну сессию, программе mkisofs необходимо знать номера начального и конечного секторов диска. Узнать это можно следующим образом:
cdrecord dev=0,0,0 -msinfo
В результате, команда для создания iso-образа будет иметь следующий вид:
mkisofs -o test2.iso -Jr -V Session2 -C 0,27139 -M 0,0,0 /path/to/files
Можно так же эту команду объединить с предыдущей. В итоге, получим следующее:
mkisofs -o test2.iso -Jr -V Session2 -C `cdrecord dev=0,0,0 -msinfo` -M 0,0,0 /files/path/
Теперь привод считает информацию о последней записанной сессии и объединит ее содержание с содержанием новой сессии. Предполагается, что последняя сессия записана с опцией -multi