我按照Debian Wiki上的这些 DebianEeePC HowTo InstallUsingStandardInstaller说明进行操作,以将Debian ISO写入我的USB。
dd if=debian-*-netinst.iso of=/dev/sdX
使用sha1sum
,我可以检查下载的ISO文件的校验和。如何检查USB记忆棒设备的校验和,以确保USB记忆棒没有任何问题并且ISO复制正确?
我按照Debian Wiki上的这些 DebianEeePC HowTo InstallUsingStandardInstaller说明进行操作,以将Debian ISO写入我的USB。
dd if=debian-*-netinst.iso of=/dev/sdX
使用sha1sum
,我可以检查下载的ISO文件的校验和。如何检查USB记忆棒设备的校验和,以确保USB记忆棒没有任何问题并且ISO复制正确?
Answers:
您可以使用它cmp
检查所有内容是否都复制良好:
$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX
此解决方案不会显式计算的校验和/dev/sdX
-但您不需要这样做,因为您已经为比较的源(即debian-X-netinst.iso
)进行了此操作。
仅执行a dd if=/dev/sdX | sha1sum
可能会产生不匹配的校验和,仅是因为您得到了尾随的块(/dev/sdX
最有可能大于iso文件)。
通过cmp -n
您确保没有/dev/sdX
比较您的尾随字节。
如果您对要调用的USB大容量存储设备的质量感到偏执sync
,请将其弹出,然后重新插入,然后进行比较-否则所有或某些块可能仅来自内核VM(缓存)-实际上,在硬件上被搞砸了。
只需使用dd
和md5sum
/sha1sum
就足够了,但是如前所述,请注意,您的设备与文件大小不同,因此总和会有所不同。
在这里您仍然可以做到
首先,您需要知道文件的大小:
$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232
然后,为了使您的系统调用更酷,您最好将其作为两个类似4096
的乘方的倍数进行乘积,将两个相乘必须要产生文件的大小,否则,您将检查过少或字节过多,产生错误的校验和。
$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000
我很高兴,4096 × 244992 = 1003487232
所以4096对我有好处(可能对您也有帮助),因此我可以使用块大小4096
(典型值)和块计数244992
。
不要忘记在USB闪存盘上写入文件...
$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync
知道了,使用已知的块大小和块计数,您可以从密钥中读取确切的字节数并进行检查:
$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184
(是的md5sum
,速度比sha1sum
这里要快,但这显然不是您的瓶颈,瓶颈是USB吞吐量,感谢您的注意)。
或者,简而言之:
dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
$ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum
我可以检查写入USB棒的Debian映像的md5sum,并将其与Debian md5sums进行比较。
基于@Kyle Jones的答案
diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')
您应该使用md5sum
它,因为它比sha1sum
以下速度更快(这将节省您检查大文件的时间)
md5sum
是至少快两倍?一定是因为OP已经sha1sum
从下载站点获得了,而不必进行计算。从USB读取将成为限制因素,而不是sha1 / md5计算。