QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5499|回复: 10

为你的Linux快速编译所需要的模块(zz)

  [复制链接]
发表于 2003-3-7 21:11:05 | 显示全部楼层 |阅读模式
[code:1] 刘军民 ([email protected])
2001 年 5 月

传统编译内核模块的方法繁琐而费时,本文将告诉我们一种快速编译所需要内核模块的新方法。

当你安装完Linux系统,并且已经启动,恭喜你!如果你的硬盘上还安装了WinNT/2000系统,你试图去访问另一个NTFS分区时却遇到了麻烦。因为你所用的Linux系统没有已编译的支持NTFS文件系统的模块。怎么办?也许你会运行make menuconfig,重新定制你需要的所有模块,接着运行make modeules;make modeules_install来安装。这样不仅繁琐、费时,还可能会出现问题。或者因为编译内核对你有些棘手,太多的选择让你手足无措,你根本没有太好的方法。本文给你提供一个简单的方法,你可以轻松地去编译你所需要的支持NTFS系统的模块(ntfs.o)。以此为例,但愿对你编译其他模块有所帮助。

写此文时我用的系统是Red Hat Linux release 7.0 (Guinness) Kernel 2.2.16-22 on an i686。从一个新安装的系统开始,我们一起去编译一个自己想要的支持NTFS文件系统模块。

一、找到编译内核所需要的.config文件。
在/usr/src/linux/configs目录下有若干编译内核所用的配置。选择我们想要的配置,将它复制到/usr/src/linux目录下,改名为.config。
cp /usr/src/linux/configs/kernel-2.2.16-i686.config /usr/src/linux/.config

二、修改.config文件,去掉不用的模块,加上自己想要的模块。
打开.config,有许多XXXX=m的项,这些都是要被编译为模块的项,因为我们不希望编译这些模块,所以要把XXXX=m的项统统去掉。然后再加上我们想要的模块,将# CONFIG_NTFS_FS is not set 改为CONFIG_NTFS_FS=m 当然,可以用你熟悉各种工具来做这件事。

三、编译NTFS模块。
在/usr/src/linux目录下运行命令make modules来编译我们想要的NTFS模块。

四、安装NTFS模块。
编译后得到的ntfs.o在/usr/src/linux/fs/ntfs目录下,手动将它复制到正确的目录下。
cp /usr/src/linux/fs/ntfs/ntfs.o /lib/modules/2.2.16-22/fs/
注意:千万不能运行命令make modules_install,否则将带来严重的后果,它会删除你系统中的所有模块,只安装刚刚编译的模块(ntfs.o)。

五、载入NTFS模块.
运行命令depmod;modprobe ntfs 试着访问你的NTFS文件系统吧,祝你成功!

有些模块依赖于你的系统内核,所以不适用本文所提供的方法。还有些模块和其他模块有依赖关系。如果你不熟悉这些依赖关系的话,建议你在第二步去掉不用的模块选项后,通过make menuconfig来加上自己想要的模块。

我用此方法用了三分钟编译了支持NTFS文件系统的模块,你呢?

作者简介
刘军民,海辰天泽公司的工程师(www.hisen.com),源码开放运动的追随者,业余时间喜欢用写程序打发时光。您可以通过电子邮件 [email protected]与他联系。
[/code:1]
发表于 2003-3-16 23:40:07 | 显示全部楼层
but if you had fully compiled kernel one time, then some small modification will be very fast. especially for 2.5.x kernel. and if u cpu is powerful, use make -j2 (or higher number) also speed up.
回复

使用道具 举报

发表于 2003-3-19 22:07:14 | 显示全部楼层
以后试试
回复

使用道具 举报

发表于 2003-5-22 09:45:22 | 显示全部楼层
[quote:f9d8da2a3a="Dragonfly"]but if you had fully compiled kernel one time, then some small modification will be very fast. especially for 2.5.x kernel. and if u cpu is powerful, use make -j2 (or higher number) also speed up.[/quote]

-j2 这个参数是合适于一个cpu的,后面数字以参与编译的cpu数量的两倍为宜. 并不是越power的cpu这数字可以设置的越大。
回复

使用道具 举报

发表于 2003-5-22 09:48:37 | 显示全部楼层
还有就是编译一个模块的方法,本文提到的改config可能是最费事的一种方法。
比如你想编译aic7xxx的raid卡驱动模块,最简单的就是
make modules SUBDIRS=drivers/scsi/aic7xxx
回复

使用道具 举报

发表于 2003-5-22 09:53:40 | 显示全部楼层
yes, usually two gcc can saturate one cpu. at least it is true for my p4 1.7
回复

使用道具 举报

发表于 2004-11-3 17:24:51 | 显示全部楼层
[root@localhost linux-2.4.20-8]# make modules
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/split-include scripts/split-include.c
scripts/split-include include/linux/autoconf.h include/config
make -r -f tmp_include_depends all
make[1]: Entering directory `/usr/src/linux-2.4.20-8'
touch: 正在创建目录 ‘/usr/src/build/231485-i386/install/usr/src/linux-2.4.20-8/fs/jfs/jfs_debug.h’: 没有那个文件或目录
make[1]: *** [/usr/src/build/231485-i386/install/usr/src/linux-2.4.20-8/fs/jfs/jfs_debug.h] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.20-8'
make: *** [tmp_include_depends] Error 2

我执行make编译的时候出现以上错误提示,大侠何解?是不是我的系统需要从新安装呀.
回复

使用道具 举报

发表于 2005-1-14 01:12:25 | 显示全部楼层
运行命令depmod;modprobe ntfs

分号这里就按着输入么?还是分号前后2个命令用回车格开?
回复

使用道具 举报

发表于 2005-1-14 11:36:41 | 显示全部楼层
分号就按着输入
回复

使用道具 举报

发表于 2005-1-14 23:20:38 | 显示全部楼层
谢谢
回复

使用道具 举报

发表于 2005-1-27 19:51:20 | 显示全部楼层
时间一长给忘记啦
咳......
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-14 10:13 , Processed in 0.055628 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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