|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : andy legkiy 2:5020/400 07 Jan 2004 22:00:23 To : All Subject : TEAC 540E (R/RW) illegal number of blocks -------------------------------------------------------------------------------- Привет всем! При копировании "образа" (утилитой dd) c "устройства" оптического привода создается впечатление, что пытается считаться на на один блок больше, чем есть на самом деле. Что имеем: # uname -a FreeBSD develop.com 5.1-RELEASE-p11 FreeBSD 5.1-RELEASE-p11 #0: Fri Jan 2 23:51:27 EET 2004 root@develop.com:/usr/obj/usr/src/sys/PIII i386 # dmesg atapci0: <VIA 82C686B UDMA100 controller> port 0xd000-0xd00f at device 7.1 on pci0 acd0: CDROM <CD-540E> at ata1-master PIO4 acd1: CD-RW <CD-W540E> at ata1-slave PIO4 # atacontrol info 1 ATA channel 1: Master: acd0 <CD-540E/1.0A> ATA/ATAPI rev 0 Slave: acd1 <CD-W540E/1.0H> ATA/ATAPI rev 5 "нарезаем" сделанный iso-шник (вне зависимости от размера, эффект тот-же). # burncd -e -v -f /dev/acd1c data Source.iso fixate adding type 0x08 file Source.iso size 96 KB 48 blocks next writeable LBA 0 addr = 0 size = 98304 blocks = 48 writing from file Source.iso size 96 KB written this track 96 KB (100%) total 96 KB fixating CD, please wait.. Hикаких ошибок при записи не получено. в логах чисто. Далее, проверяем как мы записались. Вначале, пробуем считать из "резака": # dd if=/dev/acd1c of=Test1.iso bs=2048 acd1: READ_BIG - MEDIUM ERROR asc=0x11 ascq=0x00 error=0x00 Файл записывается на один блок (2048байт) больше, чем оригинальный iso-шник (Source.iso) пробуем с обычного (непишущего привода): # dd if=/dev/acd0c of=Test0.iso bs=2048 Jan 6 10:09:34 develop kernel: acd0: READ_BIG - ILLEGAL REQUEST asc=0x64 ascq=0x00 error=0x04 Однако в этом случае, созданный iso-шник полностью совпадает по размеру с исходным, контрольные суммы сходяться. Ошибки в двух случаях появляются вконце считывания. Единственная болванка которая "читается" dd-шкой нормально, это iso 5.1RELEASE нарезанный "на стороне". Hо перенарезав ее у себя, получаем те же грабли. Устройства приводов монтируются без ошибок, и размер примонтиованного носителя (пусть 645169152 байт, или 315024 блока по 2048) - показывается верный: # mount /dev/acd1 # df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/acd1 630048 630048 0 100% /cdrom1 получается, верное кол-во блоков 630048/2 = 315024 Hо dd напрямую хочет считать 315025 блоков (если ей несказать кол-ва). В случае с CD-RW-приводом это у нее выходит (последний блок забит нулями). в случае с CD-R лишнего нет - просто выдается ошибка в лог. atacontrol reinit не помогает. Установка hw.ata.atapi_dma="1" не помогла (а только поставила на уши nvidia). Помогает, если сказать dd сколько точно блоков нужно считывать, но это не то. Если кто сталкивался, подскажите пожалуста, куда копать. Подобная проблема была и на линуксе, но тогда не обращал на нее внимания (тоже dd на мои приводы ругался). Cheers! -- andy legkiy --- ifmail v.2.15dev5.1 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/55029ffe6618.html, оценка из 5, голосов 10
|