Como verificar se o ISO foi gravado no meu pendrive sem erros?

10

Segui estas instruções do DebianEeePC HowTo InstallUsingStandardInstaller no Debian Wiki, para escrever uma ISO Debian no meu USB.

dd if=debian-*-netinst.iso of=/dev/sdX

Usando sha1sum, posso verificar as somas de verificação do meu arquivo ISO baixado. Como posso verificar a soma de verificação do dispositivo USB stick, para garantir que o dispositivo USB não tenha problemas e se o ISO foi copiado perfeitamente?

Vila
fonte
USB é um barramento serial universal. Certamente você quer dizer algum tipo de dispositivo conectado a esse barramento (como um flashdrive, ethernet ou placa de som)?
Stéphane Chazelas
@StephaneChazelas, editou a pergunta.
Maxschlepzig

Respostas:

17

Você pode usar cmppara verificar se tudo foi copiado corretamente:

$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX

Essa solução não calcula explicitamente a soma de verificação da sua /dev/sdX- mas você não precisa fazer isso porque já fez isso para a fonte da comparação (ou seja debian-X-netinst.iso).

Fazer apenas a dd if=/dev/sdX | sha1sumpode gerar uma soma de verificação incompatível apenas porque você obtém os blocos finais ( /dev/sdXprovavelmente é maior que o arquivo iso).

Por meio de cmp -nvocê, certifique-se de que nenhum bytes à direita /dev/sdXseja comparado.

Se você estiver paranóico com a qualidade do seu dispositivo de armazenamento em massa USB que você chama sync, ejete-o, insira-o novamente e faça a comparação - caso contrário, todos ou alguns blocos podem vir apenas da VM do kernels (cache) - quando, na realidade, talvez bits no hardware estão ferrados.

maxschlepzig
fonte
1
Olá! Quando faço isso, recebo incompatibilidade instantânea na primeira linha. O que pode ser a causa?
24418 SarpSTA
3

A resposta de Julien faz o trabalho, mas há uma maneira mais simples e rápida de fazer isso:

sudo head -c <image size> /dev/sdX | sha1sum
Lucas
fonte
Assim, em uma única linha:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard 16/01
3

Basta usar dde md5sum/ sha1sumé suficiente, mas como dito anteriormente, tenha cuidado, seu dispositivo não é do mesmo tamanho que seu arquivo, portanto, as somas serão diferentes.

Aqui como você ainda pode fazê-lo

Primeiro, você precisa saber o tamanho do arquivo:

$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232

Então, para ser legal com seus syscalls, é melhor você conseguir isso como um múltiplo de um poder agradável de dois como 4096, a multiplicação dos dois PRECISA produzir exatamente o tamanho do arquivo, de outras maneiras, você verificará muito poucos ou bytes demais, produzindo uma soma de verificação errada.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Estou feliz, 4096 × 244992 = 1003487232então 4096 é bom para mim (e provavelmente será para você), para que eu possa usar um tamanho de bloco de 4096(típico) e uma contagem de blocos de 244992.

Não se esqueça de escrever o arquivo na chave USB ...

$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync

E saiba, usando o tamanho de bloco conhecido e a contagem de blocos, você pode ler o número exato de bytes da chave e verificá-los:

$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184

(Sim, md5sumé muito mais rápido que sha1sumisso, mas claramente esse não é o seu gargalo aqui, o gargalo é a entrada USB, obrigado por perceber).

Ou, resumindo:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
Julien Palard
fonte
Obrigado por $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum eu poder verificar o md5sum de uma imagem do Debian gravada em um pendrive e compará-lo com o Debian md5sums.
Paul Rougieux
0

Baseado na resposta de @Kyle Jones

diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')

você deve usar md5sumporque é mais rápido que sha1sum(isso poupa tempo ao verificar arquivos grandes)

HVNSweeting
fonte
6
Você quer dizer que md5sumé pelo menos duas vezes mais rápido? É necessário que o OP já possua o sha1sumsite de download e não precise calcular isso. E a leitura do USB será um fator limitante, e não o cálculo sha1 / md5.
Anthon
1
Estou executando o ZFS com a soma de verificação SHA-256 em um sistema intermediário de capacidade de processamento. Mesmo durante scrubs (que lê todos os dados e verifica todas as somas de verificação) em pools que residem na oxidação giratória, o fator limitante é a taxa de transferência de E / S do disco, não a CPU. Duvido que muitos cartões de memória USB tenham uma taxa de transferência muito melhor do que isso, principalmente se estiverem conectados via USB 2.0.
um CVn