【发布时间】:2011-11-08 07:50:54
【问题描述】:
我是内核编程的新手,我遇到了一些问题,所以我很感激一些帮助。如果之前有人问过类似的问题,我提前道歉,我没有找到任何相关的帖子,并且可以在网上找到解释,这些解释很简单,让像我这样在该领域没有经验的人能够理解。
我想试验一下我自己的 ext2 版本。 我从 kernel.org 获得了源文件,并进行了适当的更改。没什么特别的,只是为了检查一下我的想法。
现在我想将它插入我的 linux 内核(如果重要的话,ubuntu 2.6.31-14-generic-pae)。 我该怎么做?
我(显然是幼稚的)最初的想法是简单地使用它附带的 makefile(在手动设置各种标志之后,它在需要的地方有 obj-m/obj-y)并将其编译为内核模块。
但是,我在编译期间不断收到关于重新定义宏、函数的隐式声明等的错误。例如
ext2.h:181:1: warning: "ext2_find_first_zero_bit" redefined
balloc.c:574: error: implicit declaration of function dquot_free_block_nodirty
显然这不是要走的路。我想最坏的情况是再次编译整个内核(使用我修改过的 ext2 代码而不是原始代码),因此它使用我自己的 ext2 创建相关库,并从新映像重新启动。我很难相信这是最好的方法。
甚至可以将新的文件系统作为内核模块插入吗?
我应该把我修改后的 ext2 代码放在 /usr/src 中,并以某种方式只编译包含当前 ext2 代码的相关库吗?
无论如何,如果我能提供任何帮助,我将不胜感激。
谢谢
【问题讨论】:
-
您当前的内核是否使用 ext2 作为模块? ://
-
没有。 lsmod 没有列出任何与 ext2 相关的内容。我确实在 /lib 中有 libext2fs
-
首先:如果它已经编译进入内核,你不能将它作为一个模块加载。第二:你的根文件系统需要一个不同的FS,否则你将无法启动.. 不支持ext2fs :) 第三:我不知道编译问题,你试过google吗?