Ключевые слова:cdrom, iso, dvd, linux, cdrecord, udf, (найти похожие документы)
From: Алексей Любимов <avl at linux-os.ru>
Newsgroups: http://www.linux-os.ru
Date: Mon, 17 Sep 2004 18:21:07 +0000 (UTC)
Subject: Запись и копирование cdrw/dvd в Linux
Оригинал: http://www.linux-os.ru/wiki/LinuxTechnology
Преамбула.
----------
При всем многообразии исполнений, все пишущие cdr(w) приводы являют
собой SCSI устройства с минимальными отклонениями.
А раз так, обычно говорят не о типе интерфейса устройства, а о типе
транспорте, через который на это устройство передаются SCSI команды.
Транспорты бывают следующих типов:
* SCSI - просто SCSI транспорт к SCSI устройствам.
* ATAPI - SCSI транспорт к ATAPI устройствам. ATAPI приводы на
текущий момент являются самым массовым предложением на рынке.
* PG - SCSI эмуляция для устройств, подключеных через параллеьный
порт
* RSCSI - SCSI транспорт на удаленное SCSI устройство. Позволяет
писать диски через сеть.
SCSI приводы.
-------------
Для scsi приводов весь процесс подключения нисколько не отличается от
подключения любых других scsi устройств.
Вот стандартная установка на примере scsi адаптера adaptec:
/etc/modules.conf:
...
alias scsi_hostadapter aic7xxx
...
/etc/modules:
scsi_hostadapter
Проверка после загрузки:
#lsmod
...
aic7xxx 164364 6
sd_mod 11900 12
scsi_mod 100864 2 [aic7xxx sd_mod]
...
$ cdrecord --scanbus
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
Linux sg driver version: 3.1.25
Using libscg version 'schily-0.7'
scsibus0:
0,0,0 0) '_NEC ' 'DVD_RW ND-1300A ' '1.06' Removable CD-ROM
0,1,0 1) *
0,2,0 2) 'YAMAHA ' 'CRW2200E ' '1.0D' Removable CD-ROM
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Если этого не произошло, значит или нет контакта в железках или
драйвер scsi контроллера неработоспособен.
Для записи на scsi устройство достаточно указать cdrecord трехзначный
адрес устройства:
$cdrecord dev=0,0,0 ...
$cdrecord dev=0,2,0 ...
ATAPI приводы.
--------------
Большое распостранение на сегодняшний день получили ATAPI приводы.
Включаются они, как обычные ide диски или cdrom-ы, дешевы и практичны.
В линуксе существует два варианта подключения ATAPI устройств:
* SCSI эмуляция.
Вариант со SCSI эмуляцией имеет очевидные преимущества:
+ Совместимость со всеми программами. Все программы для записи
дисков в линуксе поддерживают SCSI устройства.
+ Стабильность. Это наиболее оттестированный режим подключения.
Давно написан.
+ Совместимость с приводами. Самая большая база совместимых
ATAPI приводов.
Настройка подключения практически не отличается от предыдущего
варианта со SCSI, только в качестве модуля контроллера SCSI
используется специальный модуль ide-scsi.
/etc/modules.conf:
...
alias scsi_hostadapter ide-scsi
...
/etc/modules:
scsi_hostadapter
Проверка после загрузки:
#lsmod
...
ide-scsi 9424 0
sg 31676 0 (autoclean)
sd_mod 11900 4
scsi_mod 100864 5 [ide-scsi sg sd_mod]
...
$cdrecord -scanbus
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
Linux sg driver version: 3.1.25
Using libscg version 'schily-0.7'
...
scsibus1:
1,0,0 100) '_NEC ' 'DVD_RW ND-1300A ' '1.06' Removable CD-ROM
1,1,0 101) 'YAMAHA ' 'CRW2200E ' '1.0D' Removable CD-ROM
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *
Работа с ATAPI устройствами в этом режиме ничем не отличается от
обычного режима SCSI:
$cdrecord dev=1,0,0
$cdrecord dev=1,1,0
Замечания к реализации:
можно на ходу переходить на scsi эмуляцию и обратно:
$ sudo rmmod ide-cd; sudo modprobe ide-scsi
$ cdrecord --scanbus
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
Linux sg driver version: 3.1.25
Using libscg version 'schily-0.7'
scsibus1:
1,0,0 100) '_NEC ' 'DVD_RW ND-1300A ' '1.06' Removable CD-ROM
1,1,0 101) 'YAMAHA ' 'CRW2200E ' '1.0D' Removable CD-ROM
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *
$ sudo rmmod ide-scsi; sudo modprobe ide-cd
$ cdrecord --scanbus dev=ATAPI:
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
scsidev: 'ATAPI:'
devname: 'ATAPI'
scsibus: -1 target: -1 lun: -1
Warning: Using ATA Packet interface.
Warning: The related libscg interface code is in pre alpha.
Warning: There may be fatal problems.
Using libscg version 'schily-0.7'
scsibus0:
0,0,0 0) '_NEC ' 'DVD_RW ND-1300A ' '1.06' Removable CD-ROM
0,1,0 1) 'YAMAHA ' 'CRW2200E ' '1.0D' Removable CD-ROM
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Устаревший вариант настройки - в парметры ядра передать
ide-scsi=/dev/hdx где /dev/hdx - устройство
ATAPI режим.
------------
Вариант с ATAPI режимом появился весьма недавно. Но в ядре 2.6.x
он уже стал основным. Так что за ним будущее.
Преимущества ATAPI транспорта:
+ Это самый быстрый режим.
+ Этот транспорт уже поддерживается всеми основными
компонентами - ядрами 2.4.x, 2.6.x, cdrecord и cdrdao.
+ Простота настройки.
Специально настраивать ничего не надо. Достаточно подключить
приводы и загрузиться.
Проверка:
cdrecord --scanbus dev=ATAPI:
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
scsidev: 'ATAPI:'
devname: 'ATAPI'
scsibus: -1 target: -1 lun: -1
Warning: Using ATA Packet interface.
Warning: The related libscg interface code is in pre alpha.
Warning: There may be fatal problems.
Using libscg version 'schily-0.7'
scsibus0:
0,0,0 0) '_NEC ' 'DVD_RW ND-1300A ' '1.06' Removable CD-ROM
0,1,0 1) 'YAMAHA ' 'CRW2200E ' '1.0D' Removable CD-ROM
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Для записи на устройство с таким типом подключения необходимо
указывать не только адрес устройства, но и транспорт ATAPI:
$cdrecord dev=ATAPI:0,0,0 ...
$cdrecord dev=ATAPI:0,1,0 ...
Итак, привод подключен и cdrecord его "увидел". Можно переходить
непосредтственно к записи дисков...
Продолжение: Базовые операции записи на cdr(w)
Оригинал: http://www.linux-os.ru/Members/avl/news/LinuxCDRW
Запись диска можно разделить на два этапа:
* Подготовка образа диска.
* Непосредственно прожиг болванки в соответствии с этим образом.
Первую задачу выполняет утилита mkisofs, вторую - cdrecord.
Создание образа диска из файлов:
--------------------------------
Предположим, что все файлы, которые мы хотим записать на диск, уже
разложены в директории ~/cdr
Тогда команда, создающая образ, будет примерно такой:
mkisofs -o ~/tmp/test.iso -jcharset koi8-r -r ~/cdr/
Использованные опции:
-o ~/tmp/test.iso
говорит, что образ будет записан в файл ~/tmp/test.iso
-jcharset koi8-r
включает расширение joilet и переконвертацию русских имен в
юникод из koi8-r. Это все нужно указывать в том случае, если
диск предполагается использовать под виндовс.
-r
данная опция включает расширение rock ridge. Нужна для
беспроблемного чтения диска под линуксом и юниксами.
Еще полезно знать о существовании опции -joliet-long. Эта опция
позволяет записывать диски для виндовс с именами файлов до 103
символов. Иначе имена файлов урежутся до 32 символов.
mkisofs -o ~/tmp/test.iso -jcharset koi8-r -r ~/cdr/
Using TCOMM000.GIF;1 for /home/avl/cdr/Docs/PunkBuster/admins/tcommands2.gif (tcommands1.gif)
Using TCOMM000.GIF;1 for /home/avl/cdr/Docs/PunkBuster/players/tcommands2.gif (tcommands1.gif)
1.99% done, estimate finish Sun Feb 29 02:45:40 2004
3.99% done, estimate finish Sun Feb 29 02:45:40 2004
...
97.58% done, estimate finish Sun Feb 29 02:45:32 2004
99.57% done, estimate finish Sun Feb 29 02:45:32 2004
Total translation table size: 0
Total rockridge attributes bytes: 9740
Total directory bytes: 22528
Path table size(bytes): 136
Max brk space used 12d24
251088 extents written (490 Mb)
Проверка образа диска.
----------------------
Всегда полезно проверить только что записанный образ...
$ sudo mount -t iso9660 -o loop ~/tmp/test.iso /mnt/disk
$ ls /mnt/disk
baseq3 INSTALL q3ded quake3.x86
botlib.log missionpack quake3 quake3.xpm
CHANGES-1.32.txt pb quake3-smp README-Id-7-26-01.html
Docs Q3A_EULA.txt quake3-smp.x86 README-linux.txt
$ sudo umount /mnt/disk
Запись образа с диска в файл (копия диска):
-------------------------------------------
Если речь идет о стандартном диске с данными, то прекрасно подойдет
утилита readcd из пакета cdrecord. В случае videocd или диске с
музыкой, программа readcd не поможет, зато подойдет утилита cdrdao.
readcd dev=ATAPI:0,1,0 f=~/tmp/test.iso
Использованные опции:
dev=ATAPI:0,1,0
устройство, с которого читаем. Список устройств можно узнать по
команде cdrecord -scanbus или cdrecord -scanbus dev=ATAPI:
f=~/tmp/test.iso
указывает файл, куда будет записан образ.
$readcd dev=ATAPI:0,1,0 f=~/tmp/test.iso
Read speed: 7056 kB/s (CD 40x, DVD 5x).
Write speed: 3528 kB/s (CD 20x, DVD 2x).
Capacity: 166496 Blocks = 332992 kBytes = 325 MBytes = 340 prMB
Sectorsize: 2048 Bytes
Copy from SCSI (0,1,0) disk to file '/home/avl/tmp/test.iso'
end: 166496
addr: 166496 cnt: 50
Time total: 168.143sec
Read 332992.00 kB at 1980.4 kB/sec.
Запись диска.
-------------
Непосредственно запись диска производится утилитой cdrecord примерно
таким образом:
cdrecord dev=ATAPI:0,1,0 driveropts=burnfree ~/tmp/test.iso
Использованные опции:
dev=ATAPI:0,1,0
устройство, на которое пишем.
driveropts=burnfree
использовать защиту от опустошения буфера при записи. Эта
функция не обязательна и вообще должна поддерживаться приводом,
но на больших скоростях крайне желательно ее включать.
~/tmp/test.iso
файл с образом диска.
Полезные опции:
-v
выводит доп. информацию в процессе записи. В частности,
индикатор прогресса.
-dummy
режим симуляции. полезен для отладки процесса записи.
cdrecord -dummy dev=ATAPI:0,1,0 driveropts=burnfree ~/tmp/test.iso
Cdrecord 2.0 (i586-alt-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
scsidev: 'ATAPI:0,1,0'
devname: 'ATAPI'
scsibus: 0 target: 1 lun: 0
Warning: Using ATA Packet interface.
Warning: The related libscg interface code is in pre alpha.
Warning: There may be fatal problems.
Using libscg version 'schily-0.7'
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC
Vendor_info : 'YAMAHA '
Identifikation : 'CRW2200E '
Revision : '1.0D'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : MMC-3 SWABAUDIO BURNFREE FORCESPEED
Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R96R
Starting to write CD/DVD at speed 20 in dummy TAO mode for single session.
Last chance to quit, starting dummy write 0 seconds. Operation starts.
Track 01: Total bytes read/written: 340983808/340983808 (166496 sectors).
Запись диска без создания промежуточного файла-образа "на лету".
----------------------------------------------------------------
Часто нет никакого резона создавать "одноразовый" файл с образом,
чтобы после записи его сразу удалить и больше о нем не вспоминать.
В таких случаях можно просто направить вывод mkisofs в cdrecord:
mkisofs -jcharset koi8-r -r ~/cdr/ | cdrecord dev=ATAPI:0,1,0 driveropts=burnfree -
Как нетрудно заметить, этот вариант представляет собой конвейер из
команды создания образа и команды записи образа на диск. В команде
создания образа пропущена опция - имя файла. В таком варианте образ
направляется на стандартный вывод программы, а в команде записи в
качестве имени файла указан дефис. Таким образом cdrecord узнает, что
образ надо брать со стандартного потока ввода программы.
Продолжение: Запись CD-R/RW в формате UDF на ALT Linux Compact 2.3
Автор: Jose <http://www.linux-os.ru/Members/Jose>
Введение
--------
Точно даже не скажу откуда мне пришла мысль начать прикручивать эту
фишку (запись на UDF отформатированные CD-R \CD-RW). До этого имел
дело с пакетной записью на CD-RW год назад под Window$. НО. Мысль
появилась. Значит будем воплощать в жизнь.
Что такое UDF
-------------
UDF это файловая система, которая позволяет пакетную запись на
CD-диски.CD-диск в таком случае выглядит как маленький жесткий диск,
или как ну очень большая дискета 8-)Вам не нужно создавать образы
дисков, Вам можно забывать про открытие\закрытие сессий.
UDF и Linux
-----------
Интересно, как это все реализовано в Linux? Или Вы думаете, что в
Линуксе этого нет?
Если полезть немного в истрию, то выяснится, что поддержка файловой
системы UDF появилась в ядрах серии 2.4. Но для CDR\CDRW только в
режиме чтения. Не совсем интересно.Поддержка записи на UDF в ванильное
ядро не включена. Патч нужен. Называется нехитро
packet-версия_ядра.patch.Ну и как бы нужно начинать старую песню -
пересборку ядра с включением этого патча.
А теперь хватит истории и лезем в Sisyphus. У меня срез от
5.02.2004.Есть и исходники. НО. ALT Linux Team собирает несколько
версий ядра, каждая со своим набором патчей.Смотрим доступные ядра на
предмет наличия данного патча.
Серверные ядра смело пропускаем. Альтовцы трепетно относятся к
включению чего-то лишнего в серверные ядра. А вот смотрим в ядре wks:
Пакет kernel-image-wks-up-2.4.22-alt3
This package contains the Linux kernel that is used to boot and run
your system. It contains few device drivers for specific hardware.
Most hardware is instead supported by modules loaded after booting.
Patches included:
kernel-fix-build-2003.04.23-alt8
kernel-fix-security-owl-2003.08.28-alt1
kernel-feat-core-win4lin-2.4.22-alt1 =>поддержка эмулятора Win4Lin
kernel-fix-net-2003.11.09-alt1
kernel-fix-core-2003.11.09-alt1
kernel-fix-fs-2003.11.21-alt1
kernel-fix-lvm-2003.11.06-alt1
kernel-fix-drivers-ide-2003.11.06-alt7
kernel-fix-drivers-net-2003.11.18-alt1
kernel-fix-drivers-pci-2003.11.06-alt1
kernel-fix-drivers-scsi-2003.11.18-alt1
kernel-fix-drivers-sound-2003.11.06-alt1
kernel-fix-drivers-usb-2003.11.09-alt1
kernel-fix-drivers-cdrom-2003.11.06-alt1
kernel-fix-drivers-char-2003.11.06-alt1
kernel-fix-drivers-md-2003.07.08-alt10
kernel-fix-drivers-mtd-2003.09.16-alt1
kernel-fix-drivers-video-2003.10.19-alt1
kernel-fix-drivers-ieee1394-2003.11.06-alt1
kernel-fix-drivers-atm-2003.10.19-alt1
kernel-fix-security-2003.11.29-alt1
kernel-feat-fs-xfs-1.3-alt5
kernel-feat-acpi-2003.11.21-alt1
kernel-feat-cpufreq-2003.11.28-alt1
kernel-feat-i2c-2.8.1-alt1 =>поддержка подсистемы i2c (с помощью этого
чуда у меня всегда перед глазами: t процессора и чипсета ..)
kernel-feat-fs-ntfs-2.1.4c-alt1
kernel-feat-kconfig-2003.05.22-alt4
kernel-feat-crypto-2003.10.02-alt1
kernel-feat-drivers-usb-2003.09.29-alt1
kernel-feat-drivers-block-enbd-2.4.31-alt5
kernel-feat-drivers-pktcdvd-2003.08.25-alt1 => ВОТ он он.
kernel-feat-drivers-video-splash-3.0.7-alt5
kernel-feat-net-ppp-mppe-20030707-alt1
kernel-feat-net-ipsec-2.00-alt3
kernel-feat-drivers-media-v4l2-2003.08.14-alt3
kernel-feat-drivers-net-sk98lin-6.17-alt1
kernel-feat-drivers-sound-emu10k1-0.20-alt1.a => поддержка звуковых карточек от Creative
kernel-feat-drivers-libata-2003.11.28-alt1
kernel-fix-drivers-media-2003.09.09-alt1
kernel-feat-core-supermount-1.2.9-alt1 => поддержка supermount
kernel-feat-core-setcap-2.4.21-alt0.1
kernel-feat-core-lowlatency-2.4.22-alt2 => почти realtime 8-)
Собственно ставим это ядро. Хоть rpm`ом, хоть apt-get`ом,а еще лучше
через Synaptic.Не сколько лучше, сколько красивее и удобнее. Модули к
ядру новому ставим.Если кто не понимает об чем речь, то вперед - на
atmsk.ru. Там статьи имеются о новой схеме сборки ядер в дистрибутивах
от ALT Linux Team.
Далее добавляем в /etc/modules.conf следующие строчки:
# Packet CD writing
alias block-major-97 pktcdvd
alias /dev/pktcdvd[0-9]* pktcdvd
Потом добавляем в /etc/rc.d/rc.local (если такого файла нет, создаем и
даем ему права на выполнение):
#!/bin/sh
pktsetup /dev/pktcdvd0 /dev/scd0
Использование программы pktsetup.
---------------------------------
Данная программа используется для ассоциации пакетного устройства с
блочными CD bkb DVD устройствами, после чего пакетное устройство может
быть монтировано, как файловая система с возможностью чтения\записи.
Это требует поддержки ядром пакетных устройств и файловой системы UDF.
СИНТАКСИС:
pktsetup пакетное_устройство блочное_устройство
или для удаления ассоциации:
pktsetup -d пакетное_устройство
Короче говоря, без этого после перезагрузки придется каждый раз делать
pktsetup /dev/pktcdvd0 /dev/scd0. У меня CD-ROM работает через
эмуляцию SCSI, поэтому /dev/scd0. У Вас может быть по другому.
Еще, чтобы не монтировать врукопашную делаем новую точку монтирования.
Создаем каталог /mnt/cdrw и заносим все это в /etc/fstab:
/dev/pktcdvd0 /mnt/cdrw auto rw,user,noauto,iocharset=koi8-r,umask=0,noatime0 0
Эх. Проинициализировать все это нужно. Самый легкий путь -
перезагрузиться. Ладно, совершаем кощунственное для линуксоидов
действо -перезагружаемся.
Перезагрузились. Это хорошо. А теперь пошли дальше. Где же нам взять
UDF болванку? Давайте сами сделаем. Берем CDRW диск. Еще нам нужен
пакет udftools. Берем его опять же в Сизифе.(Пользователям Альтлинукса
вообще редко приходится на сторону ходить 8-)Все из одних рук.)
в udftools входят:
* cdrwtool
* mkudffs
* pktsetup
* udfsck
* wrudf
Но нам они все не нужны. Нам нужна только cdrwtool.
Подготавливаем CDRW болванку (стираем и форматируем ее под UDF)
СИНТАКСИС:
cdrwtool -d устройство -q
Для нашего случая:
# cdrwtool -d /dev/scd0 -q
Подтверждаем, что мы все-таки хотим отформатировать диск и все данные
на нем будут потеряны. И процесс пошел. 4-х скоростную RW`шку у меня
долго круговертило.Не стоит на этом заморачиваться - быстрее не
сделаете. Лучше кофе\чай\покурить.
Ну а после того как отформатировало пробуем на болванку писать. Я
использую оконный менеджер KDE.Соответственно и писать буду в нем же.
В настройках KDE у меня прописано отображать устройства на рабочем
столе, в частности смонтированые\отмонторованые CD-Writer ,CD-ROM.
Поэтому на рабочем столе у меня есть 2 пиктограммы: одна для
/mnt/cdrom, другая для /mnt/cdrw. Под последней надпись (pktcdvd0).
Просто щелкаем на нем мышкой и открывается содержимое UDF диска. Берем
для пробы перетаскиваем нужные нам файлы на диск.Только не
эксперементируйте с каталогом Mail. Это было первое, что я попытался
записать.А там у меня альтовская рассылка более 7000 писем и каждое в
своем файле. Сначала я просто ждал, потом пил чай, потом еще ждал. В
общем долго дело было.
После всех вышеперечисленных действий запись на UDF диск должна
выглядеть для Вас не сложнее чем запись на любой другой съемный
носитель. У меня, например, все работает. Чего и Вам желаю.
Дополнение:
В принципе, можно использовать одну точку монтирования /mnt/cdrom/. Но
что-то мне это не понравилось.
Пользователи Mandrake Linux захотят все сделать через supermount.
Тогда в /etc/fstab пишем:
none /mnt/cdrw supermount dev=/dev/pktcdvd0,fs=udf:iso9660,rw,--,iocharset=koi8-r 0 0
Но при этом у меня очень долго открывались файлы и каталоги на диске.
И очень часто светился индикатор записи на CD, хотя я всего лишь
производил операции чтения. Если у кого получится нормально, то не
скромничайте - дополняйте, исправляйте.
С уважением. Jose.
Спасибо за содействие Константину Лепихову aka L.A. Kostis.
Создано: Jose
Последнее изменение: 2004-03-14 08:30
А никто не знает, почему, если записывать диск в ATAPI режиме, в syslog появляется куча сообщений об ошибках в командном пакете? И при этом диск читается нормально?
У меня на ядре 4.6.9 режим ATAPI работает на компах с чипсетом sis и intel 815, а на intel 845 - не работает. На вышеперечисленных чипсетах пробовал и одинаковые и разные приводы: Nec и Aopen (модели не помню, MMC-совместимые, достаточно новые). По-моему, ядро не поддерживает новые чипсеты в режиме ATAPI.
Всё сделал, как сказано в статье, но CDRW привод в cdrecord -scanbus так и не появился.
# cdrecord -scanbus
Cdrecord 1.11a32 (i586-mandrake-linux-gnu) Copyright (C) 1995-2002 JЖrg Schilling
cdrecord: No such file or directory. Cannot open '/dev/pg*'. Cannot open SCSI driver.
cdrecord: For possible targets try 'cdrecord -scanbus'. Make sure you are root.