重编译LINUX内核调整SCTP参数的方法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


   

1.  背景:

        sctp协议不匹配引发的内核编译。

 

 

SIGTRANS在于华为HSTP进行联调时发现,华为的HSTP的SCTP层中INIT消息不认识我们的SCTP层中的INIT消息中的ECN\Forward TSN\ADAPTATION参数。

 

 

LINUX\SCTP相关资料,才发现LINUX内核2.6.18版本的SCTPINIT强制性添置ECN、ADAPTATION参赛,Forwrd TSN参数可以通过/proc/sys/net/sctp进行开关配置(0携带1不携带)。INIT_ACK消息则强制携带ECN、ADAPTATION参数。在找到这个结果之前经历了很多的误区,如修改LKSCTP、OPENSS7等。这些都是徒劳。

 

 

LINUX内核2.6.18内核问题后,就修改从​​ftp://ftp.kernel.org/pub/linux/kernel/下载的2.6.18内核代码。修改sm_make_chunk.c​​中的sctp_make_init函数,修改sctp_make_init_ack函数,将多于的参数去掉,然后将代码上传到服务器上,进行内核编译。

 

2.  内核编译步骤:

2.6内核,对于2,4内核还请找寻求搜索引擎的帮助。

 

       1:准备工作

/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/home/kernel/linux-2.6.18/include(待内核文件路径)目录下的对应目录中.

        # cd /usr/include
         #rm -rf asm linux scsi     //在删除之前我已经做过备份
       # ln -s/home/kernel/linux-2.6.18/arch/x86/include/asm asm //若编译的为在ARM下运行的内核,此处 

           应为ln - s /home/kernel/linux-2.6.18/arch/arm/include/asm asm
             #ln -s /home/kernel/linux-2.6.18/include/linux linux 
             # ln -s /home/kernel/linux-2.6.18/include/scsiscsi

        注: /usr/include/asm应该正确链接到相应的位置,有可能asm-generic也要链接,或者运行make menuconfig出错时再弄,方法是找到出错的文件,copy至/usr/include/asm-generic下。

 

2:内核编译步骤

 

    2.1make menuconfig

    2.2make

    2.3make modules_install

   2.4make install

 

3.直接reboot即可享受新的内核

 

3.  出错及解决方法

1:刚一make就出错

 

  解决方法:/usr/include/asm   /usr/include/linux /usr/include/generic目录配置不正确

 

2:make到最后出错

  诸如下面的信息:make[3]: *** 没有规则可以创建“net/ipv4/netfilter/ipt_tos.o”需要的目标“net/ipv4/netfilter/ipt_tos.c”。停止。

make[2]: *** [net/ipv4/netfilter] 错误 2

make[1]: *** [net/ipv4] 错误 2

make: *** [net] 错误 2

...............

make[3]: *** 没有规则可以创建“net/ipv4/netfilter/ipt_tos.o”需要的目标“net/ipv4/netfilter/ipt_tos.c”。停止。

make[2]: *** [net/ipv4/netfilter] 错误 2

make[1]: *** [net/ipv4] 错误 2

make: *** [net] 错误 2

 

解决方法:当在windows下解压缩时,微软的系统大小写不敏感。解压时这两个文件有一个被覆盖,导致编译出错。在linux下解压缩,将提示出错的文件的.c .h文件从linux下解压缩的文件找到,复制到待编译的内核特定的路径下即可。如下:

[root@dialogicsctp3 ~]# cp/home/kernel/linux-2.6.18/net/ipv4/netfilter/ipt_tos.c/usr/src/linux/net/ipv4/netfilter/ipt_tos.c

[root@dialogicsctp3 ~]# cp/home/kernel/linux-2.6.18/include/linux/netfilter_ipv4/ipt_tos.h /usr/src/linux/include/linux/netfilter_ipv4/ipt_tos.h

 

   

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux