2.6内核下:
这里只说内核自带的模块编译,厂商提供的模块编译比较容易,直接在make即可。
首先需要原版内核的源码包,如果非发行版的就直接用kernel.org上的标准内核可以了。
发行版以redhat为例,就要src.rpm获取源码
1。在ftp.redhat.com下载对应kernel的,我的是rhel5则对应的,kernel-2.6.18-8.1.8.el5.src.rpm
2。rpm -ivh kernel-2.6.18-8.1.8.el5.src.rpm
3。cd /usr/src/redhat/SPECS && rpmbuild -target i686 -bp kernel-2.6.spec
这样就有了source code了,位置在/usr/src/redhat/BUILD下。(target前两条-)
4。cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686开始操作
注,如果是标准的内核不需要以上4步,直接到内核的src目录下
5。
make mrproper #删除所有配置文件
make menuconfig #生成.config文件,将需要编译的模块选上
make net/ipv4/netfilter #假设我需要编译netfilter的所有模块,先make到up to date
make M=net/ipv4/netfilter #M相当于SUBDIRS,开始编译模块
完成,将需要的.ko文件拷贝到/lib/modules/下对应的目录下,记得打depmod -a重新生成依赖关系树,然后modprobe安装模块
2.4 内核下:
make mrproper
make menuconfig
make dep #建立模块依赖关系
make modules SUBDIRS=drivers/net/
完成,之后将.o文件取出即可