我正在为我正在制作的项目制作一个自定义文件系统。目前我正在用Python和fusepy编写它,但它让我想知道如何在Linux中编译非用户空间文件系统。是否有需要使用的特定库或需要执行的函数才能使mount命令正常工作。总的来说,我不确定整个过程是如何工作的。制作一个新的文件系统
1
A
回答
2
是的,你会编程到内核接口,特别是至少the VFS layer
。 编辑Better link [1]
'全' 的文件是在内核树:http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt。当然,熔丝内核模块被编程为完全相同的接口
但是,这不是你所说的库。它是一个内核组件,它本质上是内核组件,所以内核不必知道文件系统是如何实现与其中一个协同工作的。
[1] 谷歌错了:先打是不是最好的:)
1
如果你想用Python编写它,保险丝是一个不错的选择。有很多的教程,例如这里:http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FUSE_Python_tutorial
1
总之:Linux是单内核的一些模块的装载能力。这意味着每个内核功能(文件系统,调度程序,驱动程序,内存管理等)都是称为Linux的一个大型程序的一部分。可加载模块只是运行时链接的一种特殊方式,它允许用户根据需要选择这些功能,但它们大多仍作为单个程序开发。
因此,要创建一个新的文件系统,只需将新的C源代码文件添加到内核代码中,定义文件系统必须执行的操作。然后,创建一个初始化函数,分配一个新的VFS结构实例,用适当的函数指针填充它并向VFS注册。
请注意,FUSE只不过是一个用户级可访问的API来执行相同的操作,所以FUSE挂钩对应于(大致)VFS操作。
相关问题
- 1. 制作一个链接到文件系统的文档库
- 2. 将rpm从一个操作系统复制到另一个操作系统
- 3. 新文件系统的mkfs
- 4. 文件系统操作确实“刷新”
- 5. 操作系统如何控制文件?
- 6. 二进制文件和操作系统
- 7. 原型制作文件系统
- 8. 制作一个小于系统最小值的窗口(无系统控件)?
- 9. 制作一个网站评论系统
- 10. 制作另一个CRM系统
- 11. 制作一个facebook通知系统
- 12. 复制一个文件并用AppleScript替换系统文件
- 13. 如何制作一个基本的插件系统/ modloader?
- 14. 从System.Drawing.Image的文件系统上创建一个新的图像?
- 15. 操作文件系统
- 16. FUSE文件系统操作
- 17. 把一个完整的文件系统到版本控制
- 18. c从一个系统到另一个系统的文件传输#
- 19. 在另一个系统的网络系统中创建一个文件夹
- 20. Python制作系统
- 21. 制作一个WPF系统上下文菜单项可切换
- 22. Android操作系统更新系统
- 23. 试图制作一个插件系统在C++/Qt
- 24. Commons-vfs嘲讽一个文件系统
- 25. 是否有一个低级prepend操作的文件系统?
- 26. 另一个版本控制系统是否具有类似ClearCase的文件系统访问文件版本?
- 27. 在iPhone文件系统中制作和编辑.psd文件
- 28. 的Hadoop文件系统是物理文件系统或虚拟文件系统
- 29. 制作一个随机数罕见的系统,它不工作
- 30. 如何将文件从本地文件系统复制到HDFS文件系统?
我很好奇你为什么选择这样做。 :)有没有需要现有的文件系统不符合? – corsiKa 2011-05-06 21:21:47