CN112860267A - 一种内核裁剪方法及计算设备 - Google Patents
一种内核裁剪方法及计算设备 Download PDFInfo
- Publication number
- CN112860267A CN112860267A CN202110440438.1A CN202110440438A CN112860267A CN 112860267 A CN112860267 A CN 112860267A CN 202110440438 A CN202110440438 A CN 202110440438A CN 112860267 A CN112860267 A CN 112860267A
- Authority
- CN
- China
- Prior art keywords
- kernel
- modules
- target
- module
- operating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种内核裁剪方法,在操作系统中执行,包括步骤:生成包括多个第一内核模块的第一内核;对所述多个第一内核模块对应的内核函数进行测试,确定每个内核函数是否被调用,并根据被调用的一个或多个内核函数来确定被当前操作系统使用的一个或多个目标内核模块;以及基于所述一个或多个目标内核模块编译生成目标内核。本发明还公开了相应的计算设备。根据本发明的内核裁剪方法,可以在较短的时间内更有效地精简操作系统的内核模块数量。
Description
技术领域
本发明涉及虚拟机定制技术领域,特别涉及一种内核裁剪方法及计算设备。
背景技术
目前,国产平台虚拟化在各个行业已经得到充分的发展,并且正在广泛的使用。由于行业的差别和各自的应用场景不同,对虚拟化节点系统的定制已经成为必不可少的技术步骤。由于国产平台下的内核软件数以万计,如何快速、准确的选择行业所需要的模块成为国产平台版本发行的一项重要工作。
现有技术中,对内核进行定制裁剪的常用方法是在内核代码下首先运行配置命令,生成配置文件,再进行内核构建。具体方法如下:首先获取内核源码,例如通过Git命令从kernel.org或者github.com上下载香草内核源码,或者使用各发行版的软件包管理命令下载相应的内核源码;其次,进入内核源码目录下,运行make menuconfig(或者类似的makenconfig、make xconfig等)命令,通过文本界面对内核编译配置参数进行设置,生成整体内核编译需要的配置文件;最后,运行make命令,即递归进入各个目录执行Makefile里面的构建命令,进行内核构建。
上述内核裁剪方案存在一些问题,一方面,上述裁剪方案一般需通过人工选择完成,不能结合现有的系统环境和常用的系统模块来实现,对内核定制裁剪人员的要求过高,人工选择时需要频繁试验,一般需经过多轮的人工审核和反复的测试才能定稿,导致内核裁剪的效率十分低下,并且难以达到最优的结果。另一方面,由于在原系统中,有一部分内核模块使用了y方式静态编译进了内核,随着内核一起载入和运行,这一部分内核模块是无法通过Lsmod列出的,即使是Lsmod列出的模块,也不一定是正在被使用的模块,而可能是随着系统的默认配置在系统启动的过程中被强行加载的。因此,通过上述裁剪方案得到的内核会有不少模块是不需要使用但是被加入了裁剪后的内核,裁剪不够彻底,仍然有可裁剪的余地。
为此,需要一种内核裁剪方法,以解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种内核裁剪方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种内核裁剪方法,在操作系统中执行,包括步骤:生成包括多个第一内核模块的第一内核;对所述多个第一内核模块对应的内核函数进行测试,确定每个内核函数是否被调用,并根据被调用的一个或多个内核函数来确定被当前操作系统使用的一个或多个目标内核模块;以及基于所述一个或多个目标内核模块编译生成目标内核。
可选地,在根据本发明的内核裁剪方法中,对多个第一内核模块对应的内核函数进行测试的步骤包括:启动内核的追踪器,基于所述追踪器对内核函数进行跟踪,以便确定每个内核函数是否被调用。
可选地,在根据本发明的内核裁剪方法中,确定被当前操作系统使用的一个或多个目标内核模块的步骤包括:获取内核模块与内核函数的映射表;根据所述映射表确定与每个被调用的内核函数分别相对应的第一内核模块,并将所述第一内核模块确定为目标内核模块。
可选地,在根据本发明的内核裁剪方法中,生成包括多个第一内核模块的第一内核的步骤包括:获取当前操作系统使用的多个内核模块,将被使用的每个内核模块确定为第一内核模块;基于多个第一内核模块分别对应的内核配置项,生成第一内核配置文件;基于所述第一内核配置文件进行内核编译,以生成包括多个所述第一内核模块的第一内核。
可选地,在根据本发明的内核裁剪方法中,在基于多个第一内核模块分别对应的内核配置项生成第一内核配置文件之前,包括步骤:利用make localmodconfig方法,基于多个第一内核模块自动选择与每个第一内核模块分别相对应的内核配置项。
可选地,在根据本发明的内核裁剪方法中,编译生成目标内核包括:基于多个目标内核模块分别对应的内核配置项,生成目标内核配置文件;基于所述目标内核配置文件进行内核编译,以生成包括一个或多个所述目标内核模块的目标内核。
可选地,在根据本发明的内核裁剪方法中,还包括步骤:获取内核模块列表;分别获取内核模块列表中的每个内核模块对应的路径,并根据路径获取相应的内核模块文件;根据内核模块文件获取每个内核模块对应的内核函数;根据每个内核模块和相应的内核函数,创建内核模块与内核函数的映射表。
可选地,在根据本发明的内核裁剪方法中,在编译生成目标内核之后,还包括步骤:将所述目标内核载入虚拟机,以便检测目标内核是否能在虚拟机内稳定运行。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的内核裁剪方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种内核裁剪方法,首先基于当前操作系统使用的内核模块来编译生成第一内核,实现对内核的初步裁剪。进而,在初步裁剪后的第一内核基础上,通过自动化测试进一步筛选、确定当前操作系统确实需求的目标内核模块,并基于进一步确定的目标内核模块编译生成最终的目标内核,从而完成对内核的裁剪。这样,本发明综合对内核进行两步裁剪,可以在较短的时间内更有效地精简操作系统的内核模块数量,从而尽可能降低系统的启动时间。
进一步地,本发明采用make localmodconfig方法进行内核编译,可以自动选择内核配置项,避免了人工选择的繁琐过程,有利于提高内核裁剪的效率。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;以及
图2示出了根据本发明一个实施例的内核裁剪方法200的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是示例计算设备100的示意框图。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然, 计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、数码照相机、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和WEB服务器等。本发明的实施例对此均不做限制。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的内核裁剪方法200。其中,计算设备100的操作系统中包含执行根据本发明的内核裁剪方法200的多条程序指令,使得本发明的内核裁剪方法200可以在计算设备的操作系统中执行。
图2示出了根据本发明一个实施例的内核裁剪方法200的流程图。方法200适于在计算设备(例如前述计算设备100)的操作系统中执行。应当指出,在本发明的具体实施例中,仅以Linux操作系统为例来对本发明的内核裁剪方法进行详细说明,但本发明的内核裁剪方案并不限于Linux操作系统。
如图2所示,方法200始于步骤S210。
在步骤S210中,编译生成包括多个第一内核模块的第一内核。
应当指出,编译生成第一内核实现了对原始内核的初步裁剪。这里的多个第一内核模块是在对原始内核的初步裁剪过程中确定的内核需求模块,也即是初步确定的被当前操作系统的内核使用的内核模块。通过对原始内核裁剪,重新构建生成的第一内核,在确保能够在目标系统平台正常运行的基础上,极大地减少了原始内核中的不必要的内核模块数量。
根据本发明的内核裁剪方法200,在通过执行步骤S210对原始内核进行初步裁剪后,还继续执行以下步骤S220~S230,以对初步裁剪后的第一内核进行进一步裁剪。
在步骤S220中,对多个第一内核模块对应的内核函数进行测试,确定每个内核函数是否被当前操作系统调用,根据被调用的一个或多个内核函数来确定被当前操作系统使用的一个或多个目标内核模块。这里,一个或多个目标内核模块即是进一步筛选出的操作系统确实需求的内核模块。
根据一个实施例,通过对多个第一内核模块对应的内核函数进行自动化测试,能够确定每个内核函数是否被当前操作系统调用,并获取被调用的一个或多个内核函数。在一种实施方式中,在对多个第一内核模块对应的内核函数进行自动化测试时,是通过启动内核的追踪器ftrace,基于追踪器ftrace的自动跟踪方法对内核函数进行跟踪,检测内核函数的调用情况,确定每个内核函数是否被调用,这样,便实现了对多个第一内核模块对应的内核函数进行自动化测试,得到每个内核函数是否被调用的测试结果。根据测试结果能确定并获取被调用的一个或多个内核函数。
在确定被调用的一个或多个内核函数后,可以确定并获取与一个或多个被调用的内核函数相对应的一个或多个目标内核模块。这里,通过获取内核模块与内核函数的映射表,基于被调用的内核函数名称可以在映射表中定位到相应的被使用的第一内核模块,即是目标内核模块。换言之,根据映射表可以确定与每个被调用的内核函数分别相对应的内核模块(第一内核模块),这些第一内核模块会被确定为目标内核模块。
最后,在步骤S230中,基于一个或多个目标内核模块编译生成目标内核。这样,也就实现了对第一内核的进一步裁剪。
应当理解,最终编译生成的目标内核中的内核模块是在初步裁剪后的第一内核基础上,通过自动化测试进一步筛选、确定的当前系统确实需求的内核模块。这样,本发明综合对内核进行两步裁剪,可以在较短的时间内更有效地精简Linux操作系统的内核模块数量,从而尽可能降低系统的启动时间。
根据一个实施例,在执行步骤S210之前,预先获取原始内核文件。在步骤S210中,可以基于make localmodconfig方法来编译生成第一内核,以实现对原始内核的初步裁剪,其中具体方法可以实现为:
首先,通过Lsmod命令获取当前操作系统的内核使用的内核模块列表,内核模块列表中包括被使用的多个内核模块,以便从内核模块列表中获取被使用的多个内核模块,也即是初步确定的内核需求模块。将这些被使用的每个内核模块确定为第一内核模块。这里,初步筛选确定的多个第一内核模块中,有可能包括在系统启动过程中强行加载的内核模块。
进而,利用make localmodconfig方法,可以基于多个第一内核模块,自动选择与每个第一内核模块分别相对应的内核配置项。随后,基于自动选择的与多个第一内核模块分别相对应的内核配置项(内核参数编译选项),来生成第一内核配置文件。这里,内核配置文件即是内核编译需要的配置文件,包括内核编译需要的配置参数。这里的第一内核配置文件也即是编译生成第一内核所需的配置文件,包括编译生成第一内核需要的多个第一内核模块的配置参数。
最后,基于第一内核配置文件进行内核编译,以生成包括多个第一内核模块的第一内核。这样,便完成了对原始内核的初步裁剪。
根据一个实施例,在步骤S230中同样可以基于make localmodconfig方法来编译生成目标内核,以实现对第一内核的进一步裁剪,其中具体方法可以实现为:
在通过自动化测试确定一个或多个目标内核模块之后,首先,利用makelocalmodconfig方法,可以基于确定的一个或多个目标内核模块,自动选择与每个目标内核模块分别相对应的内核配置项,随后,基于自动选择的与多个目标内核模块分别相对应的内核配置项(内核参数编译选项),来生成目标内核配置文件。这里,目标内核配置文件即是编译生成目标内核所需的配置文件,包括编译生成目标内核需要的一个或多个目标内核模块的配置参数。
随后,基于目标内核配置文件进行内核编译,以生成包括一个或多个目标内核模块的目标内核。
需要说明的是,本发明采用make localmodconfig方法进行内核编译,可以自动选择内核配置项,避免了人工选择的繁琐过程,有利于提高内核裁剪的效率。
另外,根据本发明的一个实施例,在编译生成目标内核之后,可以将目标内核载入虚拟机,以便检测目标内核是否能在虚拟机内稳定运行。
根据一个实施例,在获取原始内核文件后,在执行步骤S210之前,还创建内核模块与内核函数的映射表。这样,在步骤S220中,可以通过获取内核模块与内核函数的映射表,根据映射表来确定与每个被使用的内核函数分别相对应的第一内核模块,从而确定一个或多个目标内核模块。
具体地,在创建内核模块与内核函数的映射表时,首先通过Lsmod命令获取当前内核使用的内核模块列表,内核模块列表中包括被使用的多个内核模块,也即是第一内核模块。
随后,分别获取内核模块列表中的每个内核模块(第一内核模块)对应的路径,并根据路径获取相应的内核模块文件。根据每个内核模块文件,并通过执行nm命令来获取每个内核模块(第一内核模块)对应的内核函数,并将获取到的每个内核函数写入/sys/kernel/debug/tracing/trace目录文件。
进而,根据每个内核模块和相应的内核函数,创建内核模块与内核函数的映射表,实际上也即是第一内核模块与内核函数的映射表。随后,将映射表写入kernel-func.map文件。
根据一种实施方式,步骤S220中对多个第一内核模块进行自动化测试的程序可以实现为下述伪代码:
{
Auto Test run Program
...
P --map /tmp/module-func.map
P --trace /tmp/module-func.map ~/hitmodules.lst
}
这里,P为实施例程序,在经过一次自动化测试之后,会生成hitmodules.lst文件。
进一步地,在运行命令P --trace /tmp/module-func.map ~/hitmodules.lst之后,从/sys/kernel/debug/tracing/trace目录文件中获取内核函数数据(包括内核函数是否被调用的数据),并从kernel-func.map文件中获取内核模块与内核函数的映射表,基于获取的被调用的内核函数数据,在映射表中分别查询与每个被调用的内核函数名称相对应的内核模块,经查询得到的即是被当前操作系统使用的第一内核模块,并将查询得到的被使用的每个第一内核模块确定为目标内核模块保存在hitmodules.lst文件中。
另外,在确定每个目标内核模块时,还确定每个目标内核模块的命中次数,并将目标内核模块与相应的命中次数保存在hitmodules.lst文件中,以便根据命中次数来决定如何裁剪内核、编译目标内核。例如,对于默认值是y的内核模块,精准定位以作为重要的裁剪内核的依据。
综上,根据本发明的内核裁剪方法200,首先基于当前系统使用的内核模块来编译生成第一内核,实现对内核的初步裁剪。进而,在初步裁剪后的第一内核基础上,通过自动化测试进一步筛选、确定当前操作系统确实需求的目标内核模块,并基于进一步确定的目标内核模块编译生成最终的目标内核,从而完成对内核的裁剪。这样,本发明综合对内核进行两步裁剪,可以在较短的时间内更有效地精简操作系统中的内核模块数量,从而尽可能降低系统的启动时间。其中可以在一周至两周时间内将Linux系统的内核模块精简到低于100个,系统的启动时间可以降低到约为原来的1/3。
进一步地,本发明采用make localmodconfig方法进行内核编译,可以自动选择内核配置项,避免了人工选择的繁琐过程,有利于提高内核裁剪的效率。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种内核裁剪方法,在操作系统中执行,包括步骤:
生成包括多个第一内核模块的第一内核;
对所述多个第一内核模块对应的内核函数进行测试,确定每个内核函数是否被调用,并根据被调用的一个或多个内核函数来确定被当前操作系统使用的一个或多个目标内核模块;以及
基于所述一个或多个目标内核模块编译生成目标内核。
2.如权利要求1所述的方法,其中,对多个第一内核模块对应的内核函数进行测试的步骤包括:
启动内核的追踪器,基于所述追踪器对内核函数进行跟踪,以便确定每个内核函数是否被调用。
3.如权利要求1所述的方法,其中,确定被当前操作系统使用的一个或多个目标内核模块的步骤包括:
获取内核模块与内核函数的映射表;
根据所述映射表确定与每个被调用的内核函数分别相对应的第一内核模块,并将所述第一内核模块确定为目标内核模块。
4.如权利要求1-3任一项所述的方法,其中,生成包括多个第一内核模块的第一内核的步骤包括:
获取当前操作系统使用的多个内核模块,将被使用的每个内核模块确定为第一内核模块;
基于多个第一内核模块分别对应的内核配置项,生成第一内核配置文件;
基于所述第一内核配置文件进行内核编译,以生成包括多个所述第一内核模块的第一内核。
5.如权利要求4所述的方法,其中,在基于多个第一内核模块分别对应的内核配置项生成第一内核配置文件之前,包括步骤:
利用make localmodconfig方法,基于多个第一内核模块自动选择与每个第一内核模块分别相对应的内核配置项。
6.如权利要求1-3任一项所述的方法,其中,编译生成目标内核包括:
基于多个目标内核模块分别对应的内核配置项,生成目标内核配置文件;
基于所述目标内核配置文件进行内核编译,以生成包括一个或多个所述目标内核模块的目标内核。
7.如权利要求1-3任一项所述的方法,其中,还包括步骤:
获取内核模块列表;
分别获取内核模块列表中的每个内核模块对应的路径,并根据路径获取相应的内核模块文件;
根据内核模块文件获取每个内核模块对应的内核函数;
根据每个内核模块和相应的内核函数,创建内核模块与内核函数的映射表。
8.如权利要求1-3任一项所述的方法,其中,在编译生成目标内核之后,还包括步骤:
将所述目标内核载入虚拟机,以便检测目标内核是否能在虚拟机内稳定运行。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440438.1A CN112860267B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
CN202110761785.4A CN113485712B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
PCT/CN2021/120598 WO2022222378A1 (zh) | 2021-04-23 | 2021-09-26 | 一种内核裁剪方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440438.1A CN112860267B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110761785.4A Division CN113485712B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112860267A true CN112860267A (zh) | 2021-05-28 |
CN112860267B CN112860267B (zh) | 2021-07-30 |
Family
ID=75992826
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110440438.1A Active CN112860267B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
CN202110761785.4A Active CN113485712B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110761785.4A Active CN113485712B (zh) | 2021-04-23 | 2021-04-23 | 一种内核裁剪方法及计算设备 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN112860267B (zh) |
WO (1) | WO2022222378A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485712A (zh) * | 2021-04-23 | 2021-10-08 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090783A (zh) * | 2014-05-22 | 2014-10-08 | 西安电子科技大学 | 利用启动加速器提高Linux服务器启动速度的方法 |
CN105893085A (zh) * | 2016-03-30 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 内核模块加载方法和装置 |
CN106796531A (zh) * | 2016-12-27 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 内核配置信息的管理方法、装置和电子设备 |
CN108182066A (zh) * | 2017-12-22 | 2018-06-19 | 天津七二通信广播股份有限公司 | 一种基于嵌入式系统机车台内核实现方法 |
CN108228314A (zh) * | 2017-12-05 | 2018-06-29 | 华东师范大学 | 一种基于设备规约的虚拟原型错误检测方法 |
CN108614681A (zh) * | 2016-12-20 | 2018-10-02 | 黑龙江傲立辅龙科技开发有限公司 | 一种嵌入式计算机系统软件平台的构建方法 |
US20200020069A1 (en) * | 2016-02-26 | 2020-01-16 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
CN110825392A (zh) * | 2019-10-31 | 2020-02-21 | 北京深之度科技有限公司 | 操作系统的定制方法、批量部署方法以及批量部署系统 |
CN111008152A (zh) * | 2019-12-26 | 2020-04-14 | 中国人民解放军国防科技大学 | 一种基于函数依赖图的内核模块兼容影响域分析方法、系统和介质 |
US20200201612A1 (en) * | 2015-04-23 | 2020-06-25 | Google Llc | Compiler for translating between a virtual image processor instruction set architecture (isa) and target hardware having a two-dimensional shift array structure |
CN111428241A (zh) * | 2019-10-31 | 2020-07-17 | 北京深之度科技有限公司 | 一种多安全访问策略控制方法及计算设备 |
CN111966383A (zh) * | 2020-09-03 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种操作系统内核兼容性量化分析方法、系统和介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360305B (zh) * | 2011-10-09 | 2013-09-04 | 中国航天科技集团公司第五研究院第五一三研究所 | 用于航天计算机的VxWorks操作系统裁剪定制方法 |
CN103207787B (zh) * | 2012-01-12 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种项目开发中数据包的加载方法及系统 |
CN104035766A (zh) * | 2014-05-23 | 2014-09-10 | 四川长虹电器股份有限公司 | 基于覆盖率测试的android系统裁剪方法 |
CN104503735B (zh) * | 2014-11-04 | 2016-06-08 | 国网山东省电力公司青岛供电公司 | 一种电网系统标准化数据交换接口一致性校验方法 |
FR3038085A1 (fr) * | 2015-06-25 | 2016-12-30 | Orange | Procede d'aide a l'analyse de l'execution d'une machine virtuelle |
CN107102944B (zh) * | 2017-04-07 | 2020-01-24 | 北京深思数盾科技股份有限公司 | 一种调用函数的分析方法及装置 |
CN108714028B (zh) * | 2018-04-11 | 2022-02-25 | 上海联影医疗科技股份有限公司 | 一种磁共振成像方法、装置及医学成像系统 |
CN110389786B (zh) * | 2018-04-20 | 2022-10-14 | 伊姆西Ip控股有限责任公司 | 内核管理方法、电子设备和计算机可读存储介质 |
CN112334876A (zh) * | 2018-06-21 | 2021-02-05 | 谷歌有限责任公司 | 自动化计算机操作系统优化 |
CN111240684B (zh) * | 2020-01-03 | 2023-04-11 | 北京字节跳动网络技术有限公司 | 一种js代码的裁剪方法、装置、介质和电子设备 |
CN112860267B (zh) * | 2021-04-23 | 2021-07-30 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
-
2021
- 2021-04-23 CN CN202110440438.1A patent/CN112860267B/zh active Active
- 2021-04-23 CN CN202110761785.4A patent/CN113485712B/zh active Active
- 2021-09-26 WO PCT/CN2021/120598 patent/WO2022222378A1/zh unknown
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090783A (zh) * | 2014-05-22 | 2014-10-08 | 西安电子科技大学 | 利用启动加速器提高Linux服务器启动速度的方法 |
US20200201612A1 (en) * | 2015-04-23 | 2020-06-25 | Google Llc | Compiler for translating between a virtual image processor instruction set architecture (isa) and target hardware having a two-dimensional shift array structure |
US20200020069A1 (en) * | 2016-02-26 | 2020-01-16 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
CN105893085A (zh) * | 2016-03-30 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 内核模块加载方法和装置 |
CN108614681A (zh) * | 2016-12-20 | 2018-10-02 | 黑龙江傲立辅龙科技开发有限公司 | 一种嵌入式计算机系统软件平台的构建方法 |
CN106796531A (zh) * | 2016-12-27 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 内核配置信息的管理方法、装置和电子设备 |
CN108228314A (zh) * | 2017-12-05 | 2018-06-29 | 华东师范大学 | 一种基于设备规约的虚拟原型错误检测方法 |
CN108182066A (zh) * | 2017-12-22 | 2018-06-19 | 天津七二通信广播股份有限公司 | 一种基于嵌入式系统机车台内核实现方法 |
CN110825392A (zh) * | 2019-10-31 | 2020-02-21 | 北京深之度科技有限公司 | 操作系统的定制方法、批量部署方法以及批量部署系统 |
CN111428241A (zh) * | 2019-10-31 | 2020-07-17 | 北京深之度科技有限公司 | 一种多安全访问策略控制方法及计算设备 |
CN111008152A (zh) * | 2019-12-26 | 2020-04-14 | 中国人民解放军国防科技大学 | 一种基于函数依赖图的内核模块兼容影响域分析方法、系统和介质 |
CN111966383A (zh) * | 2020-09-03 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种操作系统内核兼容性量化分析方法、系统和介质 |
Non-Patent Citations (4)
Title |
---|
ARCHLINUX: "Kernel (简体中文)/Traditional compilation (简体中文)", 《HTTPS://WIKI.ARCHLINUX.ORG/TITLE/KERNEL_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)/TRADITIONAL_COMPILATION_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)》 * |
PETROS KOUTOUPIS: "DIY: Build a Custom Minimal Linux Distribution from Source", 《HTTPS://WWW.LINUXJOURNAL.COM/CONTENT/DIY-BUILD-CUSTOM-MINIMAL-LINUX-DISTRIBUTION-SOURCE》 * |
丁小东: "基于视频采集系统的嵌入式Linux操作系统裁剪方法探讨", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
徐晨辉: "嵌入式Linux内核裁剪及移植的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485712A (zh) * | 2021-04-23 | 2021-10-08 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
WO2022222378A1 (zh) * | 2021-04-23 | 2022-10-27 | 统信软件技术有限公司 | 一种内核裁剪方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022222378A1 (zh) | 2022-10-27 |
CN112860267B (zh) | 2021-07-30 |
CN113485712A (zh) | 2021-10-08 |
CN113485712B (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7971189B2 (en) | Automated interaction diagram generation using source code breakpoints | |
CN112988252B (zh) | 一种操作系统启动方法及计算设备 | |
CN111831564A (zh) | 一种回归测试方法、装置及计算设备 | |
CN113127100B (zh) | 一种异构程序执行方法、装置、计算设备及可读存储介质 | |
CN114691240A (zh) | 驱动硬件配置信息加载方法、装置和系统,以及计算设备 | |
CN112860267B (zh) | 一种内核裁剪方法及计算设备 | |
CN112445708A (zh) | 一种压力测试方法、装置及计算设备 | |
CN113204385A (zh) | 一种插件加载方法、装置、计算设备及可读存储介质 | |
CN113805971B (zh) | 一种应用程序运行方法、计算设备及存储介质 | |
CN114780173A (zh) | 一种在应用中加载插件的方法、计算设备及存储介质 | |
CN113254347A (zh) | 一种日志函数添加方法、计算设备及储存介质 | |
CN114328273B (zh) | 一种应用程序控件的调试方法、调试装置及计算设备 | |
WO2023155863A1 (en) | Methods and devices for compiler function fusion | |
CN113238973B (zh) | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 | |
CN113867825B (zh) | 一种多系统运行方法、计算设备及存储介质 | |
CN117591117B (zh) | 页面生成方法、系统、设备及存储介质 | |
CN117472458B (zh) | 系统功能优化配置方法、装置、电子设备及存储介质 | |
CN114036066A (zh) | 一种单元测试方法、装置、计算设备及可读存储介质 | |
CN110427211B (zh) | 一种演示数据调用方法与装置 | |
CN115509907A (zh) | 一种表单提交测试方法、装置、计算设备及存储介质 | |
CN117891723A (zh) | 一种代码检查方法、计算设备及存储介质 | |
CN114510456A (zh) | 一种文件搜索方法、下载装置及计算设备 | |
CN114168143A (zh) | 软件中源码的定位方法、装置、计算设备及可读存储介质 | |
CN114741116A (zh) | 一种程序移植方法及装置 | |
CN112799962A (zh) | 一种软件测试方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |