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

标签 c linux

我正在写我可以猜测会被归类为文件系统的东西,它与 LUKS/dm-crypt 100% 兼容,除了设备开头的 128 字节元数据 block 。我看不到从 crypt_loadcrypt_formatcrypt_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/

相关文章:

C - 通过引用传递结构

C - 从文件中逐行读取 - 显示错误的输出

android - 如何在 Android 中 ping 时获取 Unix 时间戳

c - recv 不要在客户端套接字 close() 上向我发送 -1

c - 在 C 中释放指针时显示垃圾值

c - 如何使 GtkScrolledWindow 内的 Gtk+ 小部件在打包到 GtkPane 中时展开?

无法将字符从指针复制到另一个指针(都分配了内存)

linux - 如何向 bash 数组添加值?

linux - 如何运行此命令 dd 的多个实例

linux - tar: 目录: 无法 rmdir: 目录不为空