Linux

在 Linux 上刻錄 DVD+R DL 媒體的命令行?

  • August 19, 2015

Linux 系統上的 Plextor PX-750A 在嘗試使用 growisofs 和 Schilling cdrecord 程序刻錄 8GB DVD .iso 文件時製作了許多 DVD+R DL 杯墊。

我首先嘗試了 growisofs:

growisofs --version
* growisofs by <appro@fy.chalmers.se>, 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

光碟記錄:

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 的 layerbreak 值。事實上,對於 grins,我嘗試上下調整該值。對於某些 layerbreak 值(如 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/05/23 編輯結束。

此問題發生在未安裝 GUI 工具的伺服器上。我正在尋找一種從命令行刻錄雙層 DVD 的方法。

  1. 嘗試其他 DVD 刻錄機。

與 USB 連接的 LG M/N GE24LU20 DVD 刻錄機一起使用時,失敗的命令正常執行。

  1. 檢查 DVD 刻錄機韌體版本。如果有更新的版本可用,請升級韌體。

在將韌體更新到PX-750A-UF 1.03後,Plextor PX-750A-UF 1.01 刻錄機上的上述兩個growisofs和命令都在同一驅動器上成功。cdrecord

/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當驅動器使用較舊的韌體時,該點失敗。看起來延遲可能是由於層切換操作造成的。

引用自:https://unix.stackexchange.com/questions/131519