จะตรวจสอบได้อย่างไรว่า ISO นั้นถูกเขียนไปยัง USB Stick ของฉันโดยไม่มีข้อผิดพลาด?


11

ฉันทำตามคำแนะนำDebianEeePC เหล่านี้ วิธีการติดตั้งใช้คำสั่งInStandardInstallerที่ Debian Wiki เพื่อเขียน Debian ISO ลงใน USB ของฉัน

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

ใช้sha1sumฉันสามารถตรวจสอบ checksums ของไฟล์ ISO ที่ดาวน์โหลดได้ ฉันจะตรวจสอบ checksum ของอุปกรณ์ USB stick ได้อย่างไรเพื่อให้แน่ใจว่า USB stick ไม่มีปัญหาใด ๆ และ ISO ถูกคัดลอกอย่างสมบูรณ์


USB คือบัสอนุกรมสากล คุณหมายถึงอุปกรณ์ประเภทใดบ้างที่ติดอยู่กับบัสนั้น (เช่นแฟลชไดรฟ์อีเธอร์เน็ตหรือการ์ดเสียง)
Stéphane Chazelas

@StephaneChazelas แก้ไขคำถาม
maxschlepzig

คำตอบ:


18

คุณสามารถใช้cmpสำหรับตรวจสอบว่าทุกอย่างถูกทำสำเนาถูกต้องหรือไม่:

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

โซลูชันนี้ไม่ได้คำนวณการตรวจสอบอย่างชัดเจนของคุณ/dev/sdX- แต่คุณไม่จำเป็นต้องทำเช่นนั้นเพราะคุณได้ทำสิ่งนี้ไปแล้วสำหรับแหล่งที่มาของการเปรียบเทียบ (เช่นdebian-X-netinst.iso)

การทำเพียงแค่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

เพียงแค่ใช้ddและmd5sum/ sha1sumก็พอ แต่อย่างที่เคยกล่าวไว้ว่าระวังอุปกรณ์ของคุณมีขนาดไม่เท่ากันกับไฟล์ของคุณดังนั้นผลรวมจะแตกต่างกัน

นี่คือวิธีที่คุณยังสามารถทำได้

ก่อนอื่นคุณต้องรู้ขนาดของไฟล์:

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

จากนั้นเพื่อให้เย็นด้วย syscalls ของคุณคุณควรจะได้รับสิ่งนี้เป็นพลังงานที่ดีของสองเช่น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 ฉันสามารถตรวจสอบ md5sum ของภาพ Debian ที่เขียนไปยัง usb stick และเปรียบเทียบกับ Debian md5sums
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
ฉันกำลังใช้ ZFS ด้วยการตรวจสอบ SHA-256 กับระบบช่วงกลางการประมวลผลที่ชาญฉลาด แม้ในระหว่างการขัด (ซึ่งอ่านข้อมูลทั้งหมดและตรวจสอบการตรวจสอบทั้งหมด) ในพูลที่อยู่บนการเกิดสนิมหมุนปัจจัยที่ จำกัด คือปริมาณงานของดิสก์ I / O ไม่ใช่ CPU ฉันสงสัยว่าหน่วยความจำ USB จำนวนมากจะรักษาปริมาณงานได้ดีกว่าโดยเฉพาะอย่างยิ่งหากเชื่อมต่อผ่าน USB 2.0
CVn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.