Я хотел записать 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
.)