ISO가 USB 스틱에 오류없이 기록되었는지 확인하는 방법은 무엇입니까?


11

나는 다음 DebianEeePC 하우투 InstallUsingStandardInstaller의 내 USB에 데비안 ISO를 작성, 데비안 위키에서 지침을.

dd if=debian-*-netinst.iso of=/dev/sdX

를 사용하여 sha1sum다운로드 한 ISO 파일의 체크섬을 확인할 수 있습니다. USB 스틱 장치의 체크섬을 확인하여 USB 스틱에 문제가없고 ISO가 완벽하게 복사되었는지 확인하려면 어떻게해야합니까?


USB는 범용 직렬 버스입니다. 플래시에 연결된 장치 (예 : 플래시 드라이브, 이더넷 또는 사운드 카드)를 의미합니까?
Stéphane Chazelas

@StephaneChazelas는 질문을 편집했습니다.
maxschlepzig 2013 년

답변:


18

cmp모든 것이 제대로 복사되었는지 확인하는 데 사용할 수 있습니다 .

$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX

이 솔루션은 체크섬을 명시 적으로 계산하지는 않지만 /dev/sdX이미 비교 소스 (예 :)를 위해이를 수행했기 때문에이를 수행 할 필요는 없습니다 debian-X-netinst.iso.

단지 a를 수행하면 dd if=/dev/sdX | sha1sum후행 블록을 얻었 기 때문에 일치하지 않는 체크섬이 생성 될 수 있습니다 ( /dev/sdX대부분 iso 파일보다 큽니다).

을 통해 cmp -n후행 바이트 /dev/sdX가 비교 되지 않도록하십시오 .

호출하는 USB 대용량 저장 장치의 품질에 대해 편집증이 있다면 sync그것을 꺼내고 다시 삽입 한 다음 비교를 수행하십시오. 그렇지 않으면 실제로 모든 비트가 커널 VM (캐시)에서 올 수 있습니다 하드웨어가 망가졌습니다.


1
이봐! 이렇게하면 맨 첫 줄에 즉시 불일치가 발생합니다. 원인이 무엇입니까?
SarpSTA

3

Julien의 답변이 효과가 있지만이를 수행하는 더 간단하고 빠른 방법이 있습니다.

sudo head -c <image size> /dev/sdX | sha1sum

따라서 한 줄로 :head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard

3

ddand md5sum/ 만 사용하면 sha1sum충분하지만 앞에서 말했듯이 장치의 크기가 파일과 크기가 다르므로 합계가 다릅니다.

여기 아직도 할 수있는 방법

먼저 파일 크기를 알아야합니다.

$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232

그런 다음 syscall로 멋지게하려면이 두 가지의 좋은 힘의 배수로 얻는 것이 좋습니다. 두 가지 4096의 곱셈은 파일의 크기를 정확하게 산출해야합니다. 다른 방법으로, 너무 적은 또는 너무 많은 바이트로 인해 잘못된 체크섬이 생성됩니다.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

나는 행복합니다 4096 × 244992 = 1003487232.4096은 나에게 좋으며 (아마도 당신에게) 블록 ​​크기 4096(일반)와 블록 수를 사용할 수 있습니다 244992.

USB 키에 파일을 쓰는 것을 잊지 마십시오 ...

$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync

알려진 블록 크기와 블록 수를 사용하여 키에서 정확한 바이트 수를 읽고 확인할 수 있습니다.

$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184

(예 md5sum보다 빠르지 sha1sum만 여기서 병목 현상은 분명하지 않습니다. 병목 현상은 USB 덕분입니다.

또는 간단히 말해 :

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum

덕분 $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum 에 USB 스틱에 작성된 데비안 이미지의 md5sum을 확인하고 데비안 md5sum과 비교할 수 있습니다.
Paul Rougieux

0

@Kyle Jones의 답변을 바탕으로

diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')

md5sum보다 빠르기 때문에 사용해야합니다 sha1sum(큰 파일을 확인하면 시간이 절약됩니다)


6
md5sum적어도 두 배는 빠르다는 뜻 입니까? OP가 이미 sha1sum다운로드 사이트에서 가져 왔으므로 계산할 필요가 없기 때문입니다. 그리고 USB에서 읽는 것은 sha1 / md5 계산이 아니라 제한 요소가 될 것입니다.
Anthon

1
처리 전력 수준의 중급 시스템에서 SHA-256 체크섬으로 ZFS를 실행하고 있습니다. 회전식 녹에 상주하는 풀에서 스크럽 (모든 데이터를 읽고 모든 체크섬을 확인) 중에도 제한 요소는 CPU가 아닌 디스크 I / O 처리량입니다. 많은 USB 메모리 스틱이 특히 USB 2.0을 통해 연결된 경우 그보다 훨씬 더 나은 처리량을 유지할 것이라고 의심합니다.
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.