加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

将新文件系统编译到Linux内核中

发布时间:2020-12-13 23:25:10 所属栏目:Linux 来源:网络整理
导读:我正在努力在Debian上构建一个新的文件系统作为原型,因为现有的文件系统不符合我的某些要求.它旨在成为评估我们所拥有的某些要求的原型. 为此,我首先想到一个示例file system such as testfs from GitHub来尝试编译它.我在read me的步骤(e),但我不确定如何编
我正在努力在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代码编译内核,然后“安装”它.

>我按照instructions on the Debian page to compile a new kernel获得了内核源代码.
>我运行make menuconfig并进入“文件系统—>”部分

问题:如何在menuconfig上显示模块,以确保它与源代码一起编译并部署?

我的最终目标是能够将驱动器(HDD卷或闪存驱动器)格式化为我的自定义文件系统(我们称之为CustFS,如NTFS或HFS :),用于存储数据,而不必运行Linux操作系统.我已尽力提出实现此目的的步骤,但我找不到合适的帮助.

根据我的理解,我需要做以下事情

>写下FS代码
>使用内核源代码编译它
>部署新内核

我相信FUSE不会让我实现我想要的.我想在拇指驱动器上创建一个FS(作为测试),然后在HDD上创建一个FS,以便能够扩展它以超越它目前在每个文件夹的文件(少数几个)中的限制.

环境细节:

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

如果您有任何其他问题或需要澄清,请告诉我.指向我需要经历的一些教程/步骤将真正有所帮助.
谢谢!

旁注,我是一名大部分时间都在从事Java工作的程序员.我(相信)我在C/C++方面有很好的工作知识,可以根据需要在顶层建立技能.这是我第一次尝试编译内核,我不知道如何添加模块.

解决方法

通常,人们可以通过在FUSE中实现文件系统来开始.这使您可以方便地在用户空间中进行开发,这更易于使用.

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

如果你进入内核路由,你会发现你的文件系统更难调试,开发过程要复杂得多.如果您不知道userland和内核空间之间的真正区别,请避免不惜一切代价制作内核模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读