Eu tenho um monte de cartões SD 10 UHS-1 SDHC de diferentes fabricantes. Eles são todos particionados da seguinte maneira
$ 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
Usei um duplicador de cartão de memória para copiar as imagens. Todos os cartões têm o mesmo conteúdo.
Quando monto a segunda partição de dois cartões SD e comparo o conteúdo, eles são exatamente iguais.
$ 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^
No entanto, se eu comparar o sha1sum das partições, elas às vezes diferem
$ 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 -
Estranho, se eu comparar essas duas unidades usando uma ferramenta de diferenças binárias como radiff2
, vejo o seguinte
$ 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 alterações, mesmo que diff
não tenha visto nenhuma diferença no conteúdo!
E por sanidade, se eu comparar duas partições que tinham o mesmo sha1sum, vejo o seguinte
$ radiff2 -c sdj2.img sdf2.img
0
0 alterações!
Aqui está um resumo dos diferentes sha1sums que vejo em diferentes cartões. Parece que o fabricante da placa tem um grande efeito sobre o sha1sum que recebo quando uso o dd para ler a unidade.
Apesar das diferenças nos sha1sums, todos esses cartões funcionam para meus propósitos. No entanto, está dificultando a verificação de integridade porque não posso comparar sha1sums.
Como é possível que duas partições de cartão SD possam ter sha1sums diferentes, mas tenham exatamente o mesmo conteúdo quando montadas?
Resposta: Então agora funciona como esperado. Para esclarecer as coisas, a inconsistência foi causada pelo duplicador SySTOR que eu estava usando. A configuração de cópia em que eu usei usava informações e arquivos de partições copiados, mas não era necessário dd os bits para garantir que houvesse uma correspondência individual.