我有一堆来自不同制造商的10类UHS-1 SDHC SD卡。它们全部划分如下
$ sudo fdisk -l /dev/sdj
Disk /dev/sdj: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000de21
Device Boot Start End Sectors Size Id Type
/dev/sdj1 2048 1050623 1048576 512M c W95 FAT32 (LBA)
/dev/sdj2 1050624 2099199 1048576 512M 83 Linux
/dev/sdj3 2099200 3147775 1048576 512M 83 Linux
/dev/sdj4 3147776 31116287 27968512 13.3G 83 Linux
我使用了存储卡复制器来复制图像。所有卡具有相同的内容。
当我挂载任何两个SD卡的第二个分区并比较内容时,它们是完全相同的。
$ sudo mount -o ro /dev/sdg2 /mnt/system-a/
$ sudo mount -o ro /dev/sdj2 /mnt/system-b/
$ diff -r --no-derefence /mnt/system-a /mnt/system-b/
$ # prints nothing^
但是,如果我比较分区的sha1sum,它们有时会有所不同
$ sudo dd if=/dev/sdg2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.3448 s, 43.5 MB/s
ee7a16a8d7262ccc6a2e6974e8026f78df445e72 -
$ sudo dd if=/dev/sdj2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.6412 s, 42.5 MB/s
4bb6e3e5f3e47dc6cedc6cf8ed327ca2ca7cd7c4 -
陌生人,如果我使用类似的二进制差异工具比较这两个驱动器,则会radiff2
看到以下内容
$ sudo dd if=/dev/sdg2 of=sdg2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2378 s, 43.9 MB/s
$ sudo dd if=/dev/sdj2 of=sdj2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2315 s, 43.9 MB/s
$ radiff2 -c sdg2.img sdj2.img
767368
767368进行了更改,即使diff
内容没有任何差异!
为了理智,如果我比较两个具有相同sha1sum的分区,我会看到以下内容
$ radiff2 -c sdj2.img sdf2.img
0
0个变化!
这是我从不同卡中看到的不同sha1sum的细分。似乎卡的制造商对使用dd读取驱动器时获得的sha1sum有很大影响。
尽管sha1sum有所不同,但所有这些卡都可以满足我的目的。但是,由于无法比较sha1sum,这使完整性检查变得困难。
两个SD卡分区在挂载时如何可能具有不同的sha1sum,却具有完全相同的内容?
答:所以现在可以正常工作了。为了解决问题,不一致是由我使用的SySTOR复制器引起的。我使用的复制设置使用复制的分区信息和文件,但是不必使用dd位来确保存在一对一的匹配。