制作新的文件系统

时间:2011-05-06 21:20:16

标签: c filesystems

我正在为我正在开发的项目制作一个自定义文件系统。目前我正在考虑用Python和fusepy编写它,但它让我想知道如何在Linux中编译非用户空间文件系统。是否需要使用特定库或需要实现的功能才能使mount命令正常工作。总的来说,我不确定整个过程是如何运作的。

3 个答案:

答案 0 :(得分:2)

是的,你要编程到内核接口,至少是the VFS layer修改 Better link [1]

'完整'文档位于内核树中:http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt。当然,熔丝内核模块被编程为完全相同的接口

然而,这不是你所谓的图书馆。它本质上是一个内核组件,所以内核不必知道文件系统是如何实现的。

[1] 谷歌错了:第一次打击不是最好的:)

答案 1 :(得分:1)

如果您想用Python编写,保险丝是一个不错的选择。有很多教程,例如:http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FUSE_Python_tutorial

答案 2 :(得分:1)

简而言之:Linux是一个具有一些模块加载功能的单片内核。这意味着每个内核功能(文件系统,调度程序,驱动程序,内存管理等)都是一个名为Linux的大型程序的一部分。可加载模块只是一种特殊的运行时链接方式,允许用户根据需要选择这些功能,但它们仍然主要是作为单个程序开发的。

因此,要创建新的文件系统,只需将新的C源代码文件添加到内核代码中,定义文件系统必须执行的操作。然后,创建一个初始化函数,该函数分配VFS结构的新实例,用适当的函数指针填充它并向VFS注册。

请注意,FUSE只是用户级别可访问的API,因此FUSE挂钩(粗略地)对应于VFS操作。