Как возобновить запись DVD-диска «wodim», прерванную с помощью Ctrl+C?

Как возобновить запись DVD-диска «wodim», прерванную с помощью Ctrl+C?

Я хотел записать 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что предлагаемая опция используется для записи нового трека с самого начала, а это не то, что мне нужно. Мне нужно загрузиться с этого диска, поэтому важна фактическая структура данных, а не только то, что нужные мне файлы доступны. Как мне сделать так, чтобы он закончился там, где остановился, чтобы диск не пропадал зря? Я не вижу точного указания на то, где он остановился (только «записано 145 из 4177 МБ», что недостаточно точно), но это должно быть легко определить, прочитав диск и изображение и найдя, где они впервые различаются.

РЕДАКТИРОВАТЬ:Я просто cmpсравнивал /dev/sr0с ISO, и он сказал, что первый отличающийся байт - это байт 152307713. Вот где он остановился. Если я отрежу начало ISO так, чтобы оно начиналось с этого байта, а затем запишу этот файл на диск с помощью той же команды, это сработает? Или будет граница дорожки или что-то между ними, что вызовет проблемы?

ПРАВКА 2:Вот вывод команд, предложенных Томасом Шмиттом:

$ 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. Оба варианта не дадут безупречной копии вашего ISO на DVD.

Дополнительные мнения и информация:

wodimне совсем подходит для DVD. Используйте growisofs, cdrskin, xorrecord, или cdrecord.

Приводы с носителями DVD+R не предлагают имитацию записи. Что бы вы ни wodimделали, когда запускали его с опцией -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. Если они вообще примут это состояние носителя.

По крайней мере, cdrskinи xorrisoобъявить, что они попытаются написать там по их заявлениям Next writable address:и Media nwa. growisofsисходный код выглядит так, как будто он сделает тот же выбор. О (оригинале) cdrecordя могу только догадываться.

Конечно, попытка записи оставшегося ISO на дорожку 2 потерпит неудачу, поскольку на ней свободно всего 300 МБ. (В любом случае это создаст гигантский пробел нечитаемых секторов.)


Что, возможно, должна будет сделать программа сжигания:

В основном речь идет об определении следующего записываемого адреса на основе существующей дорожки, а не на основе следующей дорожки.

Это может быть переопределено в 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и использовать опцию -Zвместо -M.

Другая потенциальная проблема заключается в том, что программы после такого взлома все равно могут выдавать команду SCSI RESERVE TRACK. Этого необходимо предотвратить.

Похоже, что growisofsотправляет команду только на DVD-R, DVD-R DL и неформатированные DVD-RW. cdrskinне отправит ее, если -taoприсутствует соответствующая опция.

Следует опасаться, что этот набросок не полностью достаточен и что эксперименты испортят частично записанный DVD+R без возможности восстановления. Если вы все же хотите рискнуть, отправной точкой будет получение исходного кодаdvd+rw-tools(для growisofs) или статически связанногоcdrskin. Затем мы могли бы начать обсуждать по почте, какое изменение кода даст наилучшие шансы на успех с первой и единственной попытки. Результат затем будет сообщен здесь.

(Если это не очевидно: я разработчик libburnи cdrskin.)

Связанный контент