ISO가 USB 드라이브에 올바르게 기록되었는지 어떻게 확인합니까?

ISO가 USB 드라이브에 올바르게 기록되었는지 어떻게 확인합니까?

나는 팔로우한다이것들 표준 설치 프로그램을 사용하여 DebianEeePC를 설치하는 방법내 USB에 데비안 ISO를 쓰는 데비안 위키에 대한 지침입니다.

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

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

답변1

이것을 사용하여 cmp모든 것이 잘 복사되었는지 확인할 수 있습니다.

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

이 솔루션은 -의 체크섬을 명시적으로 계산하지 않지만 /dev/sdX비교 소스(예 debian-X-netinst.iso: .

단순히 후행 블록( iso 파일보다 클 가능성이 높음) dd if=/dev/sdX | sha1sum을 얻기 때문에 단순히 일치하지 않는 체크섬이 생성될 수 있습니다 ./dev/sdX

후행 바이트를 비교 cmp -n하지 않도록 하세요 ./dev/sdX

호출하려는 USB 대용량 저장 장치의 품질에 대해 편집증이 있는 경우 blockdev --flushbufs /dev/sdX장치를 꺼냈다가 다시 삽입하고 비교하십시오. 그렇지 않으면 블록 전체 또는 일부가 커널 VM(캐시)에서 가져온 것일 수도 있고 실제로는 비트 하드웨어가 모두 망가졌습니다.

답변2

Julien의 답변은 작업을 수행하지만 더 쉽고 빠른 방법이 있습니다.

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

답변3

ddmd5sum/ 만 사용 sha1sum하면 충분하지만 앞서 언급했듯이 장치에 파일 크기가 다르므로 합계가 달라질 수 있으므로 주의하세요.

여기서는 아직 할 수 있어요

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

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

그런 다음 시스템 호출을 더 멋지게 만들려면 2의 배수로 만드는 것이 좋습니다. 예를 들어 4096두 제품의 곱은 파일 크기와 정확히 같아야 합니다. 그렇지 않으면 너무 적거나 너무 적은지 확인하게 됩니다. 많은 바이트 많은 경우 잘못된 체크섬이 생성됩니다.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

기쁘네요. 4096 × 244992 = 10034872324096이 저에게 좋고(아마 여러분에게도 좋을 것 같습니다) 블록 크기 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

답변4

@Kyle Jones의 답변을 바탕으로

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

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

관련 정보