LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1598|回复: 5

如何单独编译内核的某一个模块呀?

[复制链接]
发表于 2005-11-6 09:53:48 | 显示全部楼层 |阅读模式
我的操作系统是RHAS4,默认时没有把NTFS模块编译进内核,而我又想使用这个模块,但不想把内核整个的编译一遍,同时出于学习的目的,我也不想采用安装RPM包的方法。
     所以想请教大家:如何单独编译内核的某一个模块?之后用insmod命令动态的加载这个模块,从而能让我挂载WINDOWS下的NTFS文件系统。请说的步骤详细些好么?
    谢谢回复!
发表于 2005-11-6 17:15:00 | 显示全部楼层
1. 将fs/ntfs从内核源码中拷贝到一个目录。 修改其中的Makefile, 将“obj-$(CONFIG_NTFS_FS) += ntfs.o”改为"obj-m += ntfs.o“

2. make -C <KDIR> SUBDIRS=$PWD modules (其中<KDIR>是内核源码所在的路径)

3. 将生成的ntfs.ko 拷贝到/lib/modules/`uname -r`/kernel/fs/ntfs下

4. depmod
回复 支持 反对

使用道具 举报

发表于 2005-11-6 17:35:25 | 显示全部楼层
好办法。存档!
回复 支持 反对

使用道具 举报

发表于 2005-11-7 13:50:20 | 显示全部楼层

其实有更简单的办法,

因为2.6内核的编译系统(指Makefile)已经做得很先进了,只需用
$ make fs/ntfs/
但可递归编译 fs/ntfs 目录下所有文件,同样
$ make fs/
则递归编译所有关于文件系统的东东。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-8 08:34:23 | 显示全部楼层
两种方法我都试过了,但是没有ntfs.ko文件只有ntfs.o文件,我把这个赋值到/lib/modules/`uname -r`/kernel/fs/ntfs,载入时说“insmod: error inserting '/lib/modules/2.6.9-5.EL/kernel/fs/ntfs/ntfs.o': -1 Invalid module format”

  这是什么原因?还请大家指点以下!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 13:02:46 | 显示全部楼层
我又试过了,原来 make 子目录方式需写上最后一个/,
如 make fs/ntfs 则不成功,需写为 make fs/ntfs/,在缺省的 make help 里可查到,
但此时还不会生成 ko 文件,
可以如下:

make SUBDIRS=fs/ntfs

于是 fs/ntfs 目录下有了一个 ntfs.ko !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表