编译一个新的文件系统到Linux内核

我正在build立一个新的文件系统作为Debian的原型,因为现有的文件系统不符合我的要求。 这意味着成为评估我们具有的某些要求的原型。

为了做到这一点,我首先想到从GitHub中获取一个例如testfs的文件系统来尝试编译它。 我正在阅读我的步骤(五),但我不知道如何编译Linux。


到目前为止的步骤是:

我正在尝试使用为项目提供的MakeFile ,但这是我得到的错误。

make -C /home/username/Workspace/testfs M=`pwd` modules make[1]: Entering directory `/home/username/Workspace/testfs' make[1]: *** No rule to make target `modules'. Stop. make[1]: Leaving directory `/home/username/Workspace/testfs' make: *** [testfs] Error 2 

据我所知,它需要内核源码(在我的/usr/src )。

 debian:testfs karun$l /usr/src/ total 74M drwxr-xr-x 4 root root 4.0K Jan 8 18:34 linux-headers-3.2.0-4-686-pae drwxr-xr-x 4 root root 4.0K Jan 8 18:34 linux-headers-3.2.0-4-common lrwxrwxrwx 1 root root 23 Jun 24 2012 linux-kbuild-3.2 -> ../lib/linux-kbuild-3.2 -rw-r--r-- 1 root root 122K Sep 18 20:20 linux-patch-3.2-rt.patch.bz2 lrwxrwxrwx 1 root root 25 Jan 10 20:21 linux-source -> /usr/src/linux-source-3.2 drwxr-xr-x 22 root root 4.0K Sep 18 20:20 linux-source-3.2 -rw-r--r-- 1 root root 74M Sep 18 20:22 linux-source-3.2.tar.bz2 lrwxrwxrwx 1 root root 49 Jan 8 14:29 vboxguest-4.3.6 -> /opt/VBoxGuestAdditions-4.3.6/src/vboxguest-4.3.6 

另一种尝试是尝试用FS代码编译内核,然后“安装”它。

  • 我按照Debian页面上的说明获得了内核源代码, 以编译新的内核 。
  • 我运行make menuconfig进入“文件系统—>”部分

问题:如何让我的模块在menuconfig可见,以确保它与源代码一起编译和部署?

我的最终目标是能够将驱动器 (HDD卷或闪存驱动器) 格式化 为我的自定义文件系统 (我们称之为CustFS,如NTFS或HFS :)),用于存储数据,而不一定将Linux操作系统closures。 我已经尽了我的努力想出步骤来做到这一点,但我找不到合适的帮助。

从我的理解,我需要做到以下几点

  • 写FS代码
  • 用内核源码进行编译
  • 部署新的内核

我相信FUSE不会让我达到我想要的。 我想在拇指驱动器(作为testing)上创build一个FS,然后在HDD上创build一个FS,以便能够扩展它以超过当前对每个文件夹(less数几个)中的文件限制。


环境细节:

  • Debian 7.3(wheezy)运行VirtualBox
  • Linux内核版本3.2.0-4-686-pae(从uname -r转储)

如果您还有其他问题需要澄清,请告诉我。 指点我的一些教程/步骤,我需要经历的事情真的会有所帮助。 谢谢!

注意,我是一个程序员,他大部分时间都在Java上工作。 我(相信)我在C / C ++有一个体面的工作知识,并可以根据需要在顶部build立技能。 这是我第一次尝试编译内核,我不知道如何添加模块。

通常情况下,可以从FUSE中实现文件系统开始。 这可以让你方便的开发用户区,这是更容易处理。

你几乎可以肯定地做任何事情在FUSE中,如果你担心性能,你不会使用FUSE的主要原因。 ZFS和NTFS都在FUSE中实现。

如果你走内核路线,你会发现你的文件系统更难调试,而且开发过程要复杂得多。 如果您不知道用户空间和内核空间之间的真正区别,不要不惜一切代价来创建内核模块。