Запись компакт-дисков в Linux

Аватар пользователя keng00ru

Запись компакт-дисков в Linux

Всевозможные графические пользовательские интерфейсы (GUI) для записи CD/DVD дисков под Linux, основываются, как правило, на двух небольших консольных утилитах: cdrecord и mkisofs.
К сожалению, даже развитые утилиты класса K3b не позволяют использовать всю мощь этих маленьких программ. А иногда, просто нет возможности воспользоваться GUI, а записать диск нужно. Здесь мы рассмотрим только самые основные команды записи компакт-дисков из консоли Linux.


Часть I: Запись CD-R

Различия в использовании на ядрах 2.4.xx и 2.6.xx
Приведённые здесь комманды используют программы cdrecord версии 2.0 и выше и mkisofs. Как правило, эти программы присутствуют в любом современном дистрибутиве по умолчанию. Но есть небольшое отличие в использовании комманд в дистрибутивах с разными ядрами. Ядро 2.6.xx даёт нам преимущество перед ядром 2.4.xx записывать диски, используя стандартный для всех внутренних приводов интерфейс ATAPI, а не эмуляцию SCSI. Поэтому обязательно проверьте версию ядра Вашего дистрибутива при помощи комманды:
uname -r

Определение параметров пишущего устройства.
В любом случае, для начала нам необходимо определить параметры нашего привода. Для этого используем команду:
для ядра 2.6.xx:
cdrecord -scanbus dev=ATAPI:
для ядра 2.4.xx:
cdrecord -scanbus

В появившемся списке нас интересует строка примерно такого содержания:

0,1,0 1) 'TOSHIBA' 'SD-R2412' 'J.26' Removable CD-ROM

Первые три цифры через запятую – это и есть то, что мы искали. В данном случае - это 0,1,0. Ваши значения могут отличаться. Таким образом, наше устройство мы будем обозначать как:
dev=ATAPI:0,1,0 для ядра 2.6.xx
dev=0,1,0 для ядра 2.4.xx

Далее, все команды приводятся для ядра 2.6.xx. Пользователи дистрибутивов с ядром 2.4.xx подставляют в [/b]dev=[/b] своё значение.

Создание ISO-образа диска с данными.
dd if=/dev/cdrom of=/tmp/cdname.iso
Здесь: [/dev/cdrom] - устройство, с которого снимается образ;
[/tmp/cdname.iso] - расположение и имя получаемого образа.

Создание ISO-образа любой директории с данными.
mkisofs -v -jcharset=koi8-r -r -o /tmp/cdname.iso /home/username/docs
Здесь: [-v] - отображает информацию о выполнении комманды;
[-jcharset] - включает поддержку русских имён файлов для просмотра диска в Window$; Подставьте значение Вашей локали! (Список поддерживаемых кодировок в выводе: mkisofs -jcharset help);
[-r] - включает поддержку Rock Ridge, без этого параметра диск будет читаться только под Window$;
[-o /tmp/cdname.iso] - расположение и имя получаемого файла;
[/home/username/docs] - путь к записываемой папке.

Проверка правильности создания ISO-образа.
mkdir /mnt/test
Здесь: [/mnt/test] - имя создаваемой директории.
mount -t iso9660 -o loop /tmp/cdname.iso /mnt/test
Здесь: [-t iso9660] - указывает тип файловой системы устройства;
[-o loop] - указывает на использование виртуального устройства;
[/tmp/cdname.iso] - расположение и имя монтируемого образа;
[/mnt/test] - диретория в которую монтируется образ.
Заходим в директорию /mnt/test и проверяем, всё ли там нас устраивает.
Перед началом записи необходимо выйти из этой директории и отмонтировать образ!
umount /mnt/test
Здесь: [/mnt/test] - директория, в которую был смонтирован образ.

Проверка возможности записи ISO-образа на диск.
cdrecord -v -dummy -data dev=ATAPI:0,1,0 speed=24 fs=8M /tmp/cdname.iso
Здесь: [-v] - отображает информацию о выполнении команды;
[-dummy] - включает режим холодной записи с выключенным лазером;
[-data] - указывает на запись диска с данными;
[dev=ATAPI:0,1,0] - обозначает устройство, на которое производится запись;
[speed=24] - задаёт желаемую скорость;
[fs=8M] - задаёт размер буфера FIFO;
[/tmp/cdname.iso] - расположение и имя записываемого образа.
Будет произведена запись на диск с выключенным лазером. Эта процедура покажет, как будет проходить реальная запись и поможет отрегулировать скорость записи и объём буфера FIFO.

Получение информации о диске.
cdrecord dev=ATAPI:0,1,0 -atip
Выводит информацию о болванке.

Запись ISO-образа диска.
cdrecord -v -eject -data dev=ATAPI:0,1,0 speed=24 fs=8M /tmp/cdname.iso
Здесь: [-v] - отображает информацию о выполнении комманды;
[-eject] - открывает лоток привода после записи;.
[-data] - указывает на запись диска с данными;
[dev=ATAPI:0,1,0] - обозначает устройство, на которое производится запись;
[speed=24] - задаёт скорость записи;
[fs=8M] - задаёт размер буфера FIFO;
[/tmp/cdname.iso] - расположение и имя записываемого образа.

Прямое копирование с диска на диск.
cdrecord -v -eject -data dev=ATAPI:0,1,0 speed=24 fs=8M /mnt/cdrom
Здесь: [-v] - отображает информацию о выполнении комманды;
[-eject] - открывает лоток привода после записи;
[-data] - указывает на запись диска с данными;
[dev=ATAPI:0,1,0] - обозначает устройство, на которое производится запись;
[speed=24] - задаёт скорость записи;
[fs=8M] - задаёт размер буфера FIFO;
[/mnt/cdrom] - точка монтирования устройства, с которого производится запись.
Процедура очень требовательна к ресурсам компьютера! Не рекомендуется выполнять на слабых и сильно загруженных машинах.

Прямая запись папки с данными.
mkisofs -v -jcharset=koi8-r -r -o /home/username/docs | cdrecord -v -eject -data dev=ATAPI:0,1,0 speed=24 fs=8M -
Здесь: [-] - Тире в конце комманды указывает на то, что запись ведётся с потока, а не из файла.
Как можно заметить, это просто комбинация из двух уже известных команд. Но для mkisofs не указывается конечный файл, а для cdrecord не указывается исходный файл.
Процедура очень требовательна к ресурсам компьютера! Не рекомендуется выполнять на слабых и сильно загруженных машинах.

Проверить читаемость записанного диска.
dd if=/dev/cdrom of=/dev/null
Здесь: [/dev/cdrom] - устройство с записанным диском;
[/dev/null] - несуществующее устройство.
Если копирование в никуда прошло успешно, значит диск записан верно.


Часть II: Запись CD-RW

В первой части данного руководства мы достаточно подробно разобрали вопросы об определении параметров привода и о специфике работы с утилитами cdrecord и mkisofs. Поэтому, не будем повторяться и продолжим учиться записывать диски. На этот раз - мультисессионные.

Создание ISO-образа первой сессии.
mkisofs -v -jcharset=koi8-r -r -o /tmp/image1.iso /home/username/docs1
Никаких отличий от того, как это делается для обычного CD-R.

Запись первой сессии.
cdrecord -v -eject -multi -data dev=ATAPI:0,1,0 speed=8 fs=8M /tmp/image1.iso
Здесь: [-multi] - указывает на то, что диск создаётся мультисессионным.

Получение информации о существующих сессиях.
Для записи второй и всех последующих сессий, утилите mkisofs нужно указать, с какого места на диске начинается свободное пространство.
cdrecord -msinfo dev=ATAPI:0,1,0
Здесь: [-msinfo] - запрашивает информацию о последней сессии на диске.
Ответом будет что-то типа:
0,74492
Далее эти два значения обозначаются, как start и end соответственно.

Создание ISO-образа второй и последующих сессий.
mkisofs -v -jcharset=koi8-r -r -M /dev/hdc1 -C 0,74492 -o /tmp/image2.iso /home/username/docs2
Здесь: [-M /dev/hdc1] - указывает путь к диску с существующей сессией;
[-C 0,74492] - указывает значения start и end.

Запись второй и последующих сессий.
cdrecord -v -eject -multi -data dev=ATAPI:0,1,0 speed=8 fs=8M /tmp/image2.iso
Здесь: [-multi] - указывает на то, что диск ещё будет дописываться.
Без параметра [-multi] диск будет считаться записанным полностью и закрытым для последующей записи.

Получение информации о содержимом мультисессионного диска.
cdrecord -toc dev=ATAPI:0,1,0
Здесь: [-toc] - считывает информацию о сессиях, уже записанных на диске.
Результатом будет список сессий с указанием времени создания сессии и значений start и end для каждой сессии.

Стирание мультисессионного диска.
cdrecord -v blank=fast dev=ATAPI:0,1,0
Здесь: [blank=fast] - указывает на быструю очистку диска.
Для параметра [blank=] есть и другие значения:
blank=all - полная очистка диска;
blank=session - очистить только последнюю сессию;
blank=unclose - открыть последнюю записанную сессию.

Примечания:
Приведённые команды могут использоваться и с другими параметрами.
Дополнительную информацию можно получить набрав в консоли: man mkisofs и man cdrecord. В дистрибутивах ASPLinux эти руководства представлены на русском языке.

Your rating: Нет Average: 9.3 (8 votes)
RSS-материал