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

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

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


相关文章
|
3月前
|
安全 网络协议 Linux
深入理解Linux内核模块:加载机制、参数传递与实战开发
本文深入解析了Linux内核模块的加载机制、参数传递方式及实战开发技巧。内容涵盖模块基础概念、加载与卸载流程、生命周期管理、参数配置方法,并通过“Hello World”模块和字符设备驱动实例,带领读者逐步掌握模块开发技能。同时,介绍了调试手段、常见问题排查、开发规范及高级特性,如内核线程、模块间通信与性能优化策略。适合希望深入理解Linux内核机制、提升系统编程能力的技术人员阅读与实践。
425 1
|
3月前
|
Ubuntu Linux
Ubuntu 23.04 用上 Linux 6.2 内核,预计下放到 22.04 LTS 版本
Linux 6.2 带来了多项内容更新,修复了 AMD 锐龙处理器设备在启用 fTPM 后的运行卡顿问题,还增强了文件系统。
|
3月前
|
Ubuntu Linux
Ubuntu 23.10 现在由Linux内核6.3提供支持
如果你想在你的个人电脑上测试一下Ubuntu 23.10的最新开发快照,你可以从官方下载服务器下载最新的每日构建ISO。然而,请记住,这是一个预发布版本,所以不要在生产机器上使用或安装它。
|
3月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1575 10
|
3月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
305 0
|
3月前
|
Web App开发 缓存 Rust
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 发行版更新 Linux 内核,修复 17 个安全漏洞
本地攻击者可以利用上述漏洞,攻击 Ubuntu 22.10、Ubuntu 22.04、Ubuntu 20.04 LTS 发行版,导致拒绝服务(系统崩溃)或执行任意代码。
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
423 1
二、Linux文本处理与文件操作核心命令