分类: LINUX
2005-12-20 21:49:51
1,修改内核原代码 Makefile
把:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
#EXTRAVERSION = -8custom 这一行注释掉,该成下面那一行
EXTRAVERSION = -8
之所以要修改,是因为内核模块编译过程会给每个模块加上版本信息.
而版本就是由makefile的这四行决定的.
默认安装的内核版本是没有custom的,即内核的完整版本号应该是:
2.4.20-8
如果没有把EXTRAVERSION = -8custom该成
EXTRAVERSION = -8 的话,编译出来的NTFS文件系统模块的版本信息是:
2.4.20-8custom
和原有的内核不匹配,系统不允许将该版本不匹配的内核插入.
虽然可以通过给insmod加上--force参数强行插入运行的内核,但是会引起不必要的麻烦.
严重的时候会恶性死机.
当然,如果你以前已经自给编译过一个新内核,内核有其它的EXTRAVERSION的话,
改成相应的就可以了.
可以通过uname -r 明令查看:
[root@gucuiwen linux-2.4]# uname -r
2.4.20-8
2,生成一个空的.config文件:
# >.config
说明一下:
.config文件是由内核配置程序生成了.(make xconfig,make menuconfig,make config)
但是如果已经存在.config文件的话make xonfig后配置程序就直接在这个文件中读取配置信息.
把这个文件设置为空,意思就事让所有的配置选项都为No
然后,我们通过运行make xconfig (或make menuconfig)来配置对NTFS的支持.
这样就使得配置文件里只有对NTFS支持的选项.
make modules的时候只编译一个模块,速度非常快.只要几秒钟.
3,生成对NTFS模块的支持:
#make xconfig
然后在配置程序中只需要选择两个选项:
一是对可加载模块的支持
在Loadable module support中
Enable loadable module support选择Y
二是对NTFS文件系统的支持.
在file systems 中
NTFS filesyste support选择M
然后保存并退出.
可以看一下这时候.config文件中的内容.这里只有编译内核时必需的选项,其他都是注释.
最后运行
#make modules
屏幕上输出编译信息,只需要短短几秒时间就可以编译完成.
4,将编译好的NTFS内核模块插入系统:
先找到编译好的模块
#ls /usr/src/linux-2.4/fs/ntfs/ntfs.o
拷贝到modules目录下:
#mkdir /lib/modules/2.4.20-8/kernel/fs/ntfs
#cp /usr/src/linux-2.4/fs/ntfs/ntfs.o /lib/modules/2.4.20-8/kernel/fs/ntfs
把NTFS模块插入内核:
#cd /lib/modues/2.4.20-8/kernel/fs/ntfs
#insmod ntfs.o
挂装NTFS文件系统:
#mount /dev/hda1 /mnt/winnt
整个过程就完成了.
看起来比较复杂,但是其实非常简单.整个过程花一分钟左右的时间就可以完成.
这样做的好处是不用重新编译整个内核,省时间,出错的可能性也大大减小.