在 Linux 上刻录 DVD+R DL 介质的命令行?

在 Linux 上刻录 DVD+R DL 介质的命令行?

Linux系统上的Plextor PX-750A在尝试使用growisofs和Schilling cdrecord程序刻录8GB DVD .iso文件时制作了许多DVD+R DL杯垫。

我首先尝试了growisofs:

growisofs --version
* growisofs by <[email protected]>, version 7.0,
  front-ending to genisoimage: genisoimage 1.1.8 (Linux)

命令行是:

growisofs -dvd-compat -Z /dev/sr1=SUU_14.03.00_A00.iso

-dvd-compat还尝试删除该选项。

还尝试了 Schilling cdrtools:

Cdrecord-ProDVD-ProBD-Clone 3.00 (i686-pc-linux-gnu) Copyright (C) 1995-2010 Jörg Schilling

命令行是:

/usr/local/bin/cdrecord -v dev=ATAPI:1,0,0 SUU_14.03.00_A00.iso

在这两种情况下,刻录都会中止,就好像它写入了一层并在应该移动到第二层时发出嘎嘎声。

增长:

 4275175424/8434493440 (50.7%) @1.6x, remaining 22:03 RBU 100.0% UBU  94.4%
:-[ WRITE@LBA=1fdb40h failed with SK=3h/ASC=0Ch/ACQ=00h]: Input/output error
:-( write failed: Input/output error

CD记录:

Track 01: 4205 of 8043 MB written (fifo  99%) [buf  97%]   2.4x./usr/local/bin/cdrecord: Input/output error. write_g1: scsi sendcmd: no error
CDB:  2A 00 00 20 DA 10 00 00 10 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 03 00 00 00 00 0A 00 00 95 00 0C 00 00 00 00 00
Sense Key: 0x3 Medium Error, Segment 0
Sense Code: 0x0C Qual 0x00 (write error) Fru 0x0
Sense flags: Blk 0 (not valid)
cmd finished after 0.019s timeout 200s

write track data: error after 4409294848 bytes
/usr/local/bin/cdrecord: A write error occured.
/usr/local/bin/cdrecord: Please properly read the error message above.

查看刻录后的介质,它似乎从内到外写入了数据 - 给人的印象是它完全写入了一层,然后在该层结束时出错。在多次尝试中,每次失败都发生在燃烧过程的 50% 左右:

$ ls -lh SUU_14.03.00_A00.iso
-rw-rw-r-- 1 user group 7.9G 2014-05-14 07:53 SUU_14.03.00_A00.iso

2014/05/23开始编辑:

cdrecord 手册页显示:

Cdrecord functional options
  ...
  driveropts=option list
    ...
    layerbreak
      Switch  a  drive  with  DVD-R/DL  medium  into layer jump
      recording recording mode and  use  automatic  layer-break
      position setup.

      By  default,  DVD-R/DL  media  is  written  in sequential
      recording mode that completely fills up both layers.

    layerbreak=value
      Set up  a  manual  layer-break  value  for  DVD-R/DL  and
      DVD+R/DL.   The  specified  layer-break value must not be
      set to less than half of the recorded data size and  must
      not be set to more than the remaining Layer 0 size of the
      medium.  The manual layer-break value needs to be a  mul-
      tiple  of  the  ECC  sector size which is 16 logical 2048
      byte sectors in case of DVD media  and  32  logical  2048
      byte sectors in case of HD-DVD or BD media.

      Cdrecord  does  not  allow to write DL media in case that
      the total amount of data is less then the Layer 0 size of
      the  medium  except  when  a  manual layer-break has been
      specified by using the layerbreak=value option.

在没有手动计算断点的情况下使用 Layerbreak 可以得到:

cdrecord -v driveropts=layerbreak dev=ATAPI:1,0,0 SUU_14.03.00_A00.iso
...
cdrecord: Bad layer break value ''.
...

经过一番研究,我发现了一个旧 cdrecord 的补丁,其中包含“最佳层中断计算”。经过一些实验,我发现我可以在 shell 中计算“最佳层中断”:

echo -e "a = $(isosize SUU_14.03.00_A00.iso)\nb = a / 2048 / 2\nb - 1 + 16 - ( b - 1 ) % 16\n" | bc

这给出了 2059216 的分层值。事实上,对于笑容,我尝试上下调整该值。对于某些分层值(如 2059215),cdrecord 将报告:

cdrecord: Layer break at 2059215 is not properly aligned.

满怀希望,我尝试过:

cdrecord -v driveropts=layerbreak=2059216 dev=ATAPI:1,0,0 SUU_14.03.00_A00.iso

仍然出现杯垫和写入错误:

Track 01: 4205 of 8043 MB written (fifo  99%) [buf  97%]   2.4x./usr/local/bin/cdrecord: Input/output error. write_g1: scsi sendcmd: no error
CDB:  2A 00 00 20 DB 60 00 00 10 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 03 00 00 00 00 0A 00 00 95 00 0C 00 00 00 00 00
Sense Key: 0x3 Medium Error, Segment 0
Sense Code: 0x0C Qual 0x00 (write error) Fru 0x0
Sense flags: Blk 0 (not valid)
cmd finished after 0.022s timeout 200s

write track data: error after 4409982976 bytes
/usr/local/bin/cdrecord: A write error occured.
/usr/local/bin/cdrecord: Please properly read the error message above.

2014年5月23日结束编辑。

此问题发生在未安装 GUI 工具的服务器上。我正在寻找一种从命令行刻录双层 DVD 的方法。

答案1

  1. 尝试使用其他 DVD 刻录机。

    当与 USB 连接的 LG M/N GE24LU20 DVD 刻录机一起使用时,失败的命令可以正常运行。

  2. 检查 DVD 刻录机固件版本。如果有新版本可用,请升级固件。

    上述两个growisofs命令cdrecord在 Plextor PX-750A-UF 1.01 刻录机上失败,但在固件更新到相同驱动器后成功PX-750A-UF 1.03

    /usr/local/bin/cdrecord -v dev=ATAPI:1,0,0 SUU_14.03.00_A00.iso
    
    growisofs -dvd-compat -Z /dev/sr1=SUU_14.03.00_A00.iso
    

    固件升级可能还有其他好处。例如,PX-750A-UF 1.01 固件设备以大约 2.4 倍的速率写入双层 DVD,但 1.03 固件以 6 倍的速率写入介质。

关于层中断,有趣的是观察到cdrecord在 4023 MB 点(中间)和 4025 MB 点之前暂停了很长时间,cdrecord当使用具有旧固件的驱动器时,该点会失败。看起来延迟可能是由于层切换操作造成的。

答案2

如果您没有告诉 cdrecord 在哪里放置断层,则驱动器将填满媒体直至 100%。这会导致长时间的延迟。

如果 cdrecord 失败,您可能是各种修改版本的受害者,这些版本剥夺了 DVD 支持并用半生不熟的东西替换了原始代码。这些有缺陷的版本不报告版本 3,并且它们不知道 DVD 写入的正确超时。这可能是 cdrecord 过早超时的原因。

cdrecord 的最新版本是 3.01a31,很快就会有 3.01-final。

您使用的是最新版本吗?

相关内容