Jun
2
四、总结
1、通过上面的步骤可见,若要成功编译IMQ模块,需要进行三个步骤,缺一不可:
引用
a)为核心打入IMQ补丁,并编译成imq网卡模块;
b)编译核心的netfilter模块,为下面iptables的调用做准备;
c)为iptables打IMQ补丁,生成iptables的IMQ模块。
b)编译核心的netfilter模块,为下面iptables的调用做准备;
c)为iptables打IMQ补丁,生成iptables的IMQ模块。
※编译时,请注意保持kernel源码一致,iptables源码也一致。但netfilter的源码和iptables源码一般没有关联,也不必完全和原系统版本相同的。我这里只是考虑到前后兼容而已。
2、为保持原系统的一致性,我建议您把修改后核心源码的库文件同步到发行版相应目录中。
一般发行版有个开发包文件kernel-devel,可参考上面打imq patch时的提示做同步工作:
# cd /usr/src/linux
# cp .config /usr/src/kernels/2.6.9-42.7AX-i686/
# cp drivers/net/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/drivers/net/
# cp -r include/config/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/
# cp -r include/config/ip/nf/target/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/ip/nf/target/
# cp -r include/config/ip6/nf/target/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/ip6/nf/target/
# cp include/linux/{autoconf.h,compile.h,imq.h,skbuff.h} /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/
# cp include/linux/netfilter_ipv4/ipt_IMQ.h /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/netfilter_ipv4/
# cp include/linux/netfilter_ipv6/ip6t_IMQ.h /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/netfilter_ipv6/
# cp net/ipv4/netfilter/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/net/ipv4/netfilter/
# cp net/ipv6/netfilter/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/net/ipv6/netfilter/
# cp Module.symvers /usr/src/kernels/2.6.9-42.7AX-i686/
# cp .config /usr/src/kernels/2.6.9-42.7AX-i686/
# cp drivers/net/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/drivers/net/
# cp -r include/config/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/
# cp -r include/config/ip/nf/target/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/ip/nf/target/
# cp -r include/config/ip6/nf/target/imq /usr/src/kernels/2.6.9-42.7AX-i686/include/config/ip6/nf/target/
# cp include/linux/{autoconf.h,compile.h,imq.h,skbuff.h} /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/
# cp include/linux/netfilter_ipv4/ipt_IMQ.h /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/netfilter_ipv4/
# cp include/linux/netfilter_ipv6/ip6t_IMQ.h /usr/src/kernels/2.6.9-42.7AX-i686/include/linux/netfilter_ipv6/
# cp net/ipv4/netfilter/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/net/ipv4/netfilter/
# cp net/ipv6/netfilter/{Kconfig,Makefile} /usr/src/kernels/2.6.9-42.7AX-i686/net/ipv6/netfilter/
# cp Module.symvers /usr/src/kernels/2.6.9-42.7AX-i686/
目录/usr/src/kernels/2.6.9-42.7AX-i686/请根据您修改的核心版本决定。这是一个可选的步骤,仅为了提高兼容性。
五、附录
参考资料:
How to Install IMQ
终于实现在kernel2.6下为iptables 添加扩展模块
How To Compile A Kernel - The CentOS Way
Linux核心编译与管理