[发明专利]内核模块编译方法、装置、计算机设备和存储介质在审
申请号: | 202111283120.3 | 申请日: | 2021-11-01 |
公开(公告)号: | CN114003235A | 公开(公告)日: | 2022-02-01 |
发明(设计)人: | 邱旭;杜青松;姚宏亮;张耀斌;鄢来标 | 申请(专利权)人: | 北京技德系统技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/71 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 北京市通州区国家网*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内核 模块 编译 方法 装置 计算机 设备 存储 介质 | ||
本发明公开了一种内核模块编译方法、装置、计算机设备和存储介质,根据不同版本的内核对待编译加载的内核模块源码进行适配;判断在指定路径上是否存在已编译的内核模块;若存在,则比对已编译的内核模块与内核是否匹配:如果匹配则加载已编译的内核模块,如果不匹配则将加密的内核模块源码解密并复制到指定的隐藏目录下;若不存在,则将加密的内核模块源码解密并复制到指定的隐藏目录下;在内核上编译解密后的内核模块源码;加载编译后的内核模块。实现了内核模块在不同版本的内核间能够正常编译和运行。
技术领域
本发明涉及计算机操作系统领域,尤其涉及一种内核模块编译方法、装置、计算机设备和存储介质。
背景技术
在Linux操作系统兼容Android环境的场景中,存在内核模块在不同内核版本上编译的需求。在Linux兼容Android环境,Android系统在运行时,需要事先加载部分内核模块,例如:ashmem和binder。不同版本的Android系统的内核模块,依赖于不同版本的Linux内核,例如:Android 7.0依赖的Linux内核版本为4.4.1,Android 8.0依赖的Linux内核版本为4.10。Android系统的版本是固定的,所以Android系统需要的内核模块也是依赖某一个固定版本的Linux内核的。由于Android系统运行于Linux系统上,但是各个Linux系统的Linux内核不是固定的,这就导致Android系统所需要的内核模块,需要在不同版本的Linux内核上编译和运行。因此需要解决内核模块在不同内核版本上编译加载的问题。
发明内容
为了解决内核模块在不同内核版本上编译加载的问题,本发明提供了一种内核模块编译方法、装置、计算机设备和存储介质。
第一方面,本发明提供一种内核模块编译方法,所述方法为:
根据不同版本的内核对待编译加载的内核模块源码进行适配;
判断在指定路径上是否存在已编译的内核模块;若存在,则比对已编译的内核模块与内核是否匹配:如果匹配则加载已编译的内核模块,如果不匹配则将加密的内核模块源码解密并复制到指定的隐藏目录下;若不存在,则将加密的内核模块源码解密并复制到指定的隐藏目录下;在内核上编译解密后的内核模块源码;加载编译后的内核模块。
进一步地,所述方法中根据不同版本的内核对待编译加载的内核模块源码进行适配,包括:
根据Linux内核版本号对待引用的内核头文件进行适配;
根据Linux内核版本号对待调用的内核API进行适配;
根据Linux内核版本号对内核符号表进行适配。
进一步地,所述方法还包括:
在内核上编译解密后的内核模块源码之后,
将编译后的内核模块复制到指定路径下,并删除解密后的内核模块源码。
进一步地,所述方法中根据Linux内核版本号对待引用的内核头文件进行适配,具体为:
在待编译加载的内核模块源码中,通过判断LINUX_VERSION_CODE的宏定义来适配不同版本的linux内核,根据linux内核版本号引用不同路径的内核头文件。
进一步地,所述方法中根据Linux内核版本号对待调用的内核API进行适配,具体为:
在待编译加载的内核模块源码中,根据Linux内核版本号对传递到API的函数参数进行设置:对函数参数的类型、个数进行设置。
进一步地,所述方法中根据Linux内核版本号对内核符号表进行适配,具体为:
对拟使用的内核API进行导出,获取拟使用的内核API的地址,以便待编译加载的内核模块源码调用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京技德系统技术有限公司,未经北京技德系统技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111283120.3/2.html,转载请声明来源钻瓜专利网。