данные, которые могут быть удалены после записи CD. Однако использование сырого раздела сохраняет время
при удалении файла размером 650Мб (Если у Вас достаточно дискового пространства, дополнительный раздел может
сохранить Вам время на удаление образа).



Проверка образа CD



Linux может монтировать файлы, как разделы диска. Этот свойство полезно для проверки расположения
каталогов образа CD и разрешений на доступ к файлам CD. В то же время носители сейчас очень дешевы,
а процесс записи продолжителен, и Вы, по крайней мере, можете захотеть сохранить время быстрым тестированием.

Чтобы монтировать файл cd_image созданный выше в каталог /cdrom,
дайте команду




mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom


Теперь Вы можете проверить файлы в /cdrom - они появляются точно так, как они будут на реальном CD.
Для демонтирования CD-изображения просто umount /cdrom (Предупреждение: Если Вы не использовали
опцию '-K ' для mkisofs, тогда последний файл на /cdrom не может быть полностью читаемым. Пожалуйста, используйте более
позднее ядро, такое ка 2.0.36. опция -pad для mkisofs применяется только для audio-CD и необязательная опция -pad для mkisofs
требует заплаты, которую труднее применить, чем обновить ядро на свободное от ошибок).

Обратите внимание:


Некоторые древние версии mount не способны работать с петлевыми устройствами. Если у Вас такая
старая версия mount, это - повод, чтобы обновить вашу Linux-систему.

Несколько людей уже предложили помещать информацию относительно того, как получить самые новые
утилиты монтирования в это HOWTO. Я всегда отказываюсь от этого. Если Ваш дистрибутив Linux работает с
древним mount: воспринимайте это как ошибку. Если Ваш дистрибутив Linux трудно обновляем: воспринимайте
это как ошибку.

Если бы я включил всю необходимую информацию при работе с ошибками плохих дистрибутивов Linux, этот HOWTO
был бы намного больше и тяжелее для чтения.




Запись CD образа на CD



Больше ничего не осталось делать. Если Вы не устали, лучшее время для команды




cdrecord -scanbus


Она должна сказать Вам к какому SCSI-устройству подсоединен Ваш CD-writer. Все другие методы предполагаемой информации
так любезно выводимой cdrecord-ом удалены из HOWTO (в особенности немного опасная схема именования обобщенных SCSI устройств).

Перед тем, как показать Вам последнюю команду, позвольте мне предупредить
Вас, что устройства записи CD должны обеспечиваться постоянным потоком данных, потому что у них маленький
объем буферной памяти. Т.о. процесс записи образа CD не должен прерываться, или в результате CD будет испорчен.
Достаточно просто прервать поток данных удаляя большой файл. Например: если Вы удаляете предыдущий образ размером 650Мб,
ядро должно обновить информацию о 650000 блоках на жестком диске (предполагается размер блока 1Кб на Вашей файловой системе).
Это требует некоторое время и очень похоже на замедление дисковой активности на несколько секунд. Однако, чтение почты, просмотр
web или компиляция ядра обычно не сказывается на процессе записи на современных машинах.

Пожалуйста обратите внимание, что нет устройства записи, которое может снова устанавливать лазер и
продолжать в первоначальном месте на CD, если оно сбилось. Следовательно любые сильные колебания или
механический удар возможно уничтожит CD, который Вы пишете.

Если Вы мысленно подготовлены, оденьте черный халат, умножте SCSI-id устройства CD на номер версии SCSI и
зажгите столько свечей, произнесите две главы ASR-FAQ (группа новостей alt.sysadmin.recovery) и в конце наберите:
(прим. пер.: вовсе не обязательно выполнять все эти религиозные темочки :)




shell> SCSI_BUS=0 # взято из листинга 1 "scsibus0:"
shell> SCSI_ID=6 # взято из листинга 1 "TOSHIBA XM-3401"
shell> SCSI_LUN=0
shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
-data cd_image

# то же, что и выше, но короче:
shell> cdrecord -v speed=2 dev=0,6,0 -data cd_image


Для лучшей читаемости, координаты устройства записи помещены в три переменные окружения с именами:SCSI_BUS, SCSI_ID, SCSI_LUN.
Опция -data non-mandatory но это дает создать командную строку подобную той, которая используется для записи audio-CD.

Если Вы использует cdrecord для перезаписи CD-RW, Вы должны добавить опцию "blank=..." для стирания старого содержимого.
Пожалуйста прочтите man-страницу для понимания различных методов очистки содержимого CD-RW.

В то время, когда каждый, исключая меня, имеет 400МГц машину, люди направляют выход mkisofs прямо на cdrecord:




shell> IMG_SIZE=`mkisofs -R -q -print-size private_collection/ 2>&1 \
| sed -e "s/.* = //"`
shell> echo $IMG_SIZE
shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r private_collection/ \
|cdrecord speed=2 dev=0,6,0
tsize=${IMG_SIZE}s -data -
# не забудьте s --^ ^-- чтение данных с STDIN


Первая команда запускается для определения размера образа (для этого Вам нужен mkisofs из дистрибутива cdrecord).
Может быть Ваш writer не требует указания размера образа, тогда Вы можете это пропустить.
Полученный размер должен быть подставлен как tsize-параметр для cdrecord (он помещается в переменную
окружения IMG_SIZE). Вторая комманда - последовательность mkisofs и cdrecord, соединенные в поток.



http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia/index.html



Или Вы можете попробовать комбинацию "cdda2wav" и "sox", доступные на sunsite, и его зеркалах:



ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/cdda2wav0.71.src.tar.gz


ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb3.tar.gz


cdda2wav позволит Вам получать указанный интервал (или целый трек) с вашего
звукового CD и преобразовать его в a . wav-файл. sox преобразовывает wav-файлы обратно в cdda-формат
(Audio-CD), т.о. они могут быть записаны на CD-R, используя cdrecord. Вам не обязательно нужен "sox",
если Вы используете последнюю версию cdrecord, потому что в него встроена поддержка для
.au и .wav файлов.



http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html.



http://www.muraroa.demon.co.uk/



Вместо записи истинного аудио CD, Вы можете сконвертировать ваши wav-файлы в mp3-аудио файлы и поместить их
на ISO-9660 файловую систему как обычные файлы. Обычно MPEG III дает компрессию 1:10. Конечно, большинство CD проигрывателей
не способны читать файлы... это недостаток. С другой стороны, почему не играть музыку на следующей вечеринке с
жесткого диска? 18Гбайт хватит на 3000-4000 наименований. :-)

Программный MPEG III кодировщик доступен по


http://www.stud.ifi.uio.no/~larsi/other/8hz-mp3-cheng.tar.gz



MPEG III проигрыватель доступен по


http://homepages.uni-tuebingen.de/student/michael.hipp/mpg123/



Для записи голоса, вы можете попробовать уменьшить размер используя shorten или "GSM lossy speech compression":



ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/


http://kbs.cs.tu-berlin.de/~jutta/toast.html




http://home.att.net/~artnaseef/ovlfs/ovlfs.html.

Если этого Вам не достаточно: подождите поддержки UDF-файловой системы под Linux или помогите ее разработке (см.
http://trylinux.com/projects/udf/).


ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha; работает до 2.2.5).



4.14 Какой носитель наилучший?





Немецкий компьютерный журнал "c't" издал список подсказок относительно чистых CD в ноябре 1996:



  • "no-name"(неизвестного производителя) диски не самого высокого качества лучше не использовать

  • если recordable CD дефектен, это, вероятно, применимо ко всей партии дисков (если Вы купили
    более одного в одно время); возможно Вам повезло и можете по крайней мере использовать первые
    500МБ таких CD ...

  • не касайтесь переливающейся стороны CD перед записью




4.15 Как насчет Solaris, * BDS,AIX, HP_UX, и т.д.?



Только глава 2 специфична для Linux. Вы можете применить главу 3 и 4 даже если у Вас запущена операционная система не Linux семейства.
Пожалуйста смотрите README.NetBSD, README.aix, README.hpux, README.next,
README.solaris, README.sunos, README.vms or README.xxxBSD из cdrecord-дистрибутива.


4.16 Где помещать локальную конфигурацию постоянно?



У Вас есть два варианта. Либо Вы используете встроенный конфигурационный файл для cdrecord, либо используете
shell-оболочку, как показано ниже. Этот shell-скрипт читает конфигурационный файл, который содержит опции и параметры для
cdrecord строка за строкой. Имена такие-же как в командной строке, но без начального -. Комментарии разрешены. Например:




# be verbose
v
# set the speed of the writer
speed=2
# the device-coordinates in the form BUS,ID,LUN
dev=0,6,0



Конфигурационные файлы для оболочки принадлежат /etc/cdrecord и должны указываться в командной строке.
Пример: Если Вы хотите использовать конфигурацию /etc/cdrecord/mywriter.cfg, то Вы можете выдать команду
"cdrecord.sh mywriter.cfg -audio track1...". Все послеmywriter.cfg передается cdrecord




#! /bin/bash

CFGDIR="/etc/cdrecord"

CFG="$1"
shift
ARGS_LEFT="$@"

if [ ! -f "$CFGDIR/$CFG" ]
then
echo "Configuration file $CFGDIR/$CFG not found. Exiting."
exit 1
fi

while read LINE
do
case $LINE in
\#*|"") continue;;
esac
old_IFS="$IFS"
IFS="$IFS="
set -- $LINE
IFS="$old_IFS"
O_NAME="$1"
O_VALUE=""
while shift
do
case $1 in
"") continue;;
esac
O_VALUE="$1"
done

if [ -z "$O_VALUE" ]
then
O_CDRECORD="$O_CDRECORD -$O_NAME "
continue
fi
O_CDRECORD="$O_CDRECORD $O_NAME=$O_VALUE "

done < "$CFGDIR/$CFG"

set -x #DEBUG
exec cdrecord $O_CDRECORD $ARGS_LEFT
echo "Execution of cdrecord failed."




4.17 Как можно получить CD информацию?



Где-то за первыми 32к на CD, блок с информацией о помещенном CD. Вы можете извлечь информацию следующим скриптом:




#! /bin/bash

RD=/dev/cdrom
for i in 32768,7 32776,32 32808,32 32958,128 33086,128 33214,128 \
33342,128 33470,32 33581,16 33598,16 33615,16 33632,16
do
old_IFS="$IFS"
IFS=","
set -- $i
IFS="$old_IFS"
OFFSET=$1
LENGTH=$2
echo "*`dd if=$RD bs=1 skip=$OFFSET count=$LENGTH 2> /dev/null`#"
done




4.18 Как насчет перезаписи?



Когда перезаписывается CD-RW носитель, указывается параметр blank=fast для cdrecord.
Это все. См. man-страницу cdrecord для подробностей о этом параметре.


4.19 Как создать multi-session CD?



Прежде всего, образ мульти-сессионного CD должен быть отформатирован используя ISO9660-файловую систему с
RockRidge-расширением. И Вы должны использовать cdrecord опцию -multi пока хотите добавлять следующие сессии. Т.е.
по крайней мере для первой сессии, Вы должны использовать -multi.

Образы второй и последующих сессий немного сложнее в создании. mkisofs должен знать где начинается свободное
пространство на CD-R диске. Эта информация может быть получена используя cdrecord опцию -msinfo (см. пример ниже)




shell> NEXT_TRACK=`cdrecord -msinfo dev=0,6,0`
shell> echo $NEXT_TRACK
shell> mkisofs -R -o cd_image2 -C $NEXT_TRACK -M /dev/scd5
private_collection/ \


Для большей информации, пожалуйста читайте файл README.multi, который распространяется с cdrecord.





5. Поиск неисправностей



Всегда помните, что Вы можете использовать испорченные CD-ROMы как подставки. :-)



5.1 Не работает: под Linux



Пожалуйста проверьте сначала, что устройство записи работает с поставляемым программным обеспечением
(=под другой операционной системой). А именно:



  • контроллер распознает устройство записи как SCSI устройство?

  • драйвер распознает устройство записи?

  • возможно ли создать CD, используя прилагаемое программное обеспечение?


Если "не работает" даже под другими операционными системами - у Вас аппаратный конфликт или дефектные
аппаратные средства. Если работает и Вы использовали loadlin для загрузки Linux, тогда это может быть проблема.
Loadlin делает "мягкую" загрузку с инициализированной аппаратурой, что может сбить с толку ядро Linux.




5.2 Ошибка: No read access for 'dev=0,6,0'.



Под Linux, некоторые версии С-библиотеки несовместимы, т.о. приложения собранные с одной версией не будут работать с другой.
Например ошибки работы предкомпилированых бинарников следующие:




[root@Blue /dev]# cdrecord -eject dev=0,6,0
cdrecord: No such file or directory. No read access for 'dev=0,6,0'.



5.3 Не работает: под DOS



Пробуйте использовать Linux. Установка и конфигурация SCSI-ДРАЙВЕРОВ для DOS - ад. Linux также сложен? Ха!



5.4 SCSI ошибки в течение фазы записи



Наиболее вероятно ошибки вызваны



  • пропущенным dis-/reconnect свойством на SCSI шине

  • недостаточным охлаждением аппаратных средств

  • дефектными аппаратными средствами (должны быть обнаружены 5.1.)


При различных обстоятельствах SCSI устройства отсоединяются и повторно соединяются (электрически)
от SCSI шины. Если это свойство не доступно (проверьте контроллер и параметры ядра), у некоторых
устройств записи возникают проблемы при выжигания или фиксации CD-R.

Особенно в NCR 53c7,8xx SCSI драйвере это свойство выключено по умолчанию, так что Вы
проверьте его сначала:




NCR53c7,8xx SCSI support [N/y/m/?] y
always negotiate synchronous transfers [N/y/?] (NEW) n
allow FAST-SCSI [10MHz] [N/y/?] (NEW) y
allow DISCONNECT [N/y/?] (NEW) y



6. Благодарности




Многочисленные благодарности читателям этого HOWTO, кто активно влиял на его содержимое.



Doug Alcorn <doug@lathi.net>

помогал улучшил представление нового ядра


Kalle Andersson <kalle@sslug.dk>

Как записать audio-cd прямо с mp3


Kalle Andersson <kalle@sslug.dk>


Rick Cochran <rick@msc.cornell.edu>

подсказал о выключенном dis-/reconnect по умолчанию в ncr драйвере


Robert Doolittle <bob.doolittle@sun.com>

хорошие аргументы, чтобы выбросить cdwrite из этого HOWTO


Markus Dickebohm <m.dickebohm@uni-koeln.de>


Jos van Geffen <jos@tnj.phys.tue.nl>

отметил проблему в 4.9.


Bernhard Gubanka <beg@ipp-garching.mpg.de>

отметил потребность недавней версии монтирования, чтобы использовать петлевое устройство


Stephen Harris <sweh@mpn.com>

поделился подсказкой относительно записи звукового CD


Janne Himanka <shem@oyt.oulu.fi>

указал на заплату ядра, для чтения Joliet CD


Stephan Noy <stnoy@mi.uni-koeln.de>

информация и опыт относительно записи звукового CD


"Don H. Olive" <don@andromeda.campbellsvil.edu>

URL mkhybrid инструмента


Jesper Pedersen <jews@imada.ou.dk>


Pierre Pfister <pp@uplift.fr>

помог в разработке рецепта 1:1 копии.


Daniel A. Quist <dquist@cs.nmt.edu>

информация о IDE CD-R и новых версиях ядра


Martti.Rahkila@hut.fi

отметил проблему с пре-инициализацией writer-ов при загрузке с loadlin


Dale Scheetz <dwarf@polaris.net>


Joerg Schilling <schilling@fokus.gmd.de>

информация относительно cdrecord


Martin Schulze <joey@Infodrom.North.DE>

дал информацию относительно cdwrite- списка рассылки


Gerald C Snyder <gcsnyd@loop.com>

проверял запись ext2 на CD-ROM (см. 4.4)


Art Stone <stone@math.ubc.ca>

подал идею как поместить не-iso9660 файловые системы в CD


The Sheepy One <kero@escape.com>

предложил использовать дефектные CD как подставки для напитков


Erwin Zoer <ezoer@wxs.nl>



Я хочу поблагодарить следующих людей за сообщения о ошибках правописания: Bartosz Maruszewski
<B.Maruszewski@zsmeie.torun.pl>, Ian Stirling
<ian@opus131.com>, Brian H. Toby.

Конец Linux CD-Writing mini-HOWTO (Вы можете прекратить читать тут.)