piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:11508回复:28

关于Linux文件系统和过滤器驱动程序

楼主#
更多 发布于:2001-12-20 03:28
本人曾写过一个贴子是关于分层驱动程序的,但没有回音。经过我查找一些相关资料发现在Linux下是可以实现类似于NT下的过滤器驱动程序的。方法是Stackable File System,即通过编写一个文件系统驱动程序来截获系统和硬件设备之间的通讯。在Linux中,系统把硬件设备也看做是文件,即Device File,所以可以通过文件系统来截获信息。我已经实现了一个小例子,确实可以做到。希望有兴趣的朋友可以加入讨论。

最新喜欢:

LeopardLeopar...
hanhonggen
驱动牛犊
驱动牛犊
  • 注册日期2010-11-08
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-11-10 16:01
老大,关于block level的拦截,能在说的详细点吗?
hanhonggen@126.com
cherring
驱动牛犊
驱动牛犊
  • 注册日期2005-08-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望89点
  • 贡献值0点
  • 好评度38点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-24 15:34
过滤点可以是, queue->mk_rq_fn,有做LINUX磁盘过滤驱动的朋友请联系,谢谢
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-02-26 15:33
老大,你可知道我在苦苦守候,只要一个几句话,我就可以解决问题,你为什么还不出现啊
 
原来,人生不过是一场梦!
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-02-25 09:39
老大啊,小弟是望眼欲穿啊
原来,人生不过是一场梦!
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-02-22 15:22
piggy老大,等你出现救命啊
原来,人生不过是一场梦!
sinister
驱动牛犊
驱动牛犊
  • 注册日期2005-03-02
  • 最后登录2013-01-24
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望38点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分1分
6楼#
发布于:2008-02-20 23:44
上面的帖子中不是提到了么?block_read()->ll_rw_block()。跟踪下这个函数就知道了
submit_bh(),generic_make_request() 这两个函授都可以判断出 R/W,也都可以做些
手脚,不过具体的看要做什么了,不同目的,修改的地方也不同。做这个级别的操作
最好先了解些基本概念,如 buffer_head 也就是长说的 bh 与 Page Cache 等。
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-02-18 17:50
我的邮件是flybird525#gmail.com
原来,人生不过是一场梦!
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-02-18 17:26
请问楼主可以给一个电子邮件的联系方式吗?谢谢
我想知道你们在block level上的拦截的基本原理是什么?我有很多问题要请教,谢谢!
原来,人生不过是一场梦!
smile525
驱动牛犊
驱动牛犊
  • 注册日期2005-10-27
  • 最后登录2011-12-15
  • 粉丝1
  • 关注0
  • 积分112分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-02-18 17:16
ding
原来,人生不过是一场梦!
netfun2000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-18
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-02-03 10:55
谢谢您的回复,我先看看源程序,如有不懂的地方,还请指教。
谢谢。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-02-01 12:31
楼上,不好意思,没做过LINUX下这种东西,我都是用串口。不能帮助你了。
peirose
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2005-03-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-02-01 11:03
楼上高手..能回答一下这个问题么..谢谢
[url] http://www.driverdevelop.com/forum/viewthread.php?tid=86159[/url]
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-02-01 10:19
兄弟,这么老的贴子都翻出来了。你给我发的邮件我也收到了。你是想实现哪个级别的保护,FILE LEVEL还是BLOCK LEVEL?如果是FILE LEVEL可以参考Stackable File System。如果是BLOCK LEVEL可以参考LINUX下的LOOP BACK DEVICE。你可以在LINUX的安装光盘上找到LOOP DEVICE的源代码,LOOP.C和LOOP.H。我已经实现了在LINUX和SOLARIS上的BLOCK LEVEL的保护,都是基于LOOP DEVICE的构想。希望对你有帮助,还有问题的话可以继续发贴或MAIL联系。
netfun2000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-18
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-01-31 09:15
你们做成功了吗?
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2001-12-24 22:55
在Linux下读写磁盘是不是都是通过ll_rw_block()这个Kernel API做的?能否拦截这个API呢?我现在是不知道如何在硬盘驱动程序和硬盘之间插入我的代码。即如何截获有关Block缓冲区的内容。

如果看Linux的源代码,应该具体看哪一部分呢? 关于BLOCK DEVICE的部分,那要看很多代码呀。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2001-12-24 22:47
如果能做成,我想我加载驱动的方法应该是简单的用insmod就可以加载。我不想给Kernel打任何的patch,那样的话对用户太不方便了。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2001-12-24 20:35
不知道你要做的驱动,加载的方法是什么呢?修改配置文件?还是把重新编译系统,修改配置文件的方法不安全,而如果是重新编译系统的话,那实在是太麻烦了!当时也是因为这些原因才没有继续做下去,
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2001-12-24 20:14
当时我做这个的时候拦截的请求很多,即使是在系统很稳定的时候,就是没有听见硬盘灯亮,没有读写硬盘的声音,也有请求到来
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2001-12-24 20:12
当时做LINUX下的拦截的时候,拦BLOCK实在是不行了, 就想着简单的拦KM的调用,那是偷懒的方法,并且也很不安全!我觉得做保护的,最好还是做在BLOCK上!
上一页
游客

返回顶部