Як перевірити, чи ISO записаний на моєму USB-накопичувачі без помилок?


11

Я дотримувався цих інструкцій DebianEeePC HowTo InstallUsingStandardInstaller в Wiki Debian, щоб написати ISO Debian на свій USB.

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

Використовуючи sha1sum, я можу перевірити контрольні суми завантаженого ISO-файлу. Як я можу перевірити контрольну суму пристрою USB-накопичувача, щоб бути впевненим, що на USB-накопичувачі немає проблем і що ISO було скопійовано ідеально?


USB - це універсальна послідовна шина. Невже ви маєте на увазі якийсь пристрій, приєднаний до цієї шини (наприклад, flashdrive, Ethernet або звукова карта)?
Стефан Шазелас

@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швидше за все, більше, ніж ізо-файл).

Завдяки цьому cmp -nви переконайтеся, що жодні байти на вашому /dev/sdXпорівнянні не порівнюються.

Якщо ви параноїдаєте щодо якості вашого USB-накопичувача, який ви дзвоните sync, виймайте його, повторно вставляйте його та виконуйте порівняння - інакше всі або деякі блоки можуть просто надходити з ядра VM (кеш) - коли насправді, можливо, біти на апараті накручуються.


1
Гей, там! Коли я це роблю, я отримую моментальну невідповідність на першому рядку. Що може бути причиною?
СарпСТА

3

Відповідь Жюльєна робить роботу, але є простіший і швидший спосіб зробити це:

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

Отже, в одному рядку:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Жульєн Палард

3

Просто використовувати ddта md5sum/ sha1sumдостатньо, але, як було сказано раніше, будьте обережні, ваш пристрій має не той самий розмір, як ваш файл, тому суми будуть відрізнятися.

Ось як ви все ще можете це зробити

Спочатку потрібно знати розмір файлу:

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

Потім, щоб охолонути ваші систематичні дзвінки, ви краще отримаєте це як кратну потужність потужності на два, як 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-паличку, і порівняти його з Debian md5sums.
Пол Рудьо

0

На основі відповіді @Kyle Jones

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

ви повинні використовувати, md5sumтому що це швидше, ніж sha1sum(це заощадить час, коли ви перевірите великий файл)


6
Ти маєш md5sumна увазі щонайменше вдвічі швидше? Це повинно бути, оскільки в ОП вже є сайт sha1sumіз завантаження, і не потрібно це обчислювати. І читання з USB стане обмежуючим фактором, а не розрахунком sha1 / md5.
Антон

1
Я запускаю ZFS з контрольною сумою SHA-256 за системою середнього діапазону, що відрізняється потужністю обробки. Навіть під час скрабування (який зчитує всі дані та перевіряє всі контрольні суми) на пулах, що знаходяться на прядильній іржі, обмежуючим фактором є пропускна здатність дискового вводу / виводу, а не процесор. Я сумніваюся, що багато пам'яті USB підтримують набагато кращу пропускну здатність, ніж це, особливо якщо вона підключена через USB 2.0.
CVn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.