Eu tenho um arquivo ISO, que gravei em um CD. Agora como posso verificar se o CD foi criado corretamente? Gostaria de um comando que calcule a soma de hash que posso usar para verificar com a soma de hash que calculo no arquivo ISO. Idealmente, o comando deve:
dd
o disco volta para um arquivo e execute md5sum
no arquivo é inaceitávelSe não houver uma resposta que não satisfaça a todos, também apreciarei a correspondência mais próxima. Melhor ainda se você puder me dizer por que não é tão simples.
O problema básico é que queremos obter a soma md5sum da mesma informação exata que estava originalmente no ISO. Quando você grava o ISO em um CD, provavelmente há um espaço em branco no final do disco, o que inevitavelmente muda o md5sum. Assim, o caminho mais curto:
md5sum /dev/cdrom
não funciona . O que funciona (e é comum em online documentação) é apenas ler o número exato de bytes do dispositivo e fazer o md5sum
. Se você sabe o número de bytes, pode fazer algo como:
dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum
onde 'xxxxx' é o tamanho da iso em bytes.
Se você não sabe o número de bytes disponíveis, mas ainda tem o iso em seu disco, você pode obtê-los usando ls fazendo algo como o seguinte ( retirado daqui ):
dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum
Existem muitas outras construções de uma linha que devem funcionar. Observe que, em cada caso, estamos usando dd
para ler os bytes do disco, mas não os estamos canalizando para um arquivo, em vez disso, os estamos entregando ao md5sum imediatamente.
Possíveis melhorias de velocidade podem ser feitas fazendo alguns cálculos para usar um tamanho de bloco maior (o bs=
no comando dd
).
Existe um programa para esta tarefa. É chamado - checkisomd5
. No Ubuntu, ele pode ser instalado pelo comando:
Sudo apt-get install isomd5sum
Se o tamanho da imagem no disco for divisível por 2048, número inteiro, que parece ser muito comum, você pode obter um MD5sum preciso da seguinte forma, onde sr0
é o nome do óptico -que pode ser encontrado usando, lshw -C disk
- e onde 'contagem' é o dividendo do tamanho da imagem dividido por 2048.
dd if=/dev/sr0 bs=2048 count=356352 |md5sum