Làm cách nào để kiểm tra xem ISO có được ghi vào thanh USB của tôi không mà không có lỗi?


10

Tôi đã làm theo các hướng dẫn DebianEeePC này Cách cài đặtUsingSt ChuẩnInstaller tại Debian Wiki, để viết Debian ISO vào USB của tôi.

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

Sử dụng sha1sum, tôi có thể kiểm tra tổng kiểm tra tệp ISO đã tải xuống của mình. Làm cách nào tôi có thể kiểm tra tổng kiểm tra của thiết bị thanh USB, để chắc chắn rằng thanh USB không có vấn đề gì và ISO đã được sao chép hoàn hảo?


USB là xe buýt nối tiếp vạn năng. Chắc chắn bạn có nghĩa là một số loại thiết bị được gắn vào xe buýt đó (như flashdrive, ethernet hoặc card âm thanh)?
Stéphane Chazelas

@StephaneChazelas, đã chỉnh sửa câu hỏi.
maxschlepzig

Câu trả lời:


17

Bạn có thể sử dụng cmpđể kiểm tra xem mọi thứ đã được sao chép tốt chưa:

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

Giải pháp này không tính toán rõ ràng tổng kiểm tra của bạn /dev/sdX- nhưng bạn không cần phải làm điều đó bởi vì bạn đã thực hiện điều này cho nguồn so sánh (nghĩa là debian-X-netinst.iso).

Chỉ thực hiện một dd if=/dev/sdX | sha1sumkiểm tra có thể mang lại kết quả kiểm tra khớp sai chỉ vì bạn nhận được các khối theo dõi ( /dev/sdXrất có thể lớn hơn tệp iso).

Thông qua cmp -nbạn đảm bảo rằng không có byte theo dõi trên của bạn /dev/sdXđược so sánh.

Nếu bạn hoang tưởng về chất lượng của thiết bị lưu trữ dung lượng lớn USB mà bạn gọi sync, hãy đẩy nó ra, lắp lại và sau đó thực hiện so sánh - tất cả hoặc một số khối có thể đến từ hạt nhân VM (bộ đệm) - trong thực tế có lẽ là bit trên phần cứng được vặn lên.


1
Này đó! Khi tôi làm điều này, tôi nhận được sự không phù hợp ngay lập tức ở dòng đầu tiên. Điều gì có thể là nguyên nhân?
SarpSTA

3

Câu trả lời của Julien thực hiện công việc nhưng có một cách đơn giản và nhanh hơn để làm điều này:

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

Vì vậy, trong một dòng duy nhất:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard

3

Chỉ cần sử dụng ddmd5sum/ sha1sumlà đủ, nhưng như đã nói trước đây, hãy cẩn thận, thiết bị của bạn không có cùng kích thước với tệp của bạn, vì vậy tổng sẽ khác nhau.

Ở đây làm thế nào bạn vẫn có thể làm điều đó

Trước tiên, bạn sẽ cần biết kích thước của tệp:

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

Sau đó, để làm mát với các tòa nhà của bạn, tốt hơn bạn nên lấy nó như là một bội số của một sức mạnh tốt như hai 4096, phép nhân của hai PHẢI mang lại chính xác kích thước của tệp, theo những cách khác, bạn sẽ kiểm tra quá ít hoặc quá nhiều byte, mang lại một tổng kiểm tra sai.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Tôi rất vui, 4096 × 244992 = 1003487232vì 4096 là tốt cho tôi, (và sẽ cho bạn, có lẽ) vì vậy tôi có thể sử dụng một kích thước khối 4096(điển hình) và một số khối của 244992.

Đừng quên ghi tập tin vào phím USB ...

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

Và biết rằng, bằng cách sử dụng kích thước khối đã biết và số khối, bạn có thể đọc chính xác số byte từ khóa và kiểm tra chúng:

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

(Có md5sumlà cách nhanh hơn sha1sumnhưng rõ ràng đó không phải là nút cổ chai của bạn ở đây, nút cổ chai là thông báo USB, cảm ơn vì đã chú ý).

Hoặc, nói ngắn gọn:

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

Nhờ $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum tôi có thể kiểm tra md5sum của một hình ảnh Debian được ghi vào thanh usb và so sánh nó với Debian md5sums.
Paul Rougieux

0

Dựa trên câu trả lời của @Kyle Jones

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

bạn nên sử dụng md5sumvì nó nhanh hơn sha1sum(điều này sẽ tiết kiệm thời gian khi bạn kiểm tra tệp lớn)


6
Ý bạn md5sumlà nhanh nhất ít nhất gấp đôi? Phải là vì OP đã có sha1sumtừ trang tải xuống và không phải tính toán điều đó. Và đọc từ USB sẽ là yếu tố giới hạn không phải là tính toán sha1 / md5.
Anthon

1
Tôi đang chạy ZFS với kiểm tra SHA-256 trên hệ thống tầm trung xử lý mạnh mẽ. Ngay cả trong quá trình kiểm tra (đọc tất cả dữ liệu và xác minh tất cả tổng kiểm tra) trên các nhóm nằm trong quá trình quay gỉ, yếu tố giới hạn là thông lượng I / O của đĩa, không phải CPU. Tôi nghi ngờ nhiều thẻ nhớ USB sẽ duy trì thông lượng tốt hơn nhiều, đặc biệt nếu nó được kết nối qua USB 2.0.
một CVn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.