dd가 손상된 복사본을 제공하는 것처럼 보이는 이유는 무엇입니까?

dd가 손상된 복사본을 제공하는 것처럼 보이는 이유는 무엇입니까?

다른 USB 플래시 드라이브를 사용하여 Centos 및 Ubuntu를 실행하는 다른 컴퓨터에서 이것을 시도했지만 dd는 부팅할 수 없는 플래시 드라이브를 계속 생성합니다.

$ sudo dd if=foo.iso of=/dev/sdb bs=1M status=progress && sync
548****** bytes (548 MB, 523 MiB) copied, 7 s, 78.3 MB/s
551+1 records in
551+1 records out
577****** bytes (578 MB, 551 MiB) copied, 8.70126 s, 66.4 MB/s
$ sudo md5sum /dev/sdb
****************************ef59  /dev/sdb
$ sudo md5sum foo.iso
****************************21ce  foo.iso

MD5는 다릅니다.

sudo dd if=/dev/sdb of=bar.iso bs=1M status=progress &&sync 의 결과는 바이트 간 비교 도구의 foo.iso와 완전히 다릅니다.

또 다른 점은 설치 후 플래시 드라이브가 잘 읽히지 않는다는 것입니다.

이 문제를 해결하는 이유와 방법은 무엇입니까?

답변1

저장 하는 데이터 /dev/sdb는 그보다 길 수 있습니다 foo.iso. 디스크 드라이브는 특정 길이로 자를 수 없으므로 dd복사해야 하는 데이터만 복사하고 나머지는 그대로 둡니다. 읽으면 md5sum꼬리 부분도 읽어줍니다. 꼬리가 0이더라도 여전히 해시 값이 변경됩니다.

길이를 확인한 foo.iso후 초기 부분의 해시만 가져와야 합니다.

예를 들어 GNU 시스템의 경우:

len=$(stat -c %s foo.iso)
sudo head -c "$len" /dev/sdb | md5sum

(또는 출력을 확인하여 ls -l파일 길이를 얻으십시오.)

관련 정보