Veritysetup 验证在哈希偏移处失败

Veritysetup 验证在哈希偏移处失败

我正在尝试使用 dm-verity 来验证 sd 卡分区。我做到了

veritysetup format --hash-offset=24215552 /dev/sdb4 /dev/sdb4

在同一设备上以给定的偏移量创建哈希设备。

现在我要验证前10个数据块:

veritysetup verify --hash-offset=24215552 --data-blocks=10 /dev/sdb4 /dev/sdb4 b49905b65942b0f54a2f70b09cd7bf2c8c15ce6924c7b8bae913ad8cc3f303fc

但我得到:

Verification failed at position 24215552.
Verification of data area failed.

我完全不知道为什么它会尝试验证哈希树应该位于的区域,因为我指定了我希望它验证的数据块的数量(在我看来,这应该在 10x1024Bytes 的偏移量处停止验证)。在此先感谢您的帮助。

答案1

在第一个命令中指定数据块的数量(创建哈希树时)后,它就可以工作了。

我想如果没有指定要散列的数据块的数量,则 verity 会对整个设备进行散列。然后,当它在指定的偏移处写入哈希树时,磁盘这部分的块显然会发生变化 - 因此在验证时,之前计算的哈希值不再包含太多数据。

那么为什么即使在验证时指定了“data-blocks”选项,它仍然要检查此部分呢?因为根据文档,该选项不能用于验证,只能使用哈希偏移量和无超级块。有关要验证的区域的信息必须在创建时保留在哈希部分的标头中。

相关内容