OpenWrt教程-如何在OpenWrt系统中添加一个Linux内核模块

OpenWrt教程-如何在OpenWrt系统中添加一个Linux内核模块,第1张

linux内核支持动态加载模块,内核模块以.ko为后缀,在Linux系统中,内核模块放在/lib/modulex/x.x.x目录中,其中x.x.x为linux版本号

加载模块

insmod xxx.ko

如果带参数 insmod xxx.ko a=1

卸载模块

rmmod xxx.ko

支持的数据类型

bool :布尔类型

invbool:颠倒了值的bool类型

charp :字符指针类型,内存为用户提供的字符串分配

int:整型

long :长整型

short :短整型

uint :无符号整型

ulong :无符号长整型

ushort :无符号短整型

内核模块源码Makefile编写格式和linux源码的格式一样

在OpenWrt系统中,内核模块编译和应用层的package编译类似

make package/模块名/compile V=s

比如:

make package/hello_kernel/compile V=s

编译完成后会生成.ko文件,目录文件在build_dir中,但和应用层的build目录有点区别,内核模块的package放在linux目录,如(X86平台):

build_dir/target-x86_64_musl/linux-x86_64/

将编译完成的ko文件传输到OpenWrt系统中,注意编译平台和开发板平台的系统架构要一致。

不同发行版和不同版本的Linux略有不同,以CentOS7为例,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块。注意该脚本文件的权限为755。

以uinput模块为例,脚本如下:

#!/bin/sh

if [ ! -c /dev/input/uinput ] then

exec /sbin/modprobe uinput >/dev/null 2>&1

fi

添加扩展的基本步骤:

1、进入PHP源代码目录:# cd /tmp/php-5.2.14/

2、再进入要添加的mysqli扩展源码目录:# cd ext/mysqli/

2、调用已经编译好的php里面的phpize:# /usr/local/php/bin/phpize

3、然后configure:# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/MySQL/bin/mysql_config

(/usr/local/mysql 为mysql的安装目录)

4、make &&make install

5、编译之后,自动把mysqli.so放到了默认的php扩展目录下,我的为 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

(phpinfo可查看或者执行命令/usr/local/php/bin/php-config --extension-dir )

再修改php.ini 找到extension_dir 默认路径为 extension_dir="./" 我修改后才启动加载的

在下面添加extension = "mysqli.so" 保存即可

extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

extension = "mysqli.so"

6、重启apache:# service httpd restart


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6178674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存