- 论坛徽章:
- 0
|
一、2.6.18下的内核编译(=>2.6.16.1),我的流程:
#cd /usr/src/kernels/linux-2.6.16.1
#make mrproper
#make menuconfig(我一般直接保存)
#make(2.6下这个命令替代了2.4下的多个命令如#make dep #make clean #make zImage 或#make bzImage #make modules )
#make modules_install
#depmod -a
#make install(自动安装,我是个懒人)
为什么在高版本下编译低的呢?是因为机器太新,2.4下缺很多驱动,弄来的安装碟是2.6.18的。主要是用netfilter,结果2.6.18后,模块的格式整个改了,好多之前的补丁都不兼容了。汗~,所以才“升级”啊!!
二、重启后,开始打netfilter补丁,下补丁和iptables源码就跳过了。(主要参考netfilter-extensions-HOWTO-CN.pdf)
#cd /root/software/patch-o-matic-ng-20060706
#KERNEL_DIR=/usr/src/kernels/linux-2.6.16.1 IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme time
#KERNEL_DIR=/usr/src/kernels/linux-2.6.16.1 IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme ipp2p(我就加了两个)
#cd /usr/src/kernels/linux-2.6.16.1
#make menuconfig
(选中TIME和IPP2P,这里一定不要做make mrproper,因为不用完全编译,只用编译模块,不用把之前的配置信息之类的清除掉,我是试了好多次才明白过来的。不过难道要另存配置文件,而我没有?我也不是很清楚了。)
#make M=net/ipv4/netfilter
(只有两个新的模块要编译,所以大概就只出现生ipt_time.ko和ipt_ipp2p.ko的提示)
#cp -f net/ipv4/netfilter/*.ko /lib/modules/2.6.16.1/kernel/net/ipv4/netfilter/
#depmod –a
#cd /usr/src/iptables-1.3.5
#export KERNEL_DIR=/usr/src/kernels/linux-2.6.16.1
#export IPTABLES_DIR=/usr/src/iptables-1.3.5
#make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
好现在就大功告成了!!!(版本的问题详细见netfilter-extensions-HOWTO-CN.pdf)
三、自己写的netfilter模块
我是makefile的新手,就偷了个懒,直接修改了ipp2p-0.8.0的makefile文件。真的省事,但这种方法是不可取了,太不严谨了。
确定libipt_**.c和ipt_**.c文件后就
#make(产生libipt_**.so和ipt_**.ko)
#cp libipt_**.so /lib/iptables
#cp ipt_**.ko /lib/modules/2.6.16.1/kernels/net/ipv4/netfilter
#depmod -a(建立了模块之间的关联,就可以自动加载了,不用使用之前手动insmod了)
这样也就可以了。。。。。
至于实际的功效如何,就要慢慢调了。
我之前犯了一个错误,为了保留前一个版本的ko文件,把它转移到lib下的另一个路径下,ms是/lib/modules/2.6.16.1/kernels/netfilter。结果之后,我把新的在放到/lib/modules/2.6.16.1/kernels/net/ipv4/netfilter下覆盖后,也depmod -a后。无论如何,自动加载都是之前的版本,害我前段时间一直要insmod。还一直找不到原因!!!!!郁闷死了~~~~~~~~~~上个星期终于用modinfo发现在较浅的目录下还有一个之前的版本,自动加载的是这一个,才恍然大悟。。。。。。。。。。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/48851/showart_383829.html |
|