2011-05-06 61 views
1

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

+6

我很好奇你为什么选择这样做。 :)有没有需要现有的文件系统不符合? – corsiKa 2011-05-06 21:21:47

回答

2

是的,你会编程到内核接口,特别是至少the VFS layer编辑Better link [1]

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

但是,这不是你所说的库。它是一个内核组件,它本质上是内核组件,所以内核不必知道文件系统是如何实现与其中一个协同工作的。

[1] 谷歌错了:先打是不是最好的:)

1

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

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

请注意,FUSE只不过是一个用户级可访问的API来执行相同的操作,所以FUSE挂钩对应于(大致)VFS操作。

相关问题