A criação de imagem do cartão CF produz resultados inconsistentes

A criação de imagem do cartão CF produz resultados inconsistentes

Um amigo está tentando clonar um cartão CF usando o seguinte comando do Linux:

sudo dd if=/dev/sdb of=card3.img bs=4M status=progress

mas cada vez produz uma imagem diferente. As duas primeiras cartas que eles visualizaram produziram resultados inconsistentes. Qual poderia ser a causa disso?

Responder1

Apenas montar com acesso de gravação (rw) pode significar escrever coisas. Em sistemas de arquivos ext há pelo menos os seguintes atributos que são atualizados:

  • Montado pela última vez em
  • Contagem de montagens
  • Hora da última montagem
  • E possíveis tempos de acesso aos arquivos que são atualizados quando os arquivos são lidos (as montagens noatimedevem interrompê-los).
  • E um atributo "Hora da última gravação" se ocorrer gravação)

Na verdade, montarsemo acesso de gravação (usando -r/ do mount -o ro) ainda pode gravar no dispositivo, consulte man mount:

-r, --somente leitura

Monte o sistema de arquivos somente leitura. Um sinônimo é -o ro.

Observe que, dependendo do tipo de sistema de arquivos, estado e comportamento do kernel, o sistemaainda pode gravar no dispositivo. Por exemplo, ext3 e ext4 reproduzirão o diário se o sistema de arquivos estiver sujo. Para evitar esse tipo de acesso de gravação, você pode querer montar um sistema de arquivos ext3 ou ext4 com oro, sem cargaopções de montagem ou definir o próprio dispositivo de bloco para modo somente leitura, consulte o blockdevcomando (8).

E blockdevtem o --setrocomando para definir um dispositivo de bloco como somente leitura

Você poderia comparar as imagens e ver quais bytes são diferentes, com cmpou algo parecido vbindiff. Apenas alguns bytes podem ser uma data ou contagem em algum lugar (não tenho certeza se os atributos são armazenados como texto simples ou codificados de alguma forma).

Ou monte somente leitura duas (ou mais) das imagens e compare apenas os arquivos. Plain diffpode comparar árvores de diretórios, mas eu prefiro uma interface gráfica como kdiff3. Se a única diferença estiver na contagem de montagens ou na hora da última montagem, ela não aparecerá nos arquivos (diferentes tempos de acesso a arquivos provavelmente também não).

Ou talvez o dispositivo ou sua memória RAM ou qualquer outra coisa esteja com defeito e lendo bytes diferentes aqui e ali.

Você também pode manter o dispositivo desmontado, criar uma imagem, desconectar e reconectar o dispositivo (ainda desmontado) e criar outra imagem e comparar, elas devem ser iguais.

informação relacionada