验证linux用户区中的FIT映像是否存在数据损坏

验证linux用户区中的FIT映像是否存在数据损坏,linux,boot,crc,u-boot,userland,Linux,Boot,Crc,U Boot,Userland,如何在linux用户区检查FIT映像的内容以防止数据损坏 用例:在嵌入式应用程序中,我在NAND分区中有一个合适的映像,我想知道它是否能够启动(而不是实际启动) 理想情况下,我希望这样做,而不需要将整个分区转储到一个文件中(因为这样会分别消耗太多的ram或闪存) 假设该映像可用作/dev/flash/bootmimage(或某些mtd块)。我已尝试将该闪存设备添加到/tmp/bootmimage文件中,并在验证头而非数据的设备上运行mkimage-l 我可以使用dumpimage转储整个fit映

如何在linux用户区检查FIT映像的内容以防止数据损坏

用例:在嵌入式应用程序中,我在NAND分区中有一个合适的映像,我想知道它是否能够启动(而不是实际启动)

理想情况下,我希望这样做,而不需要将整个分区转储到一个文件中(因为这样会分别消耗太多的ram或闪存)

假设该映像可用作
/dev/flash/bootmimage
(或某些mtd块)。我已尝试将该闪存设备添加到
/tmp/bootmimage
文件中,并在验证头而非数据的设备上运行
mkimage-l

我可以使用
dumpimage
转储整个fit映像的特定部分,并在其上运行crc32。这在技术上是可行的,但它也要求我将图像作为文件放在某个地方(似乎无法直接从
/dev/flash/bootmimage
stdin
读取)

我的目标实际上是这样的:

nice -19 dd if=/dev/flash/bootimage | verifybootimage
tools/fit_check_sign -f image.fit -k test.dtb

。。。这意味着我可以把它做成一个后台任务,每天安排一次,优先级非常低,
dd
的输出流是校验和的(
nice-19 dd if=/dev/flash/bootmimage | cksum
会这样工作,但我无法判断cksum输出是否正确,因为报头本身计入了cksum)

U-Boot带有工具安装检查标志。您可以通过以下方式检查RSA signed FIT映像的完整性:

nice -19 dd if=/dev/flash/bootimage | verifybootimage
tools/fit_check_sign -f image.fit -k test.dtb
您必须提供签名的fit映像和包含公钥的二进制设备树

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