Компакт-диски (CD) имеют несколько особенностей, отличающих их от обычных дисков. Во-первых, на них невозможно производить запись. Они спроектированы с расчетом на то, что их можно читать последовательно без задержек на перемещение головки между дорожками. К тому же их гораздо проще переносить от системы к системе, чем носители близкого объема.
У CD имеются дорожки, но они представляют собой последовательность данных, читаемую последовательно, и не являются физической характеристикой диска. Для записи CD во FreeBSD вы готовите файлы данных, которые будут формировать дорожки на компакт-диске, а затем записываете дорожки на CD.
Файловая система ISO 9660 была разработана с учетом этих отличий, К сожалению, она унаследовала ограничения файловых систем, которые были тогда. К счастью, она дает механизм расширений, которые позволяют правильно записанным дискам обходить эти ограничения и при этом продолжать работать с системами, которые не поддерживают эти расширения.
Для создания файла данных, содержащего файловую систему ISO 9660, используется программа mkisofs(8), которая включена в порт sysutils/cdrtools. Она имеет опции, поддерживающие различные расширения, и описана ниже.
Какой инструмент использовать для записи CD, зависит от того, является ли ваше устройство для записи CD устройством ATAPI или каким-либо другим. С устройствами для записи стандарта ATAPI используется программа burncd, которая является частью комплекта поставки системы. С устройствами SCSI и USB нужно использовать cdrecord из порта sysutils/cdrtools. Утилиту cdrecord и другие инструменты для SCSI-приводов также можно использовать при работе с ATAPI-оборудованием через модуль ATAPI/CAM.
Если для записи CD вам нужна программа с графическим интерфейсом пользователя, взгляните на X-CD-Roast или K3b. Они доступны в виде пакетов или из портов sysutils/xcdroast и sysutils/k3b. Программам X-CD-Roast и K3b для работы с оборудованием ATAPI требуется модуль ATAPI/CAM.
Программа mkisofs(8), поставляемая с портом sysutils/cdrtools создаЈт файловую систему ISO 9660, которая является образом дерева каталогов в пространстве имЈн файловой системы UNIX®. В самом простом случае она используется так:
# mkisofs -o imagefile.iso /path/to/tree
Эта команда создаст файл imagefile.iso, содержащий файловую систему ISO 9660, которая является копией дерева каталогов /path/to/tree. Во время работы она будет преобразовывать имена файлов в имена, которые удовлетворяют ограничениям файловой системы ISO 9660, и исключит файлы, которые носят имена, неподходящие для файловой системы ISO.
Для того, чтобы обойти эти ограничения, имеется несколько опций. В частности, -R
включает использование расширений Rock Ridge, распространенных в
UNIX-системах, с -J
будут
применены расширения Joliet, используемые в системах от Microsoft, а -hfs
может использоваться для создания файловых систем HFS,
используемых в Mac OS®.
Для CD, которые будут использоваться только с системами FreeBSD, может использоваться
опция -U
, отменяющая все ограничения на имена файлов. При
использовании с опцией -R
генерируется образ файловой
системы, идентичный начальному дереву FreeBSD, хотя при этом стандарт ISO 9660 может
нарушаться в нескольких местах.
Последней часто используемой опцией является -b
. Она
используется для указания загрузочного образа для использования при создании загрузочного
CD в стандарте ''El Torito''. Этой опции указывается аргумент, который является маршрутом
к загрузочному образу из корня дерева, записываемого на CD. По умолчанию,
mkisofs(8)
создает образ ISO в так называемом режиме ''эмуляции флоппи-диска'', и потому ожидает
загрузочный образ размера строго 1200, 1440 или 2880 KB. Некоторые загрузчики, в том
числе и тот, что используется на дистрибутивных дисках FreeBSD, не используют режим
эмуляции; в этом случае должна использоваться опция -no-emul-boot
. Так что, если /tmp/myboot
содержит загрузочную систему FreeBSD с загрузочным образом в /tmp/myboot/boot/cdboot, вы можете создать образ файловой системы
ISO 9660 в /tmp/bootable.iso следующим образом:
# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot
Сделав это, и имея в ядре отконфигурированное устройство md, вы можете смонтировать файловую систему, выполнив:
# mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 # mount -t cd9660 /dev/md0 /mnt
В этот момент вы можете проверить, что /mnt и /tmp/myboot идентичны.
Имеется много других опций, которые можно использовать с программой mkisofs(8) для тонкой настройки еЈ поведения. В частности: модификации в размещении ISO 9660 и создание дисков в форматах Joliet и HFS. Обратитесь к справочным страницам по mkisofs(8) для получения более подробной информации.
Если ваше устройство для записи CD соответствует стандарту ATAPI, то для записи ISO-образа на компакт-диск вы можете воспользоваться командой burncd. burncd входит в базовый комплект операционной системы и установлена как /usr/sbin/burncd. Использовать еЈ очень просто, так как параметров у ней немного:
# burncd -f cddevice data imagefile.iso fixate
По этой команде файл imagefile.iso будет скопирован на cddevice. По умолчанию используется устройство /dev/acd0. Для получения информации о параметрах, задающих скорость записи, выброс диска после записи и запись звуковых данных, обратитесь к burncd(8).
Если ваше устройство для записи CD не соответствует стандарту ATAPI, то для записи компакт-дисков вам нужно пользоваться программой cdrecord. cdrecord не входит в комплект поставки системы; вы должны установить еЈ из порта sysutils/cdrtools или из соответствующего пакета. Изменения в системе могут приводить к тому, что откомпилированные версии этой программы работать не будут, или приводить к порче дисков. Поэтому вы должны при обновлении системы либо обновить порт, либо, если вы следуете -STABLE, обновить порт при появлении его новой версии.
Хотя cdrecord имеет много опций, в основном использовать еЈ ещЈ проще, чем burncd. Запись образа ISO 9660 делается такой командой:
# cdrecord dev=device imagefile.iso
Тонким моментом при использовании cdrecord является
определение правильного устройства dev
. Чтобы задать параметр
правильно, воспользуйтесь флагом -scanbus
команды cdrecord, в результате чего может получиться примерно такой
результат:
# cdrecord -scanbus Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) *
Здесь приведены соответствующие значения параметров dev
для имеющихся устройств. Найдите здесь ваше устройство для записи CD, а в качестве
параметров для dev
задавайте три числа через запятые. В нашем
случае CRW-устройству соответствуют числа 1,5,0, так что правильным параметром будет
dev=1,5,0
. Имеется более простой способ задать эти значения;
обратитесь к справочной информации о
cdrecord(1) для
выяснения подробностей. Там же находится информация о записи звуковых дорожек, управлении
скоростью и другим вещам.
Вы можете копировать музыкальные CD, извлекая данные аудио с CD в набор файлов, а затем записывая эти файлы на чистый CD. Процесс несколько различен в случаях использования устройств ATAPI и SCSI.
Устройства SCSI
Используйте cdda2wav для извлечения данных аудио.
% cdda2wav -v255 -D2,0 -B -Owav
Воспользуйтесь cdrecord для записи файлов .wav.
% cdrecord -v dev=2,0 -dao -useinfo *.wav
Значение, соответствующее 2,0, должно быть установлено правильно, как это описано в Разд. 17.6.4.
Устройства ATAPI
Драйвер устройств ATAPI CD делает каждую дорожку доступной как /dev/acddtnn, где d является номером привода, а nn соответствует номеру дорожки, который записывается двумя десятичными цифрами с нулЈм в начале, если это нужно. Таким образом, первая дорожка на первом диске будет носить имя /dev/acd0t01, вторая будет именоваться /dev/acd0t02, третья будет носить имя /dev/acd0t03 и так далее.
Удостоверьтесь, что соответствующий файл имеется в каталоге /dev. При его отсутствии следует принудительно перечитать оглавление диска:
# dd if=/dev/acd0 of=/dev/null count=1
Извлеките каждую дорожку при помощи команды dd(1). При извлечении файлов вы должны также использовать специфическое значение для размера блока.
# dd if=/dev/acd0t01 of=track1.cdr bs=2352 # dd if=/dev/acd0t02 of=track2.cdr bs=2352 ...
Запишите извлечЈнные файлы на диск при помощи утилиты burncd. Вы должны указать, что это файлы с аудио, и что burncd должна зафиксировать диск по окончании работы.
# burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate
Вы можете скопировать CD с данными в файл образа, который функционально эквивалентен файлу образа, созданному командой mkisofs(8), и вы можете использовать его для копирования любого CD с данными. В приводимом здесь примере предполагается, что ваш привод CDROM называется acd0. Подставьте название вашего привода CDROM.
# dd if=/dev/acd0 of=file.iso bs=2048
Теперь, когда вы имеете образ, вы можете записать его на CD так, как это описано выше.
Теперь, после того, как вы создали стандартный CDROM с данными, вы, наверное, захотите смонтировать его и считать с него данные. По умолчанию mount(8) предполагает, что файловая система имеет тип ufs. Если вы попытаетесь выполнить что-то вроде:
# mount /dev/cd0 /mnt
вы получите сообщение “Incorrect super block”,
и диск не смонтируется. CDROM не является файловой системой UFS,
поэтому попытки смонтировать его таким образом будут терпеть неудачу. Вам просто нужно
указать команде mount(8), что файловая
система имеет тип ISO9660, и всЈ должно заработать. Сделайте
это, задав параметр -t cd9660
при вызове mount(8). К примеру,
если вы хотите смонтировать устройство CDROM, /dev/cd0, в
каталог /mnt, вы должны выполнить:
# mount -t cd9660 /dev/cd0 /mnt
Заметьте, что имя вашего устройства (/dev/cd0 в этом
примере) может быть другим, в зависимости от интерфейса, используемого в CDROM. Кроме
того, параметр -t cd9660
всего лишь задаЈт выполнение утилиты
mount_cd9660(8).
Пример выше может быть упрощЈн до:
# mount_cd9660 /dev/cd0c /mnt
Таким способом, вообще говоря, вы можете использовать компакт-диски любого
производителя. Диски с некоторыми расширениями ISO 9660 могут, однако, работать со
странностями. К примеру диски Joliet хранят все имена файлов в виде последовательностей
двухбайтовых символов Unicode. Ядро FreeBSD не может работать с Unicode, но CD9660
драйвер способен преобразовывать Unicode символы на лету. Если некоторые символы не
английского алфавита выглядят, как знаки вопроса, то вам нужно указать используемую вами
кодировку с помощью опции -C
. За дополнительной информацией,
обращайтесь к странице справочника mount_cd9660(8).
Замечание: Чтобы смочь произвести преобразование символов посредством опции
-C
, ядру понадобится загрузить модуль cd9660_iconv.ko. Это может быть сделано либо добавлением ниже представленной строчки в loader.conf:cd9660_iconv_load="YES"с последующей перезагрузкой машины, либо загрузкой модуля вручную с помощью kldload(8).
Время от времени вы можете получать сообщения “Device not configured” при попытке смонтировать CDROM. Это обычно означает, что привод CDROM полагает, что в нЈм нет диска, или что привод не виден на шине. Приводу CDROM может понадобиться несколько секунд, чтобы понять, что он был закрыт, так что будьте терпеливы.
Иногда SCSI CDROM может потеряться из-за того, что у него не было достаточно времени, чтобы ответить на сброс шины. Если у вас имеется SCSI CDROM, то, пожалуйста, добавьте следующий параметр в конфигурацию вашего ядра и перестройте его.
options SCSI_DELAY=15000
Это укажет вашей шине SCSI выдерживать 15-секундную паузу во время загрузки, чтобы дать вашему приводу CDROM шанс ответить на сброс шины.
Вы можете предпочесть запись файла непосредственно на CD без создания файловой системы ISO 9660. Некоторые поступают так при создании резервных копий. Это выполняется гораздо быстрее. чем запись стандартного компакт-диска:
# burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate
Для извлечения данных, записанных так на компакт-диск, вы должны считывать данные из файла непосредственного доступа к устройству:
# tar xzvf /dev/acd1
Вы не можете монтировать этот диск как обычный CDROM. Такой компакт-диск не может быть прочитан ни в какой другой операционной системе, кроме FreeBSD. Если вы хотите монтировать CD или обменяться данными с другой операционной системой, то вы должны использовать mkisofs(8) так, как это было описано выше.
Этот драйвер позволяет работать с ATAPI-устройствами (приводы CD-ROM, CD-RW, DVD и так далее) через подсистему SCSI, таким образом расширяя использование таких приложений, как sysutils/cdrdao или cdrecord(1).
Для использования этого драйвера вам необходимо добавить в файл /boot/loader.conf следующую строку:
atapicam_load="YES"
с последующей перезагрузкой машины.
Замечание: Если для вас предпочтительнее статически скомпилировать поддержку atapicam(4) в ядро, то добавьте эту строчку в файл конфигурации ядра:
device atapicamКроме того, в файле конфигурации ядра должны быть следующие строки:
device ata device scbus device cd device passкоторые уже должны там присутствовать. Затем пересоберите, установите новое ядро и перезагрузите компьютер.
В процессе загрузки ваш пишущий привод должен появиться примерно следующим образом:
acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
Теперь с ним можно работать через устройство /dev/cd0, например, чтобы смонтировать CD-ROM в каталог /mnt, просто наберите следующую команду:
# mount -t cd9660 /dev/cd0 /mnt
Для получения SCSI-адреса пишущего привода, вы можете, работая как пользователь root, запустить такую команду:
# camcontrol devlist <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)
Таким образом, 1,0,0 будет SCSI-адресом для использования с cdrecord(1) и другими приложениями для работы со SCSI.
Для получения дополнительной информации об ATAPI/CAM и системе SCSI, обратитесь к страницам справочной системы по atapicam(4) и cam(4).
Пред. | Начало | След. |
USB устройства хранения | Уровень выше | Создание и использование оптических носителей (DVD) |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.