Как проверить, был ли ISO записан в мою карту с интерфейсом USB без ошибок?

Способ более общего назначения ограничить ЦП состоит в том, чтобы использовать /sys. Это походит на то, кроме чего Вы хотите так или иначе начиная с вещей tar способны к выполнению в вычислительном отношении дорогих задач, его просто, что Вы видите tar сделайте это больше всего.

Способ сделать это к:

  1. перейдите в /sys/devices/system/cpu/cpuX/cpufreq для каждого из Ваших центральных процессоров (замена cpuX с каждым CPU).
  2. Затем посмотрите в файле scaling_available_frequencies видеть что частоты Ваши поддержки ЦП.
  3. Выберите частоту (позволяет, говорят 1234567), и сделать echo 1234567 > scaling_max_freq

Это предотвратит ЦП от когда-либо выхода за предел указанной частоты.

9
04.01.2019, 20:34
4 ответа

Можно использовать 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 скорее всего, больше, чем изофайл).

Через cmp -n Вы удостоверяетесь что никакие запаздывающие байты на Вашем /dev/sdX сравнены.

Если Вы параноики о качестве Вашего устройства массового хранения USB, Вы звоните sync, извлеките его, повторно вставьте его и затем сделайте сравнение - еще все или некоторые блоки могут просто прибыть из ядер VM (кэш) - когда в действительности, возможно, биты на аппаратных средствах завинчены.

16
27.01.2020, 20:05
  • 1
    BEGINFILE Эй там! Когда я делаю это, я получаю мгновенное несоответствие в самой первой строке. Какова может быть причина? –  SarpSTA 25.03.2018, 00:40

На основе @Kyle ответа Jones

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

необходимо использовать md5sum потому что это быстрее, чем sha1sum (это сэкономит время при проверке большого файла),

0
27.01.2020, 20:05
  • 1
    Вы имеете в виду md5sum по крайней мере вдвое более быстро? Это должно быть, так как OP уже имеет sha1sum от сайта для скачивания и не должен вычислять это. И чтение из USB будет ограничивающим фактором не sha1/md5 вычисление. –  Anthon 12.05.2013, 08:20
  • 2
    я выполняю ZFS с вычислением контрольной суммы SHA-256 в мудрой вычислительной мощностью средней системе. Даже во время кустов (который считывает все данные и проверяет все контрольные суммы), на пулах, находящихся на вращающейся ржавчине, ограничивающим фактором является диск пропускная способность ввода-вывода, не ЦП. Я сомневаюсь, что много карт памяти USB выдержат намного лучшую пропускную способность, чем это, особенно если она будет соединена по USB 2.0. –  a CVn 29.10.2013, 10:59

Достаточно просто использовать 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
2
27.01.2020, 20:05

Ответ Жюльена справляется с задачей, но есть более простой и быстрый способ:

sudo head -c <image size> /dev/sdX | sha1sum
3
27.01.2020, 20:05

Теги

Похожие вопросы