Dear Winfried,...

Другими словами, эта секция обычно известна как "часто задаваемые вопросы и ответы". Если у Вас проблемы с Вашим партнером, детьми или собакой, просто отвлекитесь на запись CD-R или другое развлечение.

Насколько чувствителен процесс создания?

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

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

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

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

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

shell> e2fsck -n  /dev/sda5        # '-n' - необходимо!
[stuff deleted -- ignore any errors]
/dev/sda5: 73/12288 files (12.3% non-contiguous)

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

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

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

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

Можно ли обойти iso9660 ограничения?

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

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

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

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

Как читать и записывать звуковые CD?

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

http://www.xiph.org/paranoia/

Или Вы можете попробовать комбинацию "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 и преобразовать его в .wav-файл. sox преобразовывает wav-файлы обратно в cdda-формат (Audio-CD), т.о. с помощью cdrecord они могут быть записаны на CD-R. Если Вы используете последнюю версию cdrecord, то Вам не обязательно нужен "sox", потому что в cdrecord встроена поддержка для .au и .wav файлов.

Как исследовать 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 hot plugging 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) и может полностью разрушить содержимое вашего жесткого диска.

Некоторым версии ядра вовсе не нравится пере-сканировать SCSI шину и Ваша система может прочно зависнуть при попытке применить вышеприведенное. Вас предупредили.

Можно ли делать 1:1 копию данных CD?

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

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

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

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

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

dd if=/dev/scd0 of=cdimage

Эта команда считывает содержимое CD-ROM с устройства /dev/scd0 и записывает в файл cdimage. Содержимое файла эквивалентно тому, что выдает mkisofs, так что Вы должны продолжать, как описано в начале этого документа (где дается файл cdimage на вход cdrecord). Если Вы хотите видеть шкалу прогресса и другие модные вещи, Вы можете использовать JЖrg Schillings sdd.

В случае ошибок, установите последнюю версию cdrecord, которая поставляется с утилитой "readcd" (расположена в misc/). Она даст Вам тот же результат, что и dd, но в случае ошибок читает сектора на CD-ROM несколько раз.

Может ли Linux читать Joliet CD? (устаревший ответ)

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

Как я могу читать/монтировать 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

Как поместить больше данных на 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.sulaco.org/mp3/

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

http://www.mpg123.org/

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

ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/
http://kbs.cs.tu-berlin.de/~jutta/toast.html

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

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

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

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

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

Некоторые подробности о загрузочном RedHat CD-ROM доступны на http://members.bellatlantic.net/~smithrod/rhjol-technical.html.

Как создать записываемый CD-ROM подобно жесткому диску?

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

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

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

Да. Проверена работа, по крайней мере, 3-х устройств записи на полной скорости (6x) на PC с 233 Mhz и одной SCSI шиной под ядром 2.2.12. Для этого нужна свежая версия ядра Linux (2.2.12 или выше).

Как насчет Solaris, * BDS,AIX, HP_UX, и т.д.? Поддерживается ли мой вариант Unix?

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

Вероятно да. Скомпилируйте cdrecord для вашей платформы и дайте команду "cdrecord -scanbus". Прочтите файл README.* поставляемый с исходным кодом cdrecord для вашего Unix. Однако, не все варианты Unix могут читать RockRidge, Joliet или HFS расширения на ваших только что записанных CD-R.

Где поместить постоянные локальные настройки?

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

# быть многословным
v
# установить скорость записи
speed=2
# координаты устройства в форме 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 "Конфигурационный файл $CFGDIR/$CFG не найден. Выходим."
    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 "Выполнение cdrecord потерпело неудачу."

Как можно получить информацию о 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

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

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

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

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

Некоторые CD-writer-ы не поддерживают CD-ROM XA mode 2 или session-at-once (SAO), поэтому Вам необходимо в командной строке cdrecord указать ключ -data.

Образы второй и последующих сессий немного сложнее в создании. 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.

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

Сообщено по: В большинстве руководств к CD-writer говорится о необходимости использовать отдельную SCSI шину, если есть CD-ROM и CD-writer и я увидел это по такому сценарию:

Adaptec 2940UW SCSI карта, 24x SCSI CD-ROM и 4x4 SCSI CD-writer. Когда я получил CD-writer, он шел вместе со своей ISA SCSI картой, которая могла работать только с одним устройством. В общем, я бросил ее и использовал мою более лучшую adaptec карту для всех целей. Я заметил, что достаточно часто при записи на 4x скорости происходило опустошение буфера, но как только я присоединил ISA SCSI карту, проблемы исчезли. Я знаю двух других людей (оба используют adaptec 2940 карты), у кого происходили подобные симптомы, особенно при записи с CD-ROM на CD-recorder. Тем не менее, у меня никогда не было проблем при записи с жесткого диска на CD-writer на той же шине.

Как создавать диски по сети?

Обычно передача файлов по FTP, даже по 10Mbit ethernet, достаточно быстра для поставки информации CD-recorder-у на четвертой (4x) скорости. Вы можете соединить по fifo каналу ftp-client и cdrecord. Сначала создайте fifo с названием cdimage:

mkfifo cdimage
ftp other.host.org
get cdimg cdimage

Затем обращайтесь с cdimage как с обычным файлом, т.е. дайте следующую команду:

cdrecord dev=0,1,0 speed=2 cdimage

Ваш ftp-client будет уведомлен, когда cdrecord захочет считать из файла, и начнет передачу данных с ftp хоста.

Я слышу треск или щелчок в конце каждой дорожки.

Чтобы избавиться от треска Вы должны использовать режим disk-at-once (DAO).

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

Вы можете добавить setuid-бит к исполняемому файлу cdrecord. Однако это может быть небезопасно. Простая установка прав доступа на файлах устройств не поможет, так как cdrecord подает привилегированные команды по обобщенному(generic) SCSI интерфейсу.

which cdrecord
chown root.root /usr/bin/cdrecord
chmod 4111 /usr/bin/cdrecord

Где я могу взять стандарты "Yellow Book" и "Orange Book"?

Вы можете получить печатные спецификации от Philips, но они очень дорогостоящие.

Я ищу информацию по созданию Video-CD под Linux.

Здесь вы можете найти утилиты для создания MPEG видеоклипов и Video-CDs: http://www.mainconcept.de/

http://www.johanni.de/munich-vision/vcd/

Политически корректные люди ссылаются на Berkeley-утилиты и другие YUV-стратегии. Их использование осложнено, требует много времени и дискового пространства и не дает Вам аудио дорожек. Я рекомендую использовать приложения более высокого концептуального уровня, ссылки на которые даны выше.

Что проще в установке IDE или SCSI?

SCSI CD-writer немного проще установить в отношении записи CD под Linux. И они, как сообщают, имеют лучшее восстановление ошибок. Если это все перекрывается более высокой ценой, то не может быть однозначного ответа.

Как я могу перерасходовать CD, используя {cdrecord,cdrdao}?

Перерасход CD-R - обычное дело. Но вы рискуете тем, что Ваши данные не поместятся на CD-ROM, и это все. В программном обеспечении для Linux нет ограничения в 650 Мбайт.

Что будет делать cdrecord, если он останавливается при чтении входного потока из канала?

Он закончит запись. Так что Вы можете просто соединить в канал Вашу любимую утилиту резервирования и cdrecord, подобно "bru -size=640m -f - | cdrecord dev=0,1,0 speed=2 -". Если ваша резервная копия занимает несколько CD-R дисков, Вам нужно специально позаботиться об утилите резервирования.

Существует ли эквивалент ignore=hdX для ide-scsi эмуляции?

Я не знаю другого способа, но буду только приветствовать, если кто-либо добавит это свойство в код ядра Linux.

Сколько раз можно повторно использовать CD-RW до его неисправности?

Хороший вопрос.

Какой формат выбрать для платформенно-независимого CD-ROM?

CD-ROM читаемый на всех платформах, может использовать только "чистый" ISO 9660 формат. Это означает глупые 8+3 имена файлов из старого MS-DOS и без каких-либо расширений HFS (Macintosh), Joliet (Microsoft) или RockRidge (новые Unix-ы). В нем нет никаких расширений для длинных имен, поэтому он может быть прочитан любой операционной системой.

Возможна ли мульти-сессионная запись аудио дорожек?

Аудио CD-проигрыватели способны распознавать дорожки, записанные только в первую сессию. Другими словами, Вы не можете добавить аудио дорожки, используя последующие сессии. Однако запись дорожек во вторую сессию эффективно скрывает их от аудио CD-проигрывателей. Таким образом, Вы препятствуете появлению глухих дорожек на вашем mixed mode CD (смешанные аудио и данные).

Какие мне нужны аппаратные ресурсы? Достаточно ли старого Pentium?

Ответ зависит от того, что Вы хотите. Если Вам нужен повод купить новый компьютер, вот ответ от интернациональной ассоциации производителей компьютеров: Что бы Вы ни планировали сделать, Вам нужен процессор на 800 Mhz. Так как он не установится в вашу материнскую плату, Вам также нужна новая материнская плата. Самое простое решение - просто купить обычный полный комплект, какой рекламируют по телевидению. И можете игнорировать дальнейшую часть этой секции.

Теперь случай, кода Вам нужен разумный ответ: я успешно записал несколько CD-ROM дисков на "486" 66 Mhz. Хотя MS уже не рассматривает его как персональный компьютер, но рекомендует запустить на нем CE версию (было увидено на CeBIT), Linux очень даже хорошо работает на Pentium процессорах и даже способен записать CD. Вы можете достаточно просто выяснить, хватит ли мощности Вашего компьютера для записи CD-ROM простым тестом. Просто добавьте в командную строку при запуске cdrecord ключ -dummy и лазер останется выключенным. И понаблюдайте за процессом создания.