Запись и копирование CD-RW/DVD в Linux. Часть 2.

В статье рассмотрена общая схема процесса записи дисков с использованием пакета cdrecord

[www.linux-os.ru]

Запись и копирование CD-RW/DVD в Linux. Часть 1.

Базовые операции записи на cdr(w)

Запись диска можно разделить на два этапа:

  • Подготовка образа диска.
  • Непосредственно прожиг болванки в соответствии с этим образом.

Первую задачу выполняет утилита 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).

Также можно дополнить cdrecord.conf (для дистрибутива Fedore Core 2).

Пример конфига:

 #
  ...
 #
 CDR_DEVICE=cdrom                                                                                                                 
 #
   ...
 #
 #CDR_SPEED=40                                                                                                               
 #
 # The default FIFO size if, not specified elswhere
 #
 CDR_FIFOSIZE=4m                                                                                                                             
 #
 # cdrecord use it's intercal drive specific defaults.
  ...
 # drive name    device  speed   fifosize driveropts
 #
  cdrom=          ATAPI:0,1,0     -1      -1      burnfree

Таким образом строчка команды становится несколько короче, и выглядет следующим образом:

 $cdrecord -dao /tmp/test.iso

Запись диска без создания промежуточного файла-образа "на лету".

Часто нет никакого резона создавать "одноразовый" файл с образом, чтобы после записи его сразу удалить и больше о нем не вспоминать.

В таких случаях можно просто направить вывод mkisofs в cdrecord:

mkisofs -jcharset koi8-r -r ~/cdr/ | cdrecord dev=ATAPI:0,1,0 driveropts=burnfree -

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

Источник: www.linux-os.ru WiKi.

[ опубликовано 23/09/2004 ]

www.linux-os.ru - Запись и копирование CD-RW/DVD в Linux. Часть 2.   Версия для печати