如何检查 FIT 图像的内容以防止 linux 用户空间中的数据损坏?
用例:在嵌入式应用程序中,我在 NAND 分区中有一个 FIT 映像,我想知道它是否能够启动(而不实际启动它)。
理想情况下,我想这样做而不需要将整个分区转储到文件中(因为这会分别消耗太多的内存或闪存)。
假设图像可用作/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)