CD-Writing HOWTO: Готовим ваш Linux к записи CD-ROM

Next Previous Contents

## 2. Готовим ваш Linux к записи CD-ROM

Эта секция применима ко всем типам CD-writer-ов, включая устройства SCSI, IDE/ATAPI и для параллельного порта. Последние два типа устройств требуют драйверов совместимости, производя впечатление реальных SCSI устройств. С одной строны такая унифицикация проста ("все есть SCSI"), потому что на уровне приложений Вы можете разделять знания с другими пользователями не взирая на свойства CD-writer-а. С другой стороны, Вы можете реконфигурировать приложения подобные проигрывателям музыкальных CD или утилиту монтирования для отражения изменения имени драйвера. Например, Ваш ATAPI CD-writer доступен через фал устройства /dev/hdc, Вы можете иметь доступ посредством /dev/scd0 после активизации драйверов SCSI совместимости.

Если Вы правильно установили вашу аппаратуру и Linux, команда `cdrecord -scanbus` покажет вам список устройств имеющихся для записи. Цель этой главы - полностью установить вашу Linux систему, т.о. в конце Вы должны получить что-то вроде:

> `

>     shell> cdrecord -scanbus
>     Cdrecord release 1.7a1 Copyright (C) 1995-1998 JЖrg Schilling
>     scsibus0:
>               0) 'Quantum ' 'XP34300         ' 'F76D' Disk
>               1) 'SEAGATE ' 'ST11200N        ' '8334' Disk
>               2) *
>               3) 'TOSHIBA ' 'MK537FB/        ' '6258' Disk
>               4) 'WANGTEK ' '5150ES SCSI-36  ' 'ESB6' Removable Tape
>               5) 'EXABYTE ' 'EXB-8500-85QUE  ' '0428' Removable Tape
>               6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
>               7) *
>     scsibus1:
>             100) 'Quantum ' 'XP31070W        ' 'L912' Disk
>             101) *
>             102) *
>             103) 'TEAC    ' 'CD-R55S         ' '1.0H' Removable CD-ROM
>             104) 'MATSHITA' 'CD-R   CW-7502  ' '4.02' Removable CD-ROM
>             105) *
>             106) 'YAMAHA  ' 'CDR400t         ' '1.0d' Removable CD-ROM
>             107) *

> Листинг 1: Обнаружение устройств на вашей SCSI-шине`

Пример предоставлен JЖrg Schilling и показывает всего четыре CD-writers. Заметьте, что -scanbus также показывает другие устройства, такие как CD-ROM и жесткие диски. Последний столбец дает SCSI описание устройства, по которому вы не сможете отличить обычное CD-ROM устройство от устройства с возможностью записи. Но идентификатор продукта (средний столбец) часто содержит подсказку об этом свойстве в R, -R, или -RW.

## 2.1 Установка ядра Linux

Ядро Linux может быть оснащено драйверами для различных свойств. Вы можете компилировать драйвера в образ ядра статически, или компилировать как модули и загружать при необходимости. Последний метод предпочтительней для драйверов не существенных для оживления вашей Linux системы, так как при этом ваше ядро будет меньше и быстрее. Однако, некоторые драйвера необходимы для системы и Вы не должны компилировать их как модули. Например: если ваша система находится на жестком диске IDE, драйвер жесткого диска IDE должен содержаться в ядре, а не в модуле.

Существует три различных типа CD-writer-ов: SCSI, IDE/ATAPI и внешние устройства на параллельный порт. Таблица 4 показывает как сконфигурировать ядро Linux для этих типов аппаратуры. Первый столбец таблицы - секция конфигурационного меню ядра, где Вы видите установки. Второй столбец - описание свойства (также взято из конфигурационного меню ядра). Третий столбец - показывает имя результирующего модуля. Столбцы названые SCSI, IDE и PP содержат необходимую опцию для соответствующей аппаратуры (PP= параллельный порт)

> `

>     Sect.  Description                 Module   SCSI  IDE   PP
>     ------------------------------------------------------------
>     BLOCK  Enhanced IDE/MFM/RLL...                     Y
>     BLOCK  IDE/ATAPI CDROM             ide-cd          M
>     BLOCK  SCSI hostadaptor emulation  ide-scsi        M
>     BLOCK  Loopback device             loop       M    M     M

>     PARIDE Parallel port IDE device    paride               Y/M
>     PARIDE Parallel port ATAPI CD-ROMs                       M
>     PARIDE Parallel port generic ATAPI                       M
>     PARIDE (select a low-level driver)                       Y

>     SCSI   SCSI support                scsi_mod  Y/M  Y/M
>     SCSI   SCSI CD-ROM support         sr_mod    Y/M  Y/M
>     SCSI     Enable vendor-specific               Y    Y
>     SCSI   SCSI generic support        sg        Y/M  Y/M
>     SCSI   (select a low-level driver)            Y

>     FS     ISO 9660 CDROM filesystem   iso9660    Y    Y     Y
>     FS     Microsoft Joliet cdrom...   joliet    M/Y  M/Y   M/Y

> Таблица: выбор драйвера для различных типов устройств`

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

Компиляция петлевого устройство необязательна. Это поможет Вам тестировать образ перед записью на носитель. Если Вы хотите читать CD-ROMы, Вам нужна поддержка файловой системы ISO9660. Этот драйвер автоматически включает поддержку расширения RockRidge. Расширение Microsoft Joliet, полностью добавлено в ISO9660 файловую систему. В любом случае Вам нужен драйвер низкого уровня для Вашего оборудования. Низкий уровень обозначает драйвер, который взаимодействует с вашим оборудованием. Для SCSI и параллельного порта существует много драйверов низкого уровня.

Для загрузки модулей Вы должны либо перечислить их в конфигурационном файле, таком как /etc/modules или запустить демонов kerneld или kmod, которые автоматически загружают требуемые модули когда ядро их ищет. Чтобы сделать Ващу жизнь проще, Вы можете добавить следующие строки в /etc/conf.modules:

> `

>     alias   scd0 sr_mod                  # загружает sr_mod при доступе к scd0
>     alias   scsi_hostadaptor ide-scsi    # эмуляция адаптера SCSI
>     options ide-cd ignore=hdb            # если ваш CD-writer - /dev/hdb

> Некоторые установки для использования IDE/ATAPI устройств записи`

Псевдонимы (aliases) предоставляют альтернативные имена для тех же модулей и не существенны. options предоставляют путь для создания опций для постоянной загрузки модуля, таким образом Вы можете успешно использовать их с modprobe/insmod. Для информации о различных опциях для различных модулей, читайте.

> `

>     Описание                        Команда
>     -------------------------------------------------
>     Список активных драйверов       cat /proc/devices
>     Список активных модулей         cat /proc/modules
>     Список имеющихся модулей        modprobe -l
>     Удалить модуль                  modprobe -r
>     Загрузить модуль вручную        modprobe
>     Загрузить модуль при старте     echo "перечислите их в /etc/modules"
>                                     (пожалуйста, сверьтесь с руководством вашего дистрибутива)
>     Загрузить модули по требованию  echo "запустите kmod или kerneld"

> Таблица: команды для работы с модулями ядра и драйверами`

Если Вам нужен модуль не имеющийся в системе, вы должны перекомпилировать и переустановить ядро. Для подробностей, пожалуйста, читайте Kernel HOWTO. Если Вы успешно создали или нашли требуемые модули, либо добавьте их в /etc/modules или используйте автоматические возможности (kmod, kerneld) для их загрузки. Сверьтесь с документацией вашего Linux дистрибутива, если не уверены.

Если Вы сам себе хозяин, попробуйте установить пакет "Linux Kernel source", который прилагается к Вашему дистрибутиву. После чего используйте следующие команды:

> `

>     cd /usr/src/linux
>     make menuconfig  # следуйте инструкциям и меню
>     make dep
>     make zImage      # или "make bzImage"
>     # вставьте дискету перед продолжением
>     dd if=arch/i386/boot/zImage of=/dev/fd0
>     make modules
>     make modules_install

> Таблица: создание загрузочной дискеты`

Это должно создать загрузочную дискету. Если Вы действительно не догадываетесь о чем речь, лучше прочитайте документацию Kernel HOWTO или попросите друга, прежде чем полностью потеряете систему.

### Специальные подсказки для ядра до 2.2.9

Владельцы ATAPI CD-writers внимание: если Ваше ядро обнаруживает Ваше устройство как ATAPI при старте системы, у Вас нет шансов использовать CD-writer под Linux. Как только IDE/ATAPI драйвер захватывает устройство, SCSI драйвер (поверх эмуляции SCSI адаптера) не сможет это сделать. Пожалуйста, перекомпилируйте ядро с модульной поддержкой CD-ROM, как показано выше.

С 2.2 и выше, Вы можете управлять прожорливостью ide-cd драйвера параметром "ignore=". Если Вы используете это, драйвер не захватит указанное устройство, таким образом оно будет доступно, когда активируется эмуляция адаптера SCSI. Например: используйте "modprobe ide-cd ignore=hdb", если Ваше ATAPI устройство записи - hdb и Вы хотите, чтобы ide-scsi драйвер работал с hdb как со scsi устройством [обычно sr0]. Нет пути указать это в командной строке ядра (как в ядре 2.0).

До версии 2.2.9, не включайте CONFIG_SCSI_MULTI_LUN ('probe for multiple luns') и ide-scsi поддержку вместе, существует ide-scsi ошибка которая мешает этому.

Некоторые пользователи сообщают о конфликтах с предкомпилированными бинарниками и 2.2-релизом. Это проблемы ядра Linux. Решения:

- можно перекомпилировать cdrecord, таким образом включить действительные значения в linux/include/scsi/sg.h Эти значения должны быть значениями запущенного ядра из-за немого (dump) sg пользовательского интерфейса.
- Это может быть вызвано загружаемым sg драйвером, который не может получить достаточно памяти для DMA (релизы ядра до 2.2.5)

### Специальные подсказки для ядра 2.2.10 и вышеМне сообщили, что ядра начиная с 2.2.10 продвинулись предоставляя обе опции из 2.0.xсерии и 2.2.x серии. Автор рекомендует стратегию сообщения ядру, какое устройствоядра будет управляться каким драйвером, как в 2.0.37. Следующее описывает этот метод.

### Специальные подсказки для 2.0 серии

Ядра до 2.0.31 имеют несколько ошибок и не могут считать последний файл на CD-ROM. Пожалуйста обновите до 2.0.37 или выше. Для этой версии, свойство, которое называлось "SCSI emulation" было переименовано в "SCSI host adapter emulation".

С 2.0.37 и выше Вы можете выбрать какой драйвер (IDE или SCSI) использовать с каким ATAPI устройством. Чтобы быть более точным, Вы можете добавить свойство "SCSI hostadaptor emulation" в Ваше ядро и активировать эмуляцию для указанных устройств в командной строке ядра (при загрузке). Например, если Ваш CD-writer на устройстве /dev/hdb, тогда добавьте выражение hdb=ide-scsi. Следующая распечатка показывает эти установки применимо к менеджерам загрузки LILO и chos.

> `

>     image=/boot/zImage-2.0.37
>       label=Linux
>       read-only
>       append="hdb=ide-scsi"

> Листинг 2: Пример конфигурации для lilo (/etc/lilo.conf)`

> `

>     linux "Linux 2.0.37" {
>             image=/boot/zImage-2.0.37
>             cmdline= root=/dev/hda5 readonly hdb=ide-scsi
>     }

> Листинг 3: Пример конфигурации для chos (/etc/chos.conf)`

## 2.2 Аппаратура и устройства

После установки всех необходимых драйверов, загрузите новое ядро. Оно должно содержать все необходимые Вам свойства для следующий секций.

[Пользователи devfs могут не беспокоится о следующих шагах ручной установки файлов устройств. Если Вы используете devfs, все будет автоматически появляться в нужном месте.]

Войдите в `/dev`-каталог и проверьте петлевые устройства Это не критично, если у Вас нет этих устройств, но удобнее если есть. (см. 3.5). Если они у Вас есть , то `ls` -команда должна показать `loop0`-`loop7`:

> `

>     shell> cd /dev
>     shell> ls loop*
>     loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7

> Листинг: файлы устройств для обратной связи`

Если у Вас нет этих устройств, создайте их, используя `/dev/MAKEDEV`-скрипт:

> `

>     shell> cd /dev/
>     shell> modprobe loop   # загрузить модуль loop
>     shell> ./MAKEDEV loop

> Листинг: команды для создания петлевых устройств`

Последняя команда выполняется правильно, если у Вас есть `loop`-модуль в ядре. Что Вы читали о loop-файлах устройств может быть применимо ко всем другим файлам устройств (sg*, pg*, hd*, ...) и это не явно указано далее в документе.

В случае, если Ваш дистрибутив Linux не содержит сценария /dev/MAKEDEV, создайте файлы устройств вручную этим циклом:

> `

>     for i in 0 1 2 3 4 5 6 7
>     do
>             mknod /dev/loop$i c 7 $i
>     done

> `

### IDE/ATAPI CD-writers

ATAPI - расширение для IDE устройств, которые существуют во всех новых IDE устройствах. Расширения позволяют использовать SCSI-протокол по IDE шине. Вместе с модулем ide-scsi, который превращает Ваш IDE-контроллер частично в SCSI-контроллер, Вы можете обращаться с Вашими IDE/ATAPI устройствами, как со SCSI. Таким образом просто загрузите этот модуль и продолжайте, как будто у Вас есть SCSI устройство.

### SCSI-writers

Пожалуйста убедитесь, что Ваше устройство записи распознается BIOSом Вашего компьютера. Не имеет смысла продолжать, если компьютер не принял аппаратуру (факт что она не разговаривает не должен пониматься как подтверждение; требуется сообщение на экране).

Если Вы планируете соединять Ваше SCSI устройство к параллельному порту (не путайте с IDE устройством для параллельного порта), Вам нужен специальный кабель и специальный драйвер ядра. Прочтите http://www.torque.net/parport/parscsi.html, чтобы узнать больше об этой опции.

### Обобщенные SCSI устройства.

Файлы устройств /dev/sd* и /dev/sr* для доступа к SCSI жестким дискам и SCSI CD-ROM-ам ограничены блочно-ориентированными передачами данных. Это делает их быстрыми и идеально подходящими для накопителей. Управление лазером CD-writer-а более сложная задача и требует больше, чем блочные передачи. Для сохранения sd* и sr* устройств быстрыми и чистыми, был введен новый тип SCSI устройств и назван обобщенными SCSI устройствами. С помощью обобщенных устройств со SCSI-аппаратурой может быть сделано все, они не предназначены для конкретной цели - следовательно называются обобщенными.

Как и другие устройства, Вы можете найти их в /dev каталоге (по соглашению)

> `

>     shell> cd /dev
>     shell> ls sg*
>     sg0  sg1  sg2  sg3  sg4  sg5  sg6  sg7

> `

Если у Вас нет этих файлов устройств, тогда создайте их используя `/dev/MAKEDEV` скрипт:

> `

>     shell> cd /dev/
>     shell> ./MAKEDEV sg

> `

Если в Вашем дистрибутиве Linux отсутствует скрипт /dev/MAKEDEV, тогда создайте устройства вручную таким циклом:

> `

>     for i in 0 1 2 3 4 5 6 7
>     do
>             mknod /dev/sg$i c 21 $i
>     done

> `

### CD-writer-ы для параллельного порта

Извините, но у меня нет догадок относительно этого. Пожалуйста, читайте http://www.torque.net/parport/paride.html или ваш локальный файл /usr/src/linux/Documentation/paride.txt.

## 2.3 Получение программного обеспечения для создания компакт-дисков

Более детальный обзор инструментов связанных с созданием CD-ROM-ов имеется на http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.

### Утилиты командной строки

Один из следующих пакетов нужен, для создания образов CD-R: (требуется только для CD-ROM с данными)

> ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)

> ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)

Для записи образов на CD-R, Вам нужен один из следующих программных пакетов:

> ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)

> http://www.ping.de/sites/daneb/cdrdao.html (cdrdao)

Не доверяйте странице руководства (старой) `mkisofs`, которая заявляет, что Вам нужна версия 1.5 `cdwrite`. Используйте только cdrecord, и все будет в порядке. Пожалуйста, заметьте, новые версии cdrecord поставляются с расширенной версией mkisofs и некоторыми дополнительными утилитами в каталоге misc/ (readcd,isosize).

### Графический интерфейс пользователя (опционально)

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

X-CD-Roast - программный пакет посвященный простому созданию CD под Linux. Она объединяет инструменты командной строки, такие как `cdrecord` и `mkisofs`, в хороший графический интерфейс.

> http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html

BurnIT - JAVA оболочка к cdrecord, mkisofs и cdda2wav-0.95, создающая полный пакет для создания CD на UNIX платформе. Она доступна по

> http://sunsite.auc.dk/BurnIT/

XDaodio

Это графическая оболочка к cdrdao. Главная ее цель - 1:1 копирование аудио CD.

> http://www.lrz-muenchen.de/~MarkusTschan/

Next Previous Contents