从另一个块设备的偏移量创建块设备条目

时间:2015-02-04 14:51:16

标签: c linux

我正在编写我可以猜到的文件系统,它与LUKS / dm-crypt 100%兼容,除了设备开头的128字节元数据块。我没有办法指定crypt_loadcrypt_formatcrypt_activate_by_passphrase的偏移量。

因此,在寻找更通用的解决方案时:如何从C(或C ++)创建指向另一个块设备的偏移量的块设备?

1 个答案:

答案 0 :(得分:1)

devicemapper可以做到这一点。我不了解C接口,但您可以阅读dmsetup的源代码。

特别是:

echo "$SIZE linear /dev/$DEVICE $OFFSET" | dmsetup create NEWDEVICE

将创建名为/dev/mapper/NEWDEVICE的设备。

有趣的是$SIZE$OFFSET的块数,而不是字节数。块大小通常为512字节,因此无法实现128字节的偏移量。但无论如何,你不想错误地设置你的设备中的块,对吗?

更新:好的,我看了看。 dmsetup使用这个很酷的库libdevmapper来完成这项工作。