Проверьте FIT-образ на предмет повреждения данных в пользовательском пространстве linux

Как я могу проверить содержимое FIT-изображения на предмет повреждения данных в пользовательской среде Linux?

Пример использования: во встроенном приложении у меня есть образ FIT в разделе NAND, и я хочу знать, сможет ли оно загрузиться (без фактической загрузки).

В идеале я бы хотел сделать это без необходимости выгружать весь раздел в файл (так как это съело бы слишком много оперативной памяти или флэш-памяти соответственно).

Допустим, изображение доступно как /dev/flash/bootimage(или как какой-то блок mtd). Я пыталсяdd это флеш-устройство в /tmp/bootimage файл и запустить mkimage -lна том, что проверяет заголовок, но не данные.

Я мог бы использовать dumpimageчтобы выгрузить определенную часть всего подходящего образа и запустить для этого crc32. Это технически сработает, но также требует, чтобы изображение было где-то доступно в виде файла (кажется, он не может читать из/dev/flash/bootimage или из stdin напрямую).

Моя цель на самом деле была бы примерно такой:

nice -19 dd if=/dev/flash/bootimage | verifybootimage

... что означает, что я мог бы сделать это несколько фоновой задачей, которая запланирована один раз в день с очень низким приоритетом и выходным потоком dd контрольная сумма (nice -19 dd if=/dev/flash/bootimage | cksum будет работать так, но я не могу сказать, верен ли вывод cksum, поскольку сам заголовок учитывается в cksum)

1 ответ

U-Boot поставляется с инструментом fit_check_sign. Проверить целостность образа FIT, подписанного RSA, можно следующим образом:

tools/fit_check_sign -f image.fit -k test.dtb

Вы должны предоставить подписанное подходящее изображение и двоичное дерево устройств, содержащее открытый ключ.

Открытый ключ добавляется в дерево устройств, когда вы создаете образ FIT и предоставляете дерево устройств в качестве параметра -K команды tools/mkimage.

Другие вопросы по тегам