我正在努力在Debian上构建一个新的文件系统作为原型,因为现有的文件系统不符合我的某些要求。它旨在成为评估我们的某些要求的原型。
为此,我首先考虑使用示例file system such as testfs from GitHub来尝试编译它。我在read me的步骤(e),但我不确定如何编译Linux。
到目前为止的步骤:
我正在尝试为项目使用provided 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
Alterantive尝试尝试使用FS代码编译内核,然后“安装”它。
make menuconfig
并进入了“文件系统--->”节 问题:如何在menuconfig
上显示我的模块,以确保它与源代码一起编译并部署?
我的最终目标是能够格式化驱动器(HDD卷或闪存驱动器)到我的自定义文件系统(我们称之为CustFS,如NTFS或HFS :))用于存储数据,而不一定是运行Linux操作系统。我已经尽力采取措施来做到这一点,但我找不到合适的帮助。
根据我的理解,我需要做以下
环境详情:
uname -r
)如果您有任何其他问题或需要澄清,请告知我们。指向我需要经历的一些教程/步骤将真正有所帮助。 谢谢!
旁注,我是一名大部分时间都在从事Java工作的程序员。我(相信)我在C / C ++方面有很好的工作知识,可以根据需要在顶层建立技能。这是我第一次尝试编译内核,我不知道如何添加模块。
答案 0 :(得分:1)
通常,人们首先要在FUSE中实现文件系统。这使您可以方便地在用户空间中进行开发,这更容易使用。
你几乎可以肯定在FUSE做任何事情,如果你担心性能,你不会使用FUSE的主要原因。 ZFS和NTFS都在FUSE中实现。
如果你进入内核路由,你会发现你的文件系统更难调试,开发过程要复杂得多。如果您不知道userland和内核空间之间的真正区别,那么就不要再费力地创建内核模块了。