dd produzindo imagens ISO corrompidas no Snow Leopard (seja chamado a partir de um script ou do shell)

3

Tudo bem, eu provavelmente estou sendo um idiota aqui, mas estou escrevendo um utilitário de extração de ISO que é apenas GUI colocado em cima do dd, e não consigo persuadir a coisa a produzir ISOs não corrompidos no Snow Leopard . Eu tentei as seguintes variações (todas com / dev / disk1 desmontado como deveria ser):

dd if=/dev/disk1 of=/Users/[me]/Desktop/anIso.iso bs=2048 conv=sync,notrunc
dd if=/dev/disk1 of=/Users/[me]/Desktop/anIso.iso bs=2048 conv=notruc 
dd if=/dev/disk1 of=/Users/[me]/Desktop/anIso.iso bs=2048
dd if=/dev/disk1 of=/Users/[me]/Desktop/anIso.iso

em todos os quatro casos, clicar na iso que é produzida me dá um pop-up que diz "as seguintes imagens de disco não puderam ser lidas" e lista o arquivo. Se for algum uso, a saída (pelo menos para a primeira variação do comando) é:

408258+1 records in
408259+0 records out
836114432 bytes transferred in 513.382815 secs (1628637 bytes/sec)

Alguma ideia? Eu li as man pages, a variação 1 definitivamente parece que deveria produzir uma iso a partir do cd especificado

    
por znice 07.02.2010 / 18:06

5 respostas

3

Para um CD-ROM, use /dev/disk1s0 e não /dev/disk1 .

/dev/disk1 acessará os blocos brutos de 2352 bytes, o que é útil se você estiver lendo um CD de áudio. Em um CD-ROM, 2048 dos 2352 bytes são usados para dados e a maior parte do restante é para correção de erros . Quando você ler /dev/disk1s0 , ele usará os códigos de correção de erro para corrigir quaisquer erros, se possível, e retornar os (possivelmente corrigidos) 2048 bytes de dados de cada bloco, que é o que você deseja para uma imagem ISO.

Note que isto é diferente para o DVD-ROM, onde você usaria /dev/disk1 . O DVD-ROM usa um esquema de correção de erros diferente, que distribui os dados pelo disco, a fim de fornecer melhor resiliência de erros. Não há um nome de dispositivo separado que possa ser usado para ler os dados do DVD com os códigos de correção de erros incluídos.

    
por 08.02.2010 / 19:54
2

Os CDs de áudio geralmente não são copiados com dd e armazenados como ISOs. Os dados do CD de áudio (CDDA) estão mais próximos das faixas em um registro fonográfico, espiralando para dentro com lacunas marcando os limites. Eles não contêm um sistema de arquivos.

Em vez disso, os dados do CD de áudio geralmente são copiados com programas como cdrdao ou cdparanoia . Em vez de um arquivo ISO, os CDs de áudio geralmente são armazenados como pares BIN / CUE, pares WAV / CUE ou arquivos WAV individuais para cada faixa. O arquivo CUE é um arquivo de texto ASCII que contém o layout das faixas, e os arquivos BIN ou WAV contêm os dados de áudio reais.

Com cdparanoia :

# read cd's table of contents
cdparanoia -Q

# rip several (1 thru N, inclusive) tracks to one big file
cdparanoia --batch 1-N bigfile.wav

Com cdrdao :

cdrdao read-cd --read-raw --datafile foo.bin --device ATAPI:0,0,0 --driver generic-mmc-raw foo.toc

Veja o Ripping and Burning do manual de instruções de comando para obter mais detalhes.

    
por 09.02.2010 / 02:30
0

Não tem certeza do que está acontecendo, mas você já tentou comparar a origem e o alvo depois?

Talvez:

od -c source > source.txt
od -c target > target.txt
diff source target

Eu acho que isso irá gerar alguns arquivos muito grandes e eu não tenho certeza de quão útil a saída do diff será - mas pelo menos deveria fornecer uma resposta se os arquivos são os mesmos ou não.

Você está executando o 'FileVault' ou qualquer coisa na sua máquina? Não tem certeza se isso pode afetar esse tipo de coisa?

O dd trabalha com outros tipos de arquivos binários? (tente copiar '/ bin / ls' para outro arquivo e veja se ainda funciona?)

    
por 07.02.2010 / 18:13
0

para comparar arquivos binários use cmp, não diff ...

se você ainda quisesse compará-los em hexadecimal

diff <(od -c source) <(od -c target)

Eu testaria isso com um cd que você já gravou e verificou de um iso, então compare o iso original com o seu iso.

teria sido útil saber se todas as imagens que você extraiu eram iguais ou não.

também / dev / disk1 não parece certo, você tem certeza que é um drive de cd?

836114432 também é 797MB, isso faz sentido para o disco que você está usando?

    
por 07.02.2010 / 22:01
0

Por tudo o que vale a pena, é isso que o diskutil me conta sobre o disco que está atualmente na unidade:

      Device Identifier:        disk1
   Device Node:              /dev/disk1
   Part Of Whole:            disk1
   Device / Media Name:      MATSHITA DVD-R UJ-868

   Volume Name:              West Side Story
   Escaped with Unicode:     West%FF%FE%20%00Side%FF%FE%20%00Story

   Mounted:                  No

   File System:              CD-DA
   Type:                     cddafs
   Name:                     CD Audio

   Partition Type:           CD_partition_scheme
   Bootable:                 Not bootable
   Media Type:               
   Protocol:                 SATA
   SMART Status:             Not Supported

   Total Size:               836.1 MB (836112480 Bytes) (1633032 512-Byte-Blocks + 96 Byte(s))
   Volume Free Space:        0 B (0 Bytes) (exactly 0 512-Byte-Blocks)

   Read-Only Media:          Yes
   Read-Only Volume:         Not applicable (not mounted)
   Ejectable:                Yes

   Whole:                    Yes
   Internal:                 Yes
   OS 9 Drivers:             No
   Low Level Format:         Not Supported

   Optical Drive Type:       CD-ROM, CD-R, CD-RW, DVD-ROM, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL, DVD+RW
   Optical Media Type:       CD-ROM
   Optical Media Erasable:   No
    
por 09.02.2010 / 01:58