验证FIT映像以防Linux用户区中的数据损坏

问题描述 投票:0回答:1

如何在Linux用户环境中检查FIT映像的内容以防止数据损坏?

用例:在嵌入式应用程序中,我在NAND分区中有一个FIT映像,我想知道它是否能够启动(实际上没有启动)。

理想情况下,我希望这样做,而无需将整个分区转储到文件中(因为这会分别吃掉过多的ram或flash)。

假设图像以/dev/flash/bootimage(或某些mtd块)的形式提供。我尝试将Flash设备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)

linux boot crc u-boot userland
1个回答
0
投票

U-Boot带有工具fit_check_sign。您可以像这样检查RSA签名的FIT映像的完整性:

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

您必须提供签名的拟合图像和包含公共密钥的二进制设备树。

[当您创建FIT映像并将设备树作为命令工具/ mkimage的参数-K提供时,公钥将添加到设备树中。

© www.soinside.com 2019 - 2024. All rights reserved.