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?


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.


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

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

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)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.