CF 카드 이미지 생성 시 일관성 없는 결과가 발생함

CF 카드 이미지 생성 시 일관성 없는 결과가 발생함

친구가 다음 Linux 명령을 사용하여 CF 카드를 복제하려고 합니다.

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

하지만 매번 다른 이미지를 만들어내고 있습니다. 그들이 이미지화한 처음 두 카드는 일관성 없는 결과를 가져왔습니다. 이것의 원인은 무엇일까요?

답변1

쓰기 액세스(rw)로 마운트하는 것만으로도 뭔가를 쓸 수 있습니다. ext 파일 시스템에는 최소한 다음 속성이 업데이트됩니다.

  • 마지막으로 마운트된 날짜
  • 마운트 수
  • 마지막 마운트 시간
  • 그리고 파일을 방금 읽었을 때 업데이트되는 가능한 파일 액세스 시간입니다(마운트는 noatime이를 중지해야 합니다).
  • 그리고 쓰기가 발생하는 경우 "마지막 쓰기 시간" 속성)

실제로 장착은없이쓰기 액세스(마운트 -r/ 사용 -o ro)는 여전히 장치에 쓸 수 있습니다. man mount를 참조하세요.

-r, --읽기 전용

파일 시스템을 읽기 전용으로 마운트합니다. 동의어는 -o ro입니다.

파일 시스템 유형, 상태 및 커널 동작에 따라 시스템이여전히 장치에 쓸 수 있습니다. 예를 들어, ext3 및 ext4는 파일 시스템이 더러워지면 저널을 재생합니다. 이러한 종류의 쓰기 액세스를 방지하려면 다음을 사용하여 ext3 또는 ext4 파일 시스템을 마운트할 수 있습니다.ro,무부하마운트 옵션을 사용하거나 블록 장치 자체를 읽기 전용 모드로 설정하려면 blockdev(8) 명령을 참조하세요.

그리고 블록 장치를 읽기 전용으로 설정하는 명령이 blockdev있습니다 .--setro

이미지를 비교하고 어떤 바이트가 다른지 확인할 수 cmp있습니다 vbindiff. 몇 바이트만 날짜이거나 어딘가에 계산될 수 있습니다(속성이 일반 텍스트로 저장되어 있는지, 아니면 어떻게든 인코딩되었는지는 확실하지 않습니다).

또는 두 개 이상의 이미지를 읽기 전용으로 마운트하고 파일만 비교합니다. Plain은 diff디렉토리 트리를 비교할 수 있지만 kdiff3. 유일한 차이점이 마운트 횟수나 마지막 마운트 시간이라면 파일에 표시되지 않습니다(다른 파일 액세스 시간도 아마 표시되지 않을 것입니다).

아니면 장치나 램 또는 다른 것이 나빠져서 여기저기서 다른 바이트를 읽을 수도 있습니다.

또한 장치를 마운트 해제된 상태로 유지하고 이미지를 만든 다음 장치를 분리했다가 다시 연결하고(여전히 마운트 해제된 상태) 다른 이미지를 만든 다음 비교할 수도 있습니다. 동일해야 합니다.

관련 정보