Жжем диски под Linux
Автор: Федор Сорекс, sorex@softerra.ru
Опубликовано: 02.03.2002
Оригинал: http://www.softerra.ru/freeos/16379/


Желание еще раз обратиться к теме настройки CD-R/CD-RW под линуксом у меня возникло давно. И по ряду, как мне кажется, веских причин. Во-первых, с выходом ядер ветки 2.4.x процедура настройки изменилась и упростилась. Во-вторых, хотелось бы поговорить о графических средствах записи и перезаписи дисков под линуксом. Ну и наконец, следует сказать несколько слов о записи файлов с русским буквами и прочих необходимых мелочах.

Итак, возмем самый обычный CD-R/RW привод. Лично я использую Teac CD-W58E, но все сказанное ниже должно работать и с подавляющим большинством CD-R/RW приводов (оговорюсь сразу, что и с CD-R, т.е. просто пишущими CD, без возможности перезаписи, кроме тех случаев, где явным образом идет речь именно о RW).

Настройка системы

Для работы с CD-RW нам понадобятся минимум три вещи:

О дополнительных утилитах для записи, а так же о графических интерфейсах мы поговорим чуть позже и в следующих статьях.

Настройка ядра

Подробнее о настройке ядра в целом можно почитать в одноименной статье и несколько устаревшем Kernel-HOWTO. Свежую информацию о настройке и установке ядра всегда можно почитать в файле /usr/src/linux/README.

А конкретнее о тех пунктах ядра, которые необходыми для записи, а так же замечания для ядер 2.0.x и ранних 2.2.x читайте соответствующий раздел CD-Writing-HOWTO.

Для ядер 2.4.x обычно ничего писать в /etc/modules.conf не нужно (ядро "само" разберется, что ему нужно), а вот для серии 2.2.x нужно добавить следующие строки в вышеуказанный файл:

 alias scd0 sr_mod
alias scsi_hostadapter ide-scsi
options ide-cd ignore=hdc

В любом случае случае ядру нужно сообщить, какое IDE устройство у нас теперь SCSI. Для LILO нужно добавить следующую строчку в /etc/lilo.conf:

append=" hdc=ide-scsi "

где hdc √ это /dev/hdc √ т.е. ваше устройство CD-R. Не забудьте перезапустить lilo после этой операции.

Если у вас привод SCSI, а не ATAPI, то ничего писать ни в /etc/modules.conf, ни в /etc/lilo.conf не нужно.

Программы
Сейчас практически в любом дистрибутиве есть программы cdrecord и mkisofs. Если же их у вас нет или вы хотите получить более новые версии, то можно обратиться к официальной странице cdrecord, а за новой версией mkisofs заглянуть на страницу производителя вашего дистрибутива.

После установки вышеозначенных утилит и перезагрузки системы с новым ядром вы должны получить примерно такой вывод команды cdrecord -scanbus:

Cdrecord release 1.10 Copyright (C)
  1995-2001 JЖrg Schilling
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
scsibus0:
 0,0,0 0) 'TEAC ' 'CD-W58E ' '1.0A' Removable CD-ROM
 0,1,0 1) *
 0,2,0 2) *
 0,3,0 3) *
 0,4,0 4) *
 0,5,0 5) *
 0,6,0 6) *
 0,7,0 7) *

В данном случае цифры 0,0,0 √ это идентификатор вашего привода, ниже я буду заменять их на x,x,x. После всех этих действий, обращение к /dev/hdc уже невозможно, а новое обозначение вашего устройства чаще всего √ /dev/scd0. Так что не пугайтесь если обращение к привычному /dev/cdrom, которое указывало на /dev/hdc даст сбой.

Создание образов:

mkisofs -R -J -jcharset koi8-r -o 
ourimage.iso /path/our_dir/

Здесь мы создаем образ используя Rock Ridge (опция -R). Это позволяет обойти некоторые ограничения файловой системы iso9660, √ такие как ограничение на размер собственно файловой системы (650 mb), длин имен файлов ("формат 8.3") и ряд других.
Для того, что бы и под windows можно было комфортно читать диски, используется опция -J, создающая этот образ и в т.н. Joliet-формате тоже. Если у вас файлы имеют русские имена в кодировке koi8-r, то это учитывается опцией -jcharset koi8-r и в дальнейшем можно будет читать записанные диски с корректным отображением русских названий файлов.
Ну а ourimage.iso - это, собственно, и есть образ диска, который мы создаем, /path/our_dir/ √ источник файлов для этого образа.

Я предпочитаю проверить образ, перед записью: (ведь неприятно потерять болванку, особенно, какую-нибудь дорогую или редкую √ на 80 или 90 минут, например)

mount -o loop ourimage.iso /mnt/iso

Собственно процесс:

Очистка диска для перезаписываемых (RW):

cdrecord -v blank=fast dev=x,x,x

опция blank=fast указывает на то, что произойдет быстрая очистака диска (т.е. очистка оглавления) и после этого можно записывать вновь.
Если вы хотите очистить диск полностью, то вам поможет опция blank=all.

Команда для записи проста:

cdrecord
 dev=x,x,x speed=8 -v ourimage.iso

Здесь все предельно ясно √ speed=8 это скорость записи болванки. Я обычно использую максимальную допускаемую моим приводом и болванкой.

можно добавить опцию -eject:

cdrecord -eject dev=x,x,x speed=8 -v ourimage.iso

в этом случае лоток привода выдвинется после записи.

Для мультисессионного диска, необходимо добавить опцию -multi. Тогда для следующей сессии нужно будет узнать, где закончилась предыдущая запись:

cdrecord -msinfo dev=x,x,x

Выводом будет число вида 12345,09876. С него мы и начнем следующую запись:

mkisofs -R -o cd_image2 -C 12345,09876 -M
  /dev/scd0 /path/our_dir/
"Copyright (c) "Софтерра",
www.softerra.ru, inform@softerra.ru