我正在写我可以猜测会被归类为文件系统的东西,它与 LUKS/dm-crypt 100% 兼容,除了设备开头的 128 字节元数据 block 。我看不到从 crypt_load
、crypt_format
或 crypt_activate_by_passphrase
指定偏移量的方法。
因此,在寻找更通用的解决方案时:我如何从 C(或 C++)创建一个指向另一个 block 设备偏移量的 block 设备?
最佳答案
devicemapper
可以做到这一点。我不知道C接口(interface),但是你可以阅读dmsetup
的源代码。
特别是:
echo "$SIZE linear /dev/$DEVICE $OFFSET" | dmsetup create NEWDEVICE
将创建一个名为 /dev/mapper/NEWDEVICE
的设备。
有趣的是 $SIZE
和 $OFFSET
是 block 数,而不是字节数。 block 大小通常是 512 字节,所以你的 128 字节的偏移量是不可能的。但无论如何,您不想让设备中的 block 错位,对吗?
更新:好的,我看过了。 dmsetup
使用这个很酷的库 libdevmapper
来完成艰苦的工作。
关于从另一个 block 设备的偏移量创建 block 设备条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324290/