当前位置: 技术问答>linux和unix
linux文件系统的驱动问题
来源: 互联网 发布时间:2016-08-08
本文导语: 我想修改linux某个具体的文件系统的file_operations中的某个操作 在该操作中添加一些自己的代码 通过linux kernel module来实现 但是不知道具体改怎么做 请高手可怜可怜我 指点一下 或者给点相关资料也行哈 | ...
我想修改linux某个具体的文件系统的file_operations中的某个操作 在该操作中添加一些自己的代码
通过linux kernel module来实现
但是不知道具体改怎么做
请高手可怜可怜我 指点一下 或者给点相关资料也行哈
通过linux kernel module来实现
但是不知道具体改怎么做
请高手可怜可怜我 指点一下 或者给点相关资料也行哈
|
不知道LZ想怎么做,是把文件系统编绎成模块,修改文件系统源码。还是想在让文件系统调用自己编写的模块。
第一种做法是在构建内核时不选择某个文件系统(注意/root不能是这个文件系统类型)。然后在内核里找到这个文件系统的源码,然后执行make -C /your/kernel/source M=`pwd`就可以了。然后insmod.
第二种做法是在文件系统里加回调,然后重新编译内核。你自己的模块,注册这个回调。
总之,想要做到这一点都得重新编译内核。第二种做法的兼容性稍微好一些。
LZ可以把最终想要实现的东东,说一下,说不定各位高手们还有更好的方案
第一种做法是在构建内核时不选择某个文件系统(注意/root不能是这个文件系统类型)。然后在内核里找到这个文件系统的源码,然后执行make -C /your/kernel/source M=`pwd`就可以了。然后insmod.
第二种做法是在文件系统里加回调,然后重新编译内核。你自己的模块,注册这个回调。
总之,想要做到这一点都得重新编译内核。第二种做法的兼容性稍微好一些。
LZ可以把最终想要实现的东东,说一下,说不定各位高手们还有更好的方案
|
哦。太高深了,帮顶。
|
参考:LDD, ULK, LKD.
|
这个,如果这个文件系统已经编译进内核,那基本上是没希望了,如果没编译进内核,而是编译成模块的话,直接修改这个模块的源代码,然后重新编译即可。
|
已经编译到内核中的文件系统,它的相关的函数都已经编译成二进制代码到vmlinuz中了,你怎么改接口函数啊?
除非你会修改vmlinuz文件。
|
那就先在想劫持的位置做个回调函数。在模块里实现这个回调函数。不改文件系统源码的方式暂时没想到怎么实现
|
如果是单文件系统的话,是不能编译成模块的,否则系统起不来(系统起来的时候,要加载模块,而模块又要到文件系统里去找。。。。。。)
|
不行,文件系统已经编译到内核中了,除非文件系统中已经预留回调函数给你使用,否则你是没法实现的。
|
中午去银行存钱,排队时后面的美女问我:“存钱是吧”?我答:是的。“我正好取钱,反正你也要存,不如直接把钱给我了。”
我一想觉得挺有道理的,便把钱给了她。
回来时一直觉得不对劲,可怎么想也想不出哪里不对劲……
我一想觉得挺有道理的,便把钱给了她。
回来时一直觉得不对劲,可怎么想也想不出哪里不对劲……
|
他把钱划你帐户了吗?
|
哎呀 原来这就是不对劲的地方呀
她没把钱划到我账户!
|
碰上狐狸精了
|
niu
|
楼主的文件系统问题太复杂了,楼层中的笑话让我不再郁闷。