- 论坛徽章:
- 0
|
CentOS release 5.4:kernel-2.6.28 + iptables-1.4.3 + layer7-v2.22
Platform: CentOS release 5.4 (Final)
Kernel: 2.6.18-164.el5
Iptables: 1.3.5
一、下载文件
[root@大鬼不动 ~]# cd /usr/src
[root@大鬼不动 src]# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.gz
[root@大鬼不动 src]# wget http://www.netfilter.org/project ... ables-1.4.3.tar.bz2
[root@大鬼不动 src]# wget http://nchc.dl.sourceforge.net/s ... layer7-v2.22.tar.gz
[root@大鬼不动 src]# wget http://nchc.dl.sourceforge.net/s ... s-2009-05-28.tar.gz
[root@大鬼不动 src]# tar jxvf iptables-1.4.3.tar.bz2 && tar zxvf linux-2.6.28.tar.gz && tar zxvf netfilter-layer7-v2.22.tar.gz && tar zxvf l7-protocols-2009-05-28.tar.gz
二、编译过程
[root@大鬼不动 src]# cd l7-protocols-2009-05-28
[root@大鬼不动 l7-protocols-2009-05-28]# make install
[root@大鬼不动 l7-protocols-2009-05-28]# cd ../linux-2.6.28
[root@大鬼不动 linux-2.6.28]# cp /boot/config-2.6.18-164.el5 .config
[root@大鬼不动 linux-2.6.28]# patch -p1 < /usr/src/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
{注:如果之前曾经编译过,需要先执行 make mrproper 。make oldconfig会自动对比之前的kernel config,根据之前版本的配置生成一个kernel config,这样方便我们在编译新核心的时候,无须在从头修改所有的核心设置}
=======================================
[root@大鬼不动]# make clean && make mrproper
[root@大鬼不动]# cp /boot/config-`uname -r` ./.config
[root@大鬼不动]# make oldconfig
=======================================
[root@大鬼不动 linux-2.6.28]# make menuconfig
Load an Alternate Configuration File-->载入刚才复制过来的.config
make menuconfig-->Networking support-->Networking options-->Network packet filtering framework (Netfilter)
把layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块
Exit --> 保存.config文件
{注:内核配置有两种方法,一种是直接置入内核* ;另一种是编成模块M ;两种方法各有优点;直接编入内核的,
比如设备的启动,不再需要加载模块的这一过程了;而编译成模块,则需要加载设备的内核支持的模块;但直接把
所有的东西都编入内核也不是可行的,内核体积会变大,系统负载也会过重。我们编内核时最好把极为重要的编入
内核;其它的如果您不明白的,最好用默认。
如果不勾选“Netfilter connection tracking support”,那么“”layer7” match support”将不会在这里显示出来,
务必将“Netfilter connection tracking support”打上对勾。}
[root@大鬼不动 linux-2.6.28]# make && make modules_install && make install
[root@大鬼不动 linux-2.6.28]# vi /boot/grub/grub.conf ;设置Kernel 2.6.28 默认启动
[root@大鬼不动 linux-2.6.28]# reboot
=========================================
编译了新的内核2.6.28后总是在启动的时候报错--[编译Kernel2.6.28以上30.4...都报错]
insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists
重复加载了/lib/dm-region-hash.ko
http://linux.chinaunix.net/bbs/v ... 3&page=1#pid6959942
可以解决的,步骤如下
1,解压initrd文件
[root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp
[root@bogon ~]# cd /tmp/
[root@bogon tmp]# ls
initrd-2.6.30.4.img
[root@bogon tmp]# mkdir newinitrd
[root@bogon tmp]# cd newinitrd/
[root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i
11537 blocks
释放之后看到如下内容
[root@bogon newinitrd]# ls
bin dev etc init lib proc sbin sys sysroot
2,ok,下边就是编辑init,删掉其中重复的四行中的两行
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
3,重新打包initrd
[root@bogon newinitrd]# find .|cpio -c -o > ../initrd
11538 blocks
[root@bogon newinitrd]# cd ..
[root@bogon tmp]# gzip -9 < initrd > initrd.img
[root@bogon tmp]# ls
initrd-2.6.30.4.img initrd initrd.img newinitrd
好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.img为initrd.img就可以了,
这样“insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists” 就不会有了
其实将init文件的第二行“setquiet” 去掉,你就知道initrd文件到底在做什么了
=========================================
[root@大鬼不动 ~]# cd /usr/src/iptables-1.4.3
[root@大鬼不动 iptables-1.4.3]# cp ../netfilter-layer7-v2.22/iptables-1.4.3-for-kernel-2.6.20forward/* extensions/
[root@大鬼不动 iptables-1.4.3]# ./configure --with-ksource=/usr/src/linux-2.6.28 && make && make install && reboot
三、测试自己选中的模块
略...
四、RHEL5.4同理
大鬼不动
461309026@qq.com
2009.12.08
[ 本帖最后由 大鬼不动 于 2009-12-8 09:35 编辑 ] |
评分
-
查看全部评分
|