Протестируйте это. Используйте опцию -dummy для выполнения холостого запуска cdrecord. Делайте все, что хотите делать и посмотрите, выживет ли процесс записи.

Если вы пускаете cdrecord прямо из mkisofs, тогда интенсивные дисковые процессы, такие как обновление locale-базы данных понижают максимальную скорость обработки и могут повредить CD. Вы лучше проверьте такие процессы в cron, at или anacron, на то время в которое ВЫ создаете CD-ROM.

4.2 "Отражается ли фрагментация на производительности?"

Фрагментация - обычно настолько низкая, что не отражается. Однако, Вы можете просто создать паталогические случаи фрагментации, которые понижают производительность вашего диска до 100кб/с. Не делайте так. :-)

Да, файлы на диске фрагментировались на диске в течение двух лет. Файловая система быстрая и полная. Всегда оствляйте 10 или 20 процентов свободного пространства, и вы должны подходить с уважением к записи CD-R.

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

bash> e2fsck -n  /dev/sda5        # '-n' обязательно
[stuff deleted - ignore any errors]
/dev/sda5: 73/12288 files (12.3% non-contiguous)

В этом примере фрагментация, кажется, очень высокая - но только 73 очень маленьких файла на этой файловой системе (используемые в /tmp) так что величина - НЕ сигнал тревоги.

Существует экспериментальная утилита называемая e2defrag для дефрагментации extended-2 файловой системы. Текущая версия пока еще не работает надежно, даже для личного использования. Если Вы действительно хотите дефрагментировать Вашу файловую систему, создайте резервную копию (лучше две копии), попрактикуйтесь восстанавливать данные, затем создайте новую файловую систему (с уничтожением старой) и восстановите данные с копии. В нескольких словах, это на данный момент наиболее безопасный способ.

4.3 "Возможно ли сохранять образ CD на файловой системе UMSDOS?"

Да. Единственная файловая система, которая не надежна и не достаточно быстра для записи - сетевая файловая система (NFS).

Я сам использую UMSDOS, чтобы совместно использовать дисковое пространство между Linux и DOS/Win на PC (486/66), специально для записи CD.

4.4 "Возможно ли обойти iso9660 ограничения?"

Да. Вы можете помещать любую файловую систему на CD. Но другие операционные системы не смогут работать с этим CD.

Приводится рецепт:

Если Вы хотите сделать запись в /etc/fstab для такого CD, отключите его проверку, например:

/dev/cdrom  /cdrom  ext2  defaults,ro  0 0

Первый 0 подразумевает "не включать в дампы", второй (важный) подразумевает "не проверять ошибки при запуске" (fsck не в состоянии проверять CD на ошибки).

4.5 "Как читать и записывать звуковые КОМПАКТ-ДИСКИ?"

Для этого есть несколько программных пакетов. Один из новейших, "cdparanoya", может быть загружен с:

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 файлов.

4.6 "Как исследовать SCSI устройства после начальной загрузки?"

Файл drivers/scsi/scsi.c содержит информацию

/*
* Использование: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
* С " 0 1 2 3 " замененным на ваш "Id Lun главного канала".
* Рассматривайте это свойство как BETA.
* ПРЕДОСТЕРЕЖЕНИЕ: Это не для hotplugging периферии. Так как
* SCSI не был разработан для этого, Вы можете повредить вашу
* аппаратуру!
* Однако это допускается включать для
* уже подсоединенного устройства. Это, возможно, не
* гарантирует, что устройство не исказит продолжающуюся передачу данных.
*/

В оригинале:

/*
 * Usage: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
 * with  "0 1 2 3" replaced by your "Host Channel Id Lun".
 * Consider this feature BETA.
 *     CAUTION: This is not for hotplugging your peripherals. As
 *     SCSI was not designed for this you could damage your
 *     hardware !
 * However perhaps it is legal to switch on an
 * already connected device. It is perhaps not
 * guaranteed this device doesn't corrupt an ongoing data transfer.
 */

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

4.7 "Возможно ли делать 1:1 копию данных CD?"

Да. Но Вы должны знать, что любые ошибки при чтении оригинала (из-за пыли или царапин) приведут к дефектной копии.

Первый случай: у Вас CD-writer и отдельный привод CD-ROM. Выдавая команду

cdrecord -v dev=0,6,0 speed=2 -isosize /dev/scd0

Вы читаете поток данных из привода CD-ROM, присоединенного как /dev/scd0 и записываете его непосредственно на CD-R.

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

dd if=/dev/scd0 of=cdimage

Если Вы используете последнюю версию cdrecord, тогда используйте инструмент под названием "readcd" (существующий в misc/). Обе команды эквивалентны по действию mkisofs, так что Вы должны продолжать как описано в главе 3. Пожалуйста обратите внимание, что этот метод не применим для звуковых CD! Вы должны использовать cdrdao или cdda2wav для аудио CD.

4.8 "Может ли Linux читать Joliet CD?"

Да. Новые ядра (2.0.36 и до 2.2) имеют встроенную поддержку joliet формата. Запомните, что Вы должны использовать обе опции в вашем /etc/fstab: ключевое слово iso9660 и joliet, для больших подробностей см. http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html.

4.9 "Как я могу читать/монтировать CD-ROMы на устройстве записи CD?"

Точно так, как Вы делаете с обычными приводами CD-ROM. Никаких хитростей. Обратите внимание, что Вы должны использовать scd-устройства (SCSI CD-ROM) чтобы монтировать CD для чтения, аналогично если у Вас ATAPI CD-ROM (помните вы конфигурировали ваши ATAPI-устройства как SCSI). Примерная запись в /etc/fstab:

/dev/scd0  /cdrom  iso9660  ro,user,noauto  0  0

4.10 Как поместить больше данных на CD-R?

Используйте bzip2 вместо любого компрессора, подобного gzip или pkzip. Это сохранит до 30% дискового пространства для больших (>100kb) файлов. Вы можете загрузить его с:

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

4.11 Как создать загрузочный CD-ROM?

У Вас должен быть 1.44Мб загрузочная дискета. Создайте точный образ дискеты подав команду:

dd if=/dev/fd0 of=boot.img bs=18k

Поместите этот образ в каталоге содержащем коллекцию Ваших файлов (или в подкаталоге ее, как Вам нравится). Скажите mkisofs о этом фале используя опцию '-b' и еще используйте '-c'. Для подробностей читайте файл README.eltorino в дистрибутиве mkisofs.

Интересное применение загрузочных CD - вирусобезопасные DOS или Windows системы. Они сэкономят Вам деньги на жестком диске, (если у Вас есть сеть и Вы используете samba для помещения пользовательских фалов на файл-сервере). Однако, это чисто теоретически, т.к. никто еще мне не сообщал действующий рецепт.

4.12 Как создать CD-ROM что-то записывающий?

Существует overlay-filesystem имеющаяся для Linux, которая монтируется на CD-ROM и перехватывает все операции записи. Новые или модифицированные файлы помещаются в другом месте, но для пользователя CD-ROM выглядит модифицированным. Для большей информации см. http://home.att.net/~artnaseef/ovlfs/ovlfs.html.

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

4.13 Возможно ли использовать несколько устройств записи одновременно?

Да. Однако, тестировано пока только с двумя устройствами. Вам нужна одна из последних версий ядра (2.2.10) или патч ядра для большего буфера SCSI-generic драйвера ( ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha; работает до 2.2.5).

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

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

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

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

Если "не работает" даже под другими операционными системами - у Вас аппаратный конфликт или дефектные аппаратные средства. Если работает и Вы использовали 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 ошибки в течение фазы записи

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

При различных обстоятельствах 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 (Вы можете прекратить читать тут.)