我正在编写我可以猜到的文件系统,它与LUKS / dm-crypt 100%兼容,除了设备开头的128字节元数据块。我没有办法指定crypt_load
,crypt_format
或crypt_activate_by_passphrase
的偏移量。
因此,在寻找更通用的解决方案时:如何从C(或C ++)创建指向另一个块设备的偏移量的块设备?
答案 0 :(得分:1)
devicemapper
可以做到这一点。我不了解C接口,但您可以阅读dmsetup
的源代码。
特别是:
echo "$SIZE linear /dev/$DEVICE $OFFSET" | dmsetup create NEWDEVICE
将创建名为/dev/mapper/NEWDEVICE
的设备。
有趣的是$SIZE
和$OFFSET
的块数,而不是字节数。块大小通常为512字节,因此无法实现128字节的偏移量。但无论如何,你不想错误地设置你的设备中的块,对吗?
更新:好的,我看了看。 dmsetup
使用这个很酷的库libdevmapper
来完成这项工作。