¿Cómo verificar si el ISO se escribió en mi memoria USB sin errores?

11

Seguí estas instrucciones de DebianEeePC HowTo InstallUsingStandardInstaller en el Wiki de Debian, para escribir un ISO de Debian en mi USB.

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

Utilizando sha1sum, puedo verificar las sumas de verificación de mi archivo ISO descargado. ¿Cómo puedo verificar la suma de verificación del dispositivo de memoria USB, para asegurarme de que la memoria USB no tenga ningún problema y que el ISO se haya copiado perfectamente?

Pueblo
fuente
USB es un bus serie universal. ¿Seguramente te refieres a algún tipo de dispositivo conectado a ese bus (como una unidad flash, ethernet o tarjeta de sonido)?
Stéphane Chazelas
@StephaneChazelas, editó la pregunta.
maxschlepzig

Respuestas:

18

Puede usar cmppara verificar si todo se copió bien:

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

Esta solución no calcula explícitamente la suma de comprobación de su /dev/sdX, pero no necesita hacerlo porque ya lo ha hecho para la fuente de la comparación (es decir debian-X-netinst.iso).

Hacer solo un dd if=/dev/sdX | sha1sumpuede generar una suma de comprobación de coincidencia errónea solo porque obtienes bloques finales ( /dev/sdXes muy probable que sea más grande que el archivo iso).

A través de cmp -nusted, asegúrese de que no /dev/sdXse comparen bytes finales en su

Si está paranoico acerca de la calidad de su dispositivo de almacenamiento masivo USB al que llama sync, expúlselo, vuelva a insertarlo y luego haga la comparación; de lo contrario, todos o algunos bloques pueden provenir de la máquina virtual (caché) del núcleo, cuando en realidad quizás bits en el hardware están jodidos.

maxschlepzig
fuente
1
¡Hola! Cuando hago esto, recibo una discrepancia instantánea en la primera línea. ¿Cuál puede ser la causa?
SarpSTA
3

La respuesta de Julien hace el trabajo, pero hay una manera más simple y rápida de hacer esto:

sudo head -c <image size> /dev/sdX | sha1sum
Lucas
fuente
Entonces, en una sola línea:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard
3

Solo usando ddy md5sum/ sha1sumes suficiente, pero como se dijo anteriormente, tenga cuidado, su dispositivo no es del mismo tamaño que su archivo, por lo que las sumas serán diferentes.

Aquí cómo puedes hacerlo

Primero necesitará saber el tamaño del archivo:

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

Luego, para ser genial con sus llamadas al sistema, es mejor que obtenga esto como un múltiplo de un buen poder de dos como 4096, la multiplicación de los dos DEBE producir exactamente el tamaño del archivo, de otras maneras, comprobará muy pocos o demasiados bytes, produciendo una suma de verificación incorrecta.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Estoy feliz, 4096 × 244992 = 1003487232así que 4096 es bueno para mí (y probablemente lo sea para usted), así que puedo usar un tamaño de bloque de 4096(típico) y un conteo de bloques 244992.

No olvides escribir el archivo en la llave USB ...

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

Y sepa, utilizando el tamaño de bloque conocido y el recuento de bloques, puede leer el número exacto de bytes de la clave y verificarlos:

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

(Sí, md5sumes mucho más rápido que sha1sumeso, pero claramente no es tu cuello de botella aquí, el cuello de botella es la conexión USB, gracias por notarlo).

O, en resumen:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
Julien Palard
fuente
Gracias con $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum pude comprobar el md5sum de una imagen de Debian escrita en un dispositivo USB y compararlo con Debian md5sums.
Paul Rougieux
0

Basado en la respuesta de @Kyle Jones

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

debe usar md5sumporque es más rápido que sha1sum(esto le ahorrará tiempo cuando revise el archivo grande)

HVNSweeting
fuente
66
¿Quieres decir que md5sumes al menos el doble de rápido? Tiene que ser porque el OP ya tiene el sha1sumdel sitio de descarga y no tiene que calcular eso. Y la lectura desde USB será un factor limitante, no el cálculo sha1 / md5.
Anthon
1
Estoy ejecutando ZFS con la suma de comprobación SHA-256 en un sistema de rango medio de procesamiento inteligente. Incluso durante los scrubs (que lee todos los datos y verifica todas las sumas de verificación) en los grupos que residen en el óxido giratorio, el factor limitante es el rendimiento de E / S del disco, no la CPU. Dudo que muchas memorias USB tengan un rendimiento mucho mejor que eso, especialmente si está conectado a través de USB 2.0.
un CVn