如何恢复使用 Ctrl+C 中止的“wodim”DVD 刻录?

如何恢复使用 Ctrl+C 中止的“wodim”DVD 刻录?

我想将 ISO 刻录到 DVD+R。我决定先进行一次虚拟写入(激光关闭,因此基本上是一次空运行),因为我以前从未使用过该命令,并且我想确保我做得正确。我这样做了wodim -v dev=/dev/sr0 speed=4 -dummy -eject path/to.iso,看起来它工作正常。我不想等待它完成假装刻录大光盘映像的操作,因此我按 Ctrl+C 并输入相同的命令,但没有-dummy真正开始刻录。

wodim: WARNING: Data may not fit on current disk.
wodim: Notice: Most recorders cannot write CD's >= 90 minutes.
wodim: Notice: Use -ignsize option to allow >= 90 minutes.
wodim: Notice: Use -overburn option to write more than the official disk capacity.
wodim: Notice: Most CD-writers do overburning only on SAO or RAW mode.

我把光盘拿出来,看了一下底部,发现有一个深浅不一的细环,说明光盘上已经刻录了少量的数据。我只能得出结论,由于某种原因,该-dummy选项不起作用,并且它正在真实地刻录图像,至少在我中止它之前是这样。

我认为它-overburn建议的选项用于从头开始刻录新曲目,这不是我想要的。我需要从这张光盘启动,因此数据的实际结构很重要,而不仅仅是我想要的文件是否可访问。如何让它从上次停止的地方结束,以免光盘浪费?我没有看到任何关于它停止位置的确切指示(只是“写入了 4177 MB 中的 145 个”,这还不够准确),但通过读取光盘和图像并找到它们首先不同的地方应该很容易确定。

编辑:我只是用来与 ISOcmp进行比较,它说第一个不同的字节是字节 152307713。所以这就是它停止的地方。/dev/sr0如果我切断 ISO 的开头,使其从该字节开始,然后使用相同的命令将该文件刻录到光盘上,这会起作用吗?或者是否存在轨道边界或中间的某些东西会导致问题?

编辑2:以下是 Thomas Schmitt 建议的命令的输出:

$ dvd+rw-mediainfo /dev/sr0
INQUIRY:                [MATSHITA][DVD+-RW UJ8C7   ][1.00]
GET [CURRENT] CONFIGURATION:
 Mounted Media:         1Bh, DVD+R
 Media ID:              CMC MAG/M01
 Current Write Speed:   8.0x1385=11080KB/s
 Write Speed #0:        8.0x1385=11080KB/s
 Write Speed #1:        2.4x1385=3324KB/s
 Speed Descriptor#0:    01/2295103 [email protected]=4294967040KB/s [email protected]=11080KB/s
 Speed Descriptor#1:    01/2295103 [email protected]=4294967040KB/s [email protected]=3324KB/s
READ DVD STRUCTURE[#0h]:
 Media Book Type:       00h, DVD-ROM book [revision 0]
 Legacy lead-out at:    2295104*2KB=4700372992
READ DISC INFORMATION:
 Disc status:           appendable
 Number of Sessions:    1
 State of Last Session: incomplete
 "Next" Track:          1
 Number of Tracks:      2
READ TRACK INFORMATION[#1]:
 Track State:           partial/complete
 Track Start Address:   0*2KB
 Next Writable Address: 74384*2KB
 Free Blocks:           2064480*2KB
 Track Size:            2138864*2KB
READ TRACK INFORMATION[#2]:
 Track State:           blank
 Track Start Address:   2138880*2KB
 Next Writable Address: 2138880*2KB
 Free Blocks:           156224*2KB
 Track Size:            156224*2KB
 ROM Compatibility LBA: 265696
READ CAPACITY:          0*2048=0
$ cdrskin -v dev=/dev/sr0 -minfo
cdrskin 1.4.2 : limited cdrecord compatibility wrapper for libburn
cdrskin: verbosity level : 1
cdrskin: NOTE : greying out all drives besides given dev='/dev/sr0'
cdrskin: scanning for devices ...
cdrskin: ... scanning for devices done
cdrskin: pseudo-atip on drive 0
cdrskin: status 3 BURN_DISC_APPENDABLE "There is an incomplete disc in the drive"
scsidev: '/dev/sr0'
Device type    : Removable CD-ROM
Vendor_info    : 'MATSHITA'
Identifikation : 'DVD+-RW UJ8C7'
Revision       : '1.00'
Drive id       : 'WQ36  064543'
Driver flags   : BURNFREE
Supported modes: TAO SAO
cdrskin: burn_drive_get_write_speed = 11080  (8.0x)
Current: DVD+R
Profile: 0x0012 (DVD-RAM)
Profile: 0x002B (DVD+R/DL)
Profile: 0x001B (DVD+R) (current)
Profile: 0x001A (DVD+RW)
Profile: 0x0013 (DVD-RW restricted overwrite)
Profile: 0x0014 (DVD-RW sequential recording)
Profile: 0x0016 (DVD-R/DL layer jump recording)
Profile: 0x0015 (DVD-R/DL sequential recording)
Profile: 0x0011 (DVD-R sequential recording)
Profile: 0x0010 (DVD-ROM)
Profile: 0x000A (CD-RW)
Profile: 0x0009 (CD-R)
Profile: 0x0008 (CD-ROM)
Profile: 0x0002 (Removable disk)
book type:     DVD+R (emulated booktype)
Product Id:    CMC_MAG/M01/48
Producer:      CMC Magnetics Corporation
Manufacturer:    'CMC MAG'
Media type:      'M01'

Mounted media class:      DVD
Mounted media type:       DVD+R
Disk Is not erasable
disk status:              incomplete/appendable
session status:           empty
first track:              1
number of sessions:       1
first track in last sess: 1
last track in last sess:  2
Disk Is unrestricted
Disk type: DVD, HD-DVD or BD

Track  Sess Type   Start Addr End Addr   Size
==============================================
    1     1 Apdbl  0          2138863    2138864   
    2     1 Blank  2138880    2295103    156224    

Next writable address:              2138880   
Remaining writable size:            156224    

Warning: Incomplete session encountered !
$ xorriso -outdev /dev/sr0 -toc
xorriso 1.4.2 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev '/dev/sr0'
Media current: DVD+R
Media status : is written , is appendable
Media summary: 1 session, 2295104 data blocks, 4483m data,  305m free
xorriso : WARNING : Incomplete session encountered !
Drive current: -outdev '/dev/sr0'
Drive type   : vendor 'MATSHITA' product 'DVD+-RW UJ8C7' revision '1.00'
Drive id     : 'WQ36  064543'
Media current: DVD+R
Media product: CMC_MAG/M01/48 , CMC Magnetics Corporation
Media status : is written , is appendable
Media blocks : 1 readable , 156224 writable , 2295104 overall
TOC layout   : Idx ,  sbsector ,       Size , Volume Id
Incmp session:   1 ,         0 ,         0s , 
Media summary: 1 session, 2295104 data blocks, 4483m data,  305m free
Media nwa    : 2138880s
xorriso : WARNING : Incomplete session encountered !
$ cdrecord -v dev=/dev/sr0 -minfo
wodim: Bad Option: -minfo.
Usage: wodim [options] track1...trackn

Use wodim -help
to get a list of valid options.

Use wodim blank=help
to get a list of valid blanking options.

Use wodim dev=b,t,l driveropts=help -checkdrive
to get a list of drive specific options.

Use wodim dev=help
to get a list of possible SCSI transport specifiers.

答案1

也许您将不得不放弃这种部分写入的介质并开始使用新的(空白)DVD。

理论上,在未完全写入的 DVD+R 轨道上恢复写入运行并非不可能。但我不知道有任何刻录程序可以做到这一点。不过,我可能是错的。因此,只要尝试让刻录程序在该介质上运行会发生什么。

我预计刻录程序要么会抱怨开放轨道并中止,要么会尝试在 DVD 上尚未声明的区域中开始新轨道。两者都不会在 DVD 上生成完美的 ISO 副本。

进一步的意见和信息:

wodim不太适合 DVD。使用growisofscdrskinxorrecordcdrecord

装有 DVD+R 介质的驱动器不提供模拟写入功能。无论wodim您使用 option 运行它时做了什么-dummy,它都与您在 CD-R[W]、DVD-R 或未格式化的 DVD-RW 中看到的不同。以真正刻录的开始为标志,wodim不知道 DVD+R、DVD+RW、DVD-RAM、格式化 DVD-RW 或 BD 介质。 (对于 DVD-R 和未格式化的 DVD-RW 可能就足够了,因为它们的行为与 CD-R 非常相似。)

您可以通过以下命令之一检查 DVD+R 的当前状态:

dvd+rw-mediainfo /dev/sr0

cdrskin -v dev=/dev/sr0 -minfo

xorriso -outdev /dev/sr0 -toc

cdrecord -v dev=/dev/sr0 -minfo

问题中“编辑2”后更新:

wodim: Bad Option: -minfo表明您没有尝试原始cdrecord ,而是同时尝试了相当孤立的克隆wodim。那里的选项将是较旧的-toc而不是-minfo。输出更难解释。不管怎样,输出dvd+rw-mediainfo最详细地讲述了故事。

wodim保留磁道号 1,大小为 2138864 块 =~ 4177 MiB。该轨道从块 74384 =~ 145 MiB 开始仍然可写。

但现有轨道的这种可写性是 DVD+R(也可能是 BD-R)的一个特殊功能,它不太适合刻录程序的使用模型。因此,他们宁愿尝试使用剩余的未保留轨道号 2,该轨道号从块 2138880 开始。如果他们完全接受此介质状态。

至少cdrskinxorriso宣布他们将尝试在那里写下他们的声明Next writable address:Media nwagrowisofs源代码看起来也会做出同样的选择。关于(原文)cdrecord我只能猜测。

当然,尝试将剩余 ISO 写入磁道 2 将失败,因为它只有 300 MB 可用空间。 (无论如何,这都会造成一个巨大的不可读扇区间隙。)


刻录程序可能需要做什么:

它主要是从现有轨道而不是从下一个即将到来的轨道确定下一个可写地址。

这可以在libburn函数中burn_disc_track_lba_nwa()cdrskin在其函数中调用它之后被覆盖Cdrskin_obtain_nwa()。最后,cdrskin变量*nwa需要获得值 74384。

growisofs函数中确定NWA为plusminus_r_C_parm()。该变量next_session需要获取值 74384。可能必须为程序提供运行附加选项 -use-the-force-luke=seek=74384并使用 option-Z而不是-M

另一个潜在的问题是,此类黑客攻击后的程序仍然可以发出 SCSI 命令RESERVE TRACK。必须防止这种情况发生。

似乎growisofs仅向 DVD-R、DVD-R DL 和未格式化的 DVD-RW 发送命令。如果存在cdrskin选项,则不会发送它。-tao

必须担心的是,这个草图还不够充分,并且实验会损坏部分写入的 DVD+R,无法修复。如果你想挑战的话,第一步就是获取源代码dvd+rw-tools(对于growisofs) 或静态链接的cdrskin。然后我们可以开始通过邮件讨论哪些代码更改将在第一次也是唯一一次尝试中提供成功的最佳机会。结果将在这里报告。

(如果不明显:我是libburn和的开发者cdrskin。)

相关内容