Linux编译安装华为云TOA内核模块
金蝶云社区-云社区用户9oi51234
云社区用户9oi51234
6人赞赏了该文章 1265次浏览 未经作者许可,禁止转载编辑于2018年07月11日 14:18:16

TOA用于华为云网络负载均衡器TCP模式透传客户端IP,本文适用后端系统CentOS/RHEL 7.x、Ubuntu 16.x,参考文档:

https://support.huaweicloud.com/usermanual-elb/zh-cn_topic_0040807238.html


0、文档基于root身份操作,非root用户需要sudo


1、安装编译工具


CentOS 环境下的操作步骤

yum install gcc make kernel-devel-`uname -r` -y


Ubuntu 环境下的操作步骤

apt-get install gcc make linux-headers-`uname -r` -y


2、下载华为TOA源码


安装git

    CentOS 环境下的操作步骤

        yum install git

    Ubuntu 环境下的操作步骤

        apt-get install git-core -y

    验证安装

        git --version


使用git工具,执行如下命令,下载TOA内核模块源码。

git clone https://github.com/Huawei/TCP_option_address.git


如果未安装git工具,请进入以下链接下载TOA模块源代码。(需要解压)

https://github.com/Huawei/TCP_option_address


3、编译TOA模块


执行如下命令,进入源码目录,编译模块。

cd TCP_option_address

cd src

make


编译过程未提示warning或者error,说明编译成功,检查当前目录下是否已经生成toa.ko文件。


4、加载TOA内核模块


执行如下命令,加载内核模块。

insmod toa.ko


执行如下命令,验证模块加载情况,查看内核输出信息。

dmesg | grep TOA


若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。


5、TOA加载持久化

------------------------------------------------------

CentOS环境下的操作步骤

------------------------------------------------------

按下列步骤在“/etc/sysconfig/modules/”目录下建立toa.modules文件。该文件包含了TOA内核模块的加载脚本。


vi /etc/sysconfig/modules/toa.modules


toa.modules文件内容,请参考如下示例:

#!/bin/sh

/sbin/modinfo -F filename /root/toa/toa.ko > /dev/null 2>&1

if [ $? -eq 0 ]; then

/sbin/insmod /root/toa/toa.ko

fi


其中“/root/toa/toa.ko”为TOA内核模块文件的路径,客户需要将其替换为自己编译的TOA内核模块路径。


执行以下命令,为toa.modules启动脚本添加可执行权限。

chmod +x /etc/sysconfig/modules/toa.modules


重启系统,然后测试模块有没有加载

dmesg | grep TOA

若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。


暂时停止加载模块

mv /etc/sysconfig/modules/toa.modules .

恢复加载

mv toa.modules /etc/sysconfig/modules/


------------------------------------------------------

Ubuntu环境下的操作步骤

------------------------------------------------------

编辑/etc/modules,将需要加载的模块卸载里面(不带ko扩展名)

vi /etc/modules

在文件结尾增加

toa


拷贝toa.ko到系统模块目录

cp toa.ko /lib/modules/`uname -r`/kernel/drivers/misc/


运行以下命令检验模块依赖(重要!否则mod不会加载)

depmod `uname -r`


重启系统

然后测试模块有没有加载

dmesg | grep TOA

若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。


暂时停止加载模块

修改/etc/modules文件

vi /etc/modules

将 toa注释掉


6、其他

A、Linux升级内核后,会导致现有TOA内核模块不匹配,因此每次升级内核都需要重新编译、安装TOA内核模块。

B、如果要在其他相同Linux内核的虚机中加载此内核模块,可以直接将本机编译好的toa.ko文件拷贝到需要加载的其他虚拟机中,然后参照加载内核模块内容加载内核模块。






赞 6