我注意到,如果我通过dd
USB 驱动器写入图像,然后再写入sha256sum
该图像;总和发生变化。为什么?它永远不会与 ISO 相同。
我正在运行:(sha256sum /dev/sdb
在块设备上,而不是分区上)
答案1
如果您的映像小于 USB 驱动器,那么您需要确保从驱动器读回该大小的数据,否则驱动器的所有其余部分将被添加到 sha256 中并创建不同的结果。
例如
$ ls -l tst.iso
-rw-r--r-- 1 root root Jul 1 14:58 tst.iso
$ /usr/bin/sha256sum tst.iso
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14 tst.iso
$ dd if=tst.iso of=/dev/sdg bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 200.066 s, 5.4 MB/s
当我们读回来时,我们需要确保只读取我们写入的 1,073,741,824 字节。在本例中,我知道它正好是 1024 个 1M 块,因此我可以指定一个bs=1M count=1024
.
$ dd if=/dev/sdg bs=1M count=1024 | sha256sum
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 37.8798 s, 28.3 MB/s
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14 -
如果总字节数不匹配,那么 sha256 将会不同。