一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种开机性能的优化方法、装置、设备及存储介质与流程

2022-10-13 01:04:24 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种开机性能的优化方法、装置、设备及存储介质。


背景技术:

2.安全增强型linux(security-enhanced linux,selinux),它是美国国家安全局(the national securityagency,nsa)和安全计算公司(secure computing corporation,scc)开发的linux的一个扩张强制访问控制(mandatory access control,mac)安全模块。在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。selinux在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
3.当移动设备加载selinux后,移动操作系统的安全等级将极大的提高。selinux策略是移动系统selinux强制访问控制的重要组成部分。通常selinux策略在版本编译时,会生成对应的selinux策略编译结果,并将该selinux策略编译结果的镜像文件预置于移动设备android系统的vendor分区中,这样,在移动设备启动时,android系统在初始化(init)进程中,将该镜像文件加载到内核,以完成selinux策略的开机初始化配置。
4.参阅图1所示,目前android系统包括系统(system)分区和vendor分区。selinu策略源文件分别放置在system分区(如,记为第一源文件)和vendor分区(如,记为第二源文件)中,vendor分区中预存selinux策略镜像文件。
5.当system分区或vendor分区单独升级时,在init进程中会检测到vendor分区中预置的selinux策略镜像文件失效,随即调用secilc编译工具,基于system分区中的第一源文件和vendor分区中的第二源文件,重新编译生成selinux策略文件,以将selinux策略文件加载到内核中,完成selinux策略的开机初始化配置。
6.显然,当system分区或vendor分区单独升级时,移动设备每次开机init进程中,均会基于system分区和vendor分区中的策略源文件,调用secilc编译工具进行策略文件的重新编译,这样,不仅拖慢了开机速度,也增加了中央处理器(central processing unit,cpu)资源的消耗。


技术实现要素:

7.本技术实施例提供一种开机性能的优化方法、装置、设备及存储介质,用以提升开机速度,缓解开机过程中cpu资源的占用。
8.本技术实施例提供的具体技术方案如下:
9.第一方面,本技术实施例提供一种开机性能的优化方法,包括:
10.在初始化进程中,若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致,则判断第三哈希值与metadata分区中的第四哈希值是否一致;
11.若一致,则将所述metadata分区中的第一selinux策略文件加载到内核中;
12.其中,所述第一selinux策略文件是基于所述第一源文件和所述vendor分区中的第二源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第三哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的;所述第四哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一源文件和所述第二源文件进行哈希运算得到,并存储到所述metadata分区的。
13.上述方法,在任一分区升级或策略升级(或更新)后,只需首次开机过程中或之后,基于系统分区中的第一源文件和vendor分区中的第二源文件,编译得到第一selinux策略文件,并将其存储在metadata分区中,后续android系统启动时,在策略未再次升级或更新前,在init进程中,就可以直接通过判断第三哈希值和第四哈希值,确定metadata分区中预置的第一selinux策略文件是否有效,以及在确定第一selinux策略文件有效后,直接加载该第一selinux策略文件到内核中即可,有效地提升了开机速度,同时也释放了开机过程中编译策略所占用的cpu资源。
14.在一种可能的实现方式中,所述若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致之后,还包括:
15.若从所述metadata分区中未查询到所述第四哈希值,或从所述metadata分区中查询到所述第四哈希值与所述第三哈希值不一致,则基于所述第一源文件和所述第二源文件,编译得到第二selinux策略文件;
16.将所述第二selinux策略文件加载到所述内核中。
17.上述方法,基于查询metadata分区中的第四哈希值的查询结果,判断metadata分区中是否已存储第一selinux策略文件,或判断metadata分区中存储的第一selinux策略文件是否有效,从而在确定metadata分区中存储的第一selinux策略文件失效后,再重新编译selinux策略文件,这样,可以避免对已编译过的第一selinux策略文件的重复编译,提升了开机速度。
18.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,还包括:
19.若从所述metadata分区中未查询到所述第四哈希值,则在确定加载完成后,将所述第二selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第五哈希值作为所述第四哈希值存储到所述metadata分区中;或
20.若从所述metadata分区中查询到所述第四哈希值与所述第三哈希值不一致,则在确定加载完成后,用所述第二selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第五哈希值替换所述metadata分区中的第四哈希值;
21.其中,所述第五哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
22.上述方法,通过存储第四哈希值,以便于下次开机时对metadata分区中的第一selinux策略文件的有效性进行判断,在不增加开机处理难度的情况下,避免第一selinux策略文件的重复编译。
23.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,还包括:
24.android系统启动后,在确定中央处理器cpu处于空闲状态后,在secilc安全域内,基于所述第一源文件和所述第二源文件,编译得到第三selinux策略文件;
25.若从所述metadata分区中未查询到所述第四哈希值,则将所述第三selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第六哈希值作为所述第四哈希值存储到所述metadata分区中;或
26.若从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则用所述第三selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第六哈希值替换所述metadata分区中的第四哈希值;
27.其中,所述第六哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
28.上述方法,为了进一步提升开机速度,将存储第一selinux策略文件的时机安排在android系统启动后,在确定中央处理器cpu处于空闲状态后,这样,开机过程中,可以直接在编译得到第一selinux策略文件之后,直接进行策略加载,避免存储策略文件消耗的cpu资源。
29.在一种可能的实现方式中,在所述将所述metadata分区中的第一selinux策略文件加载到内核中之前,还包括:
30.对所述第一selinux策略文件进行哈希运算,得到第七哈希值;
31.基于所述第七哈希值和所述metadata分区中的策略哈希值,确定所述第一selinux策略文件未篡改;
32.其中,所述策略哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一selinux策略文件进行哈希运算得到,并存储到所述metadata分区的。
33.上述方法,在metadata分区中保存第一selinux策略文件的策略哈希值,在将第一selinux策略文件加载到内核之前,再次对第一selinux策略文件进行安全性验证,从而进一步保证了第一selinux策略文件的有效性,保证了android系统启动的安全性。
34.在一种可能的实现方式中,所述方法还包括:
35.若确定所述系统分区中第一源文件的第一哈希值,与所述vendor分区中预存的所述第一源文件的第二哈希值一致,则将所述vendor分区中预存的第四selinux策略文件加载到所述内核中。
36.上述方法,仍保留已有技术下,在vendor分区中预存的第四selinux策略文件,以更大限度地适配于原生的判断逻辑,增加方案的适用性、针对性及有效性。
37.在一种可能的实现方式中,若所述android系统还包括扩展分区,则所述方法包括:
38.在所述初始化进程中,若确定目标分区中目标源文件的目标哈希值,与所述vendor分区中预存的所述目标源文件的目标源哈希值不一致,则判断第八哈希值与所述metadata分区中的第九哈希值是否一致,其中,所述目标分区是所述系统分区和/或所述扩展分区;
39.若一致,则将所述metadata分区中的第五selinux策略文件加载到所述内核中;
40.其中,若所述扩展分区是系统扩展分区,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件和所述系统扩展分区中的第三源文件编译得到,且在首次成
功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到,并存储到所述metadata分区的;
41.若所述扩展分区是系统扩展分区和product分区,且所述product分区中存储第四源文件,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件、所述系统扩展分区中的第三源文件和所述第四源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件、所述第三源文件和所述第四源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件、所述第三源文件和所述第四源文件进行哈希运算得到,并存储到所述metadata分区的。
42.上述方法,适配于不同android系统版本,增加本方案的广泛适用性。
43.第二方面,本技术实施例提供一种开机性能的优化装置,包括:
44.判断模块,用于在初始化进程中,若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致,则判断第三哈希值与metadata分区中的第四哈希值是否一致;
45.加载模块,用于若一致,则将所述metadata分区中的第一selinux策略文件加载到内核中;
46.其中,所述第一selinux策略文件是基于所述第一源文件和所述vendor分区中的第二源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第三哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的;所述第四哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一源文件和所述第二源文件进行哈希运算得到,并存储到所述metadata分区的。
47.在一种可能的实现方式中,所述若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致之后,所述判断模块还用于:
48.若从所述metadata分区中未查询到所述第四哈希值,或从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则基于所述第一源文件和所述第二源文件,编译得到第二selinux策略文件;
49.将所述第二selinux策略文件加载到所述内核中。
50.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,所述加载模块还用于:
51.若从所述metadata分区中未查询到所述第四哈希值,则在确定加载完成后,将所述第二selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第五哈希值作为所述第四哈希值存储到所述metadata分区中;或
52.若从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则在确定加载完成后,用所述第二selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第五哈希值替换所述metadata分区中的第四哈希值;
53.其中,所述第五哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
54.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,所述加载模块还用于:
55.android系统启动后,在确定中央处理器cpu处于空闲状态后,在secilc安全域内,基于所述第一源文件和所述第二源文件,编译得到第三selinux策略文件;
56.若从所述metadata分区中未查询到所述第四哈希值,则将所述第三selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第六哈希值作为所述第四哈希值存储到所述metadata分区中;或
57.若从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则用所述第三selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第六哈希值替换所述metadata分区中的第四哈希值;
58.其中,所述第六哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
59.在一种可能的实现方式中,在所述将所述metadata分区中的第一selinux策略文件加载到内核中之前,所述判断模块还用于:
60.对所述第一selinux策略文件进行哈希运算,得到第七哈希值;
61.基于所述第七哈希值和所述metadata分区中的策略哈希值,确定所述第一selinux策略文件未篡改;
62.其中,所述策略哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一selinux策略文件进行哈希运算得到,并存储到所述metadata分区的。
63.在一种可能的实现方式中,所述加载模块还用于:
64.若确定所述系统分区中第一源文件的第一哈希值,与所述vendor分区中预存的所述第一源文件的第二哈希值一致,则将所述vendor分区中预存的第四selinux策略文件加载到所述内核中。
65.在一种可能的实现方式中,若所述android系统还包括扩展分区,则所述判断模块,用于在所述初始化进程中,若确定目标分区中目标源文件的目标哈希值,与所述vendor分区中预存的所述目标源文件的目标源哈希值不一致,则判断第八哈希值与所述metadata分区中的第九哈希值是否一致,其中,所述目标分区是所述系统分区和/或所述扩展分区;
66.所述加载模块,用于若一致,则将所述metadata分区中的第五selinux策略文件加载到所述内核中;
67.其中,若所述扩展分区是系统扩展分区,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件和所述系统扩展分区中的第三源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到,并存储到所述metadata分区的;
68.若所述扩展分区是系统扩展分区和product分区,且所述product分区中存储第四源文件,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件、所述系统扩展分区中的第三源文件和所述第四源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件、所述第
三源文件和所述第四源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件、所述第三源文件和所述第四源文件进行哈希运算得到,并存储到所述metadata分区的。
69.第三方面,本技术实施例提供一种终端设备,包括:
70.存储器,用于存储可被控制器执行的计算机程序;
71.控制器与所述存储器连接,被配置为执行如上述第一方面中任一项的方法。
72.第四方面,本技术实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述第一方面中任一项所述的方法。
73.另外,第二方面至第四方面中任一一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
74.图1为已有技术中一种android系统的各分区内文件存储情况示意图;
75.图2为已有技术中一种android系统启动的原生判断逻辑的流程示意图;
76.图3为本技术实施例中一种应用场景示意图;
77.图4为本技术实施例中第一种android系统的各分区内文件存储情况示意图;
78.图5为本技术实施例中一种开机性能的优化方法的第一场景的流程示意图;
79.图6为本技术实施例中一种判断metadata分区中第一selinux策略文件未篡改的流程示意图;
80.图7为本技术实施例中一种开机性能的优化方法的第二场景的流程示意图;
81.图8为本技术实施例中一种开机性能的优化方法的第二场景处理逻辑示意图;
82.图9为本技术实施例中一种开机性能的优化方法的第三场景的流程示意图;
83.图10为本技术实施例中一种开机性能的优化方法的第三场景处理逻辑示意图;
84.图11为本技术实施例中一种开机性能的优化方法的第四场景的流程示意图;
85.图12为本技术实施例中一种开机性能的优化方法的第四场景处理逻辑示意图;
86.图13为本技术实施例中一种开机性能的优化方法的完整流程示意图;
87.图14为本技术实施例中另一种开机性能的优化方法的流程示意图;
88.图15为本技术实施例中第二种android系统的各分区文件存储情况的示意图;
89.图16为本技术实施例中第二种开机性能的优化方法的流程示意图;
90.图17为本技术实施例中第三种android系统的各分区文件存储情况的示意图;
91.图18为本技术实施例中第三种开机性能的优化方法的流程示意图;
92.图19为本技术实施例中一种开机性能的优化装置的逻辑架构示意图;
93.图20为本技术实施例中终端设备的实体架构示意图。
具体实施方式
94.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,并不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
95.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够在除了这里图示或描述的那些以外的顺序实施。
96.下面对本技术实施例的设计思想进行简要介绍。
97.本技术涉及计算机技术领域,主要涉及一种开机性能的优化方法、装置、设备及存储介质。
98.selinux是一种基于域类型模型(domain-type)的强制访问控制安全系统,它由nsa编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了selinux的补丁,最后还有一个相应的安全策略。selinux提供了比传统的unix权限更好的访问控制。
99.selinux系统比起通常的linux系统来说,安全性能要高的多,它通过对于用户、进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。selinux由以下两部分组成:1)kernel selinux模块;2)用户态工具。
100.selinux定义了系统中每个用户、进程、应用和文件的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查。selinux策略可以根据需要是严格的或宽松的。只有同时满足了“标准linux访问控制”和“selinux访问控制”时,主体才能访问客体。
101.已有技术下,android s版本之前,若system分区的策略源文件镜像不升级,那么,策略就不会发生变化。android系统启动时,在init进程中,将预置在vendor分区中的selinux策略镜像文件(如,precompiled_policy)加载到内核中即可,此时不会存在在init进程中需对策略源文件进行重新编译的情况。
102.但是,当单独升级了system分区中的策略源文件镜像后,android系统启动时,在init进程中,均需基于system分区和vendor分区中的策略源文件镜像进行重新编译,这样,就拖慢了开机速度,增加了cpu资源的消耗。
103.相应的,android s版本的selinux策略文件通常是对system分区和vendor分区中的策略源文件分别进行编译,然后,再将system分区的策略源文件的编译结果镜像文件、以及vendor分区的策略源文件的编译结果镜像文件进行封装得到的。
104.当单独升级了system分区中的策略源文件镜像后,android系统启动时,在init进程中,仍需基于system分区或vendor分区中的策略源文件镜像进行重新编译,得到编译结果,然后,在将上述两个编译结果封装为最终的selinux策略文件,同样地,也拖慢了开机速度,增加了cpu资源的消耗。
105.已有技术下,参阅图2所示,android系统启动的原生判断逻辑的具体流程如下:
106.步骤200:init进程中,判断system分区中第一源文件的第一哈希值,与vendor分区中预存的第一源文件的第二哈希值是否一致,若是,则执行步骤210,否则,执行步骤220。
107.步骤210:将vendor分区中selinux策略镜像文件加载到内核中。
108.步骤220:调用secilc编译工具,对第一源文件和vendor分区中的第二源文件进行编译,得到selinux策略文件,并将该selinux策略文件加载到内核中。
109.可见,已有技术下每次开机,在init进程中,若检测到vendor分区中预置的selinux策略镜像文件失效,即通过将system分区中第一源文件的第一哈希值,与vendor分
区中预存的第一源文件的第二哈希值进行比较,确定两者不一致,则本次开机需重新基于system分区中的第一源文件和vendor分区中的第二策略源文件,编译得到新的selinux策略文件,以完成selinux策略文件的加载工作,这样,每次开机重新编译selinux策略文件均占用了cpu资源,也拖慢了开机速度。
110.有鉴于此,为了提升开机速度,释放开机过程中编译策略文件占用的cpu资源,本技术实施例中,在init进程中,若确定system分区中第一源文件的第一哈希值,与vendor分区中预存内的第一源文件的第二哈希值不一致,则判断第三哈希值与metadata分区中的第四哈希值是否一致;若一致,则将metadata分区中的第一selinux策略文件加载到内核中;其中,第一selinux策略文件是基于第一源文件和vendor分区中的第二源文件编译得到,且在首次成功加载到内核后存储到metadata分区的;第三哈希值是对第一源文件和第二源文件进行哈希运算得到的;第四哈希值是在将第一selinux策略文件存储到metadata分区后,对第一源文件和第二源文件进行哈希运算得到,并存储到metadata分区的。
111.这样,在策略升级或更新后,只需首次开机过程中或开机之后,在下次开机之前,基于system分区中的第一源文件和vendor分区中的第二源文件,编译得到第一selinux策略文件并保存在metadata分区中,后续android系统启动时,在策略未再次升级或更新前,在init进程中,就可以直接加载该第一selinux策略文件到内核中即可,有效地提升了开机速度,同时也释放了开机过程中编译策略所占用的cpu资源。
112.需要说明的是,上述第一源文件和第二源文件均指策略源文件,第一和第二仅为区别类似的对象;上述源文件指代system分区中存储的策略源文件、以及vendor分区中存储的策略源文件,上述策略为selinux策略,后续实施例中相同名称指代意思相同,后续不在赘述。
113.还需要说明的是,上述哈希值通常以哈希文件的形式与源文件同时存储,本技术实施例中,为了便于简单描述,将比较哈希文件,描述为比较哈希文件中存储的哈希值,实际应用中,在init进程中,将system分区中的第一哈希文件,与vendor分区中的第二哈希文件进行比较,后续实施例中与此类似,不在赘述。
114.在介绍完本技术实施例的设计思想之后,下面结合附图对本技术优选的实施方式做出进一步详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本技术,并不用于限定本技术,并且在不冲突的情况下,本技术实施例及实施例中的特征可以相互组合。
115.如图3所示,其为本技术实施例的应用场景示意图。参阅图3所示,本技术实施例中,该应用场景包括终端设备310。终端设备310响应于用户针对开机键执行的开机操作,启动android系统。
116.本技术实施例中,上述终端设备310可以为智能移动终端,平板电脑,笔记本电脑,智能掌上设备,个人电脑(personal computer,pc),计算机,智能屏,各类可穿戴设备,个人数字助理(personal digital assistant,pda)等。本技术中不对上述终端设备310的具体形式进行限定。
117.在介绍完本技术实施例的应用场景之后,如图4所示,其为本技术实施例中一种android系统的各分区文件存储情况示意图。参阅图4所示,本技术实施例中,android系统包括system分区、vendor分区和metadata分区。
118.本技术实施例中,system分区用于存储第一源文件和第一源文件的第一哈希值,
vendor分区用于存储第二源文件、预存的system分区中第一源文件的第二哈希值和预置的第四selinux策略文件(即,前述内容中的selinux策略镜像文件),metadata分区用于存储第一selinux策略文件、与第一selinux策略文件对应的第四哈希值和第一selinux策略文件对应的策略哈希值;
119.其中,第一selinux策略文件是基于system分区中的第一源文件和vendor分区中的第二源文件编译得到,且在首次成功加载到内核后存储到metadata分区的;第四哈希值是在将上述第一selinux策略文件存储到metadata分区后,对第一源文件和第二源文件进行哈希运算得到,并存储到metadata分区的;策略哈希值是在将上述第一selinux策略文件存储到metadata分区后,对第一selinux策略文件进行哈希运算得到的。
120.需要说明的是,上述源文件可以是对首次预置于system分区或vendor分区中的首个版本的selinux策略源文件进行升级(或更新)后的selinux策略源文件,也可以是后续任意一次升级(或更新)后的selinux策略源文件,但metadata分区中的第四哈希值是在将第一selinux策略文件存储到metadata分区后,基于第一selinux策略文件所对应的system分区和vendor分区中的源文件进行哈希运算得到的哈希值,上述升级(或更新)可以是对system分区中的源文件进行升级(或更新),也可以是对vendor分区中的源文件进行升级(或更新),还可以是对system分区和vendor分区各自存储的源文件进行升级(或更新),本技术实施例中,不做具体限定。
121.下面针对上述android系统的各分区内的文件存储情况,参阅图5所示,介绍本技术实施例中提供的一种开机性能的优化方法,其具体流程如下:
122.步骤500:init进程中,获取system分区中第一源文件的第一哈希值。
123.本技术实施例中,在响应于用户针对开机键执行的开机操作,启动android系统,init进程中,从system分区中查找第一源文件对应的第一哈希值。
124.步骤510:判断第一哈希值和vendor分区中的预存的第一源文件的第二哈希值是否一致;若否,则执行步骤520,否则,执行步骤550。
125.本技术实施例中,将第一哈希值和第二哈希值进行比较,若第一哈希值和第二哈希值一致,则说明system分区中的第一源文件和vendor分区中的第二哈希值对应的第一源文件一致,第一源文件未发生升级(或更新),那么,执行步骤520;否则,即第一哈希值和第二哈希值不一致,则说明system分区中的第一源文件和vendor分区中的第二哈希值对应的第一源文件不一致,第一源文件发生过升级(或更新),执行步骤530。
126.步骤520:判断第三哈希值与metadata分区中的第四哈希值是否一致,其中,第三哈希值是对第一源文件和第二源文件进行哈希运算得到的;若是,则执行步骤530,反之,则执行步骤540。
127.本技术实施例中,在执行步骤510之后,若确定第一哈希值和第二哈希值不一致,则从metadata分区中查询第四哈希值,此时,查询结果包含但不限于两种情况:从metadata分区中查询到第四哈希值,或,从metadata分区中未查询到第四哈希值。若确定从metadata分区中查询到第四哈希值,则执行步骤520,判断第三哈希值和第四哈希值是否一致,进一步地,若一致,则执行步骤530,反之,则执行步骤540。
128.可选的,本技术实施例中,在执行步骤510之后,若确定第一哈希值和第二哈希值一致,则执行步骤550。
129.步骤530:将metadata分区中的第一selinux策略文件添加到内核中,其中,第一selinux策略文件是基于第一源文件和vendor分区中的第二源文件编译得到,且在首次成功加载到内核后存储到metadata分区的;第四哈希值是在将第一selinux策略文件存储到metadata分区后,对第一源文件和第二源文件进行哈希运算得到,并存储到metadata分区的。
130.本技术实施例中,在执行步骤530之前,参阅图6所示,进一步执行如下步骤:
131.步骤600:对第一selinux策略文件进行哈希运算,得到第七哈希值。
132.步骤610:基于第七哈希值和metadata分区中的策略哈希值,确定第一selinux策略文件未篡改,其中,策略哈希值是在将第一selinux策略文件存储到metadata分区后,对第一selinux策略文件进行哈希运算得到,并存储到metadata分区的。
133.步骤540:基于第一源文件和第二源文件,编译得到第二selinux策略文件,并将第二selinux策略文件加载到内核中。
134.步骤550:将vendor分区中预存的第四selinux策略文件加载到内核中。
135.本技术实施例中,通常在vendor分区中预置第四selinux策略文件,如,precompiled_sepolicy,表征策略源文件为原始源文件,未进行升级或更新。那么,在执行步骤550时,将vendor分区中预存的第四selinux策略文件加载到内核中,以完成selinux策略的初始化配置,selinux权限检查功能被使能。
136.这样,可以在下次开机过程中,通过查询metadata分区中的第四哈希值,并将查询到的第四哈希值与第三哈希值进行比较,以判断metadata分区中存储的第一selinux策略文件,是否与当前的system分区和vendor分区中的源文件相匹配,从而确定本次开机,是否需重新编译策略文件,并在确定无需编译策略文件后,对metadata分区中的第一selinux策略文件的有效性进一步鉴别,从而在确定第一selinux策略文件有效后,直接加载metadata分区中的策略文件,提升了开机速度,也避免了对已编译策略文件的重复编译。
137.参阅图7所示,本技术实施例中,在执行步骤510之后,若从metadata分区中未查询到第四哈希值,则上述开机性能的优化方法的具体流程如下:
138.步骤700:从metadata分区中未查询到第四哈希值。
139.本技术实施例中,在执行步骤700时,若从metadata分区中未查询到第四哈希值,即说明metadata分区中未存储第一selinux策略文件,本次开机是首次升级(或更新)源文件后的首次开机。
140.步骤710:基于第一源文件和第二源文件,编译得到第二selinux策略文件。
141.本技术实施例中,在执行步骤710时,具体将第一源文件和第二源文件作为secilc编译工具的输入,通过secilc编译工具编辑得到第二selinux策略文件。
142.步骤720:将第二selinux策略文件加载到内核中。
143.步骤730:在确定加载完成后,将第二selinux策略文件作为第一selinux策略文件存储到metadata分区中。
144.本技术实施例中,由于第二selinux策略文件可以成功加载到内核中,说明通过编译得到的第二selinux策略文件是正确的,因此,在执行步骤730时,在确定将第二selinux策略文件成功加载到内核中后,将第二selinux策略文件作为第一selinux策略文件存储到metadata分区中。
145.这样,将第二selinux策略文件作为第一selinux策略文件保存到metadata分区中,可以在策略未再次升级或更新前,后续开机过程中,直接将第二selinux策略文件(即,metadata分区中替换后的第一selinux策略文件)加载到内核中,这样,可以提升开机速度,避免开机重新编译得到第二selinux策略文件(即,metadata分区中替换后的第一selinux策略文件)带来的开机速度缓慢问题。
146.为了保证第一selinux策略文件的准确性,本技术实施例中,将第一selinux策略文件存储到metadata分区后,对第一selinux策略文件进行哈希运算,得到策略哈希值,并将该策略哈希值一并存储到metadata分区中,用于后续加载metadata分区中的第一selinux策略文件之前,判断metadata分区中的策略文件是否未篡改,若篡改,则需重新编译策略,反之,则可直接加载metadata分区中的策略文件。
147.步骤740:对第一源文件和第二源文件进行哈希运算,得到第五哈希值,将第五哈希值作为第四哈希值存储到metadata分区中。
148.本技术实施例中,为了便于在策略未再次升级或更新前,后续开机过程中,init进程中,可以准确获知已存在预先基于第一源文件和第二源文件编译得到第二selinux策略文件,在执行步骤730之后,执行步骤740,对第一源文件和第二源文件进行哈希运算,得到并存储第五哈希值至metadata分区中。
149.这样,可以在下次开机过程中,通过查询metadata分区中的第四哈希值,并将查询到的第四哈希值与第三哈希值进行比较,以判断metadata分区中存储的第一selinux策略文件,是否与当前的system分区和vendor分区中的源文件相匹配,从而确定是需重新编译策略文件,还是直接加载metadata分区中的策略文件,以避免对已编译策略文件的重复编译。
150.参阅图8所示,以从metadata分区中未查询到第四哈希值为例。
151.本技术实施例中,从metadata分区中未查询到第四哈希值,则基于第一源文件和第二源文件,编译得到第二selinux策略文件。
152.然后,将第二selinux策略文件加载到内核中,并在确定加载完成后,将第二selinux策略文件作为第一selinux策略文件存储到metadata分区中,将对第一selinux策略文件进行哈希运算得到的策略哈希值存储到metadata分区中,以及,将对第一源文件和第二源文件进行哈希运算得到的第五哈希值作为第四哈希值也存储到metadata分区中。
153.本技术实施例中,以便于下次开机过程中,在确定system分区和vendor分区中的源文件不一致时,查询metadata分区中的第四哈希值,由于该第四哈希值是前一次开机时,对第一源文件和第二源文件进行哈希运算得到的,因此,确定metadata分区中的第四哈希值,与本次对system分区中的第一源文件和vendor分区中的第二源文件进行哈希得到的第三哈希值一致,故直接加载metadata分区中的第一selinux策略文件即可。
154.参阅图9所示,本技术实施例中,在执行步骤510之后,若从metadata分区中查询到第四哈希值,则上述开机性能的优化方法的具体流程如下:
155.步骤900:从metadata分区中查询到第四哈希值。
156.本技术实施例中,在执行步骤900时,若从metadata分区中查询到第四哈希值,即说明metadata分区中已存储第一selinux策略文件,本次开机是非首次升级(或更新)源文件后的任意一次开机。
157.步骤910:判断metadata分区中的第四哈希值和上述第三哈希值是否一致。
158.本技术实施例中,由于在将新编译得到的selinux策略文件存储到metadata分区后,均将对应selinux策略文件的源文件的哈希值也存储到了metadata分区中,因此,通过执行步骤900从metadata分区中查询到第四哈希值后,执行步骤910,判断第四哈希值与第三哈希值是否一致,可以确定metadata分区中的第一selinux策略文件是否与第一源文件和第二源文件相匹配,其中,第三哈希值是对system分区中的第一源文件和vendor分区中的第二源文件进行哈希运算得到的。
159.步骤920:若确定metadata分区中的第四哈希值与第三哈希值一致,则判断第七哈希值与metadata分区中的策略哈希值是否一致,其中,第七哈希值是对metadata分区中的第一selinux策略文件进行哈希运算得到的;若是,则执行步骤930,否则,则执行步骤940。
160.为了防止metadata分区中的第一selinux策略文件被篡改,保障第一selinux策略文件的准确性,在将selinux策略文件存储到metadata分区后,同样将对第一selinux策略文件进行哈希运算得到的策略哈希值也存储到metadata分区中。
161.那么,本技术实施例中,在执行步骤910确定metadata分区中的第四哈希值与上述第三哈希值一致后,进一步对第一selinux策略文件的有效性进行再次鉴别,即执行步骤920,对第一selinux策略文件进行哈希运算得到第七哈希值,并判断第七哈希值和策略哈希值是否一致,若一直,则说明metadata分区中的selinux策略文件未篡改,执行步骤930;反之,若不一致,则说明metadata分区中的selinux策略文件存在篡改,需执行步骤940重新编译策略。
162.步骤930:将metadata分区中的第一selinux策略文件加载到内核中。
163.本技术实施例中,在执行步骤910之后,若确定metadata分区中的第四哈希值,与对system分区中的第一源文件和vendor分区中的第二源文件进行哈希运算得到的第三哈希值一致,则说明metadata分区中存储的第一selinux策略文件与第一源文件和第二源文件相匹配,那么,执行步骤930,将metadata分区中的第一selinux策略文件加载到内核中即可。
164.步骤940:基于第一源文件和第二源文件,编译得到第二selinux策略文件,并将该第二selinux策略文件加载内核中。
165.步骤950:在确定加载成功后,用第二selinux策略文件替换metadata分区中的第一selinux策略文件,用第五哈希值替换metadata分区中的第四哈希值,以及,用新的策略哈希值替换metadata分区中的策略哈希值。
166.本技术实施例中,在执行步骤950时,首先,将第二selinux策略文件替换metadata分区中的第一selinux策略文件;然后,对第二selinux策略文件进行哈希运算得到新的策略哈希值,并将新的策略哈希值替换metadata分区中的策略哈希值;以及,对第一源文件和第二源文件进行哈希运算,得到第五哈希值,再用第五哈希值替换metadata分区中的第四哈希值。
167.参阅图10所示,以从metadata分区中查询到第四哈希值为例。
168.本技术实施例中,从metadata分区中查询到第四哈希值,则说明metadata分区中存储有第一selinux策略文件。
169.那么,进一步判断第四哈希值与第三哈希值是否一致。
170.假设从metadata分区中查询到的第四哈希值与第三哈希值一致。
171.那么,本次开机是在编译得到第一selinux策略文件对应的开机之后的任意一次开机,则在init进程中,对第一selinux策略文件进行哈希运算,得到第七哈希值,并在确定第一哈希值与metadata分区中的策略哈希值一致后,将metadata分区中的第一selinux策略文件加载到内核中,已完成对selinux策略的初始化配置。
172.参阅图11所示,本技术实施例中,在执行步骤510之后,若从metadata分区中未查询到第四哈希值,则另一种场景下的开机性能的优化方法的具体流程如下:
173.步骤900:从metadata分区中查询到第四哈希值。
174.步骤910:判断metadata分区中的第四哈希值和第三哈希值是否一致。
175.步骤960:若确定metadata分区中的第四哈希值与第三哈希值不一致,则基于第一源文件和第二源文件,编译得到第二selinux策略文件。
176.本技术实施例中,在执行步骤910时,若确定metadata分区中的第四哈希值,与对system分区中的第一源文件和vendor分区中的第二源文件进行哈希运算得到的第三哈希值不一致,即说明metadata分区中已存储的第一selinux策略文件与第一源文件和第二源文件进行编译得到的策略文件不匹配,即在编译得到metadata分区中的第一selinux策略文件之后,system分区中的第一源文件和/或vendor分区中的第二源文件进行了新的升级(或更新),则执行步骤960时,基于第一源文件和第二源文件编译生成第二selinux策略文件。
177.步骤970:将第二selinux策略文件加载到内核中。
178.步骤980:在确定加载完成后,用第二selinux策略文件替换metadata分区中的第一selinux策略文件。
179.本技术实施例中,由于第二selinux策略文件可以成功加载到内核中,说明通过编译生成的第二selinux策略文件是正确的,因此,执行步骤980时,在确定将第二selinux策略文件成功加载到内核中后,用第二selinux策略文件替换metadata分区中的第一selinux策略文件。
180.为了保证第一selinux策略文件的准确性,本技术实施例中,将第一selinux策略文件替换metadata分区中的第一selinux策略文件后,对第一selinux策略文件进行哈希运算,得到策略哈希值,并将该策略哈希值一并存储到metadata分区中,用于后续加载metadata分区中的第一selinux策略文件之前,判断metadata分区中的第一selinux策略文件是否未篡改。
181.步骤990:对第一源文件和第二源文件进行哈希运算,得到第五哈希值,并用第五哈希值替换metadata分区中的第四哈希值,以及,对第一selinux策略文件进行哈希运算,得到新的策略哈希值,用新的策略哈希值替换metadata分区中的策略哈希值。
182.本技术实施例中,为了便于后续在不升级(或更新)策略源文件的前提下,后续开机过程中,可以准确获知存在预先基于第一源文件和第二源文件编译得到第二selinux策略文件,对第一源文件和第二源文件进行哈希运算,以得到对应的第五哈希值,并用第五哈希值替换metadata分区中的第四哈希值。
183.为了防止metadata分区中的第一selinux策略文件被篡改,保障第一selinux策略文件的准确性,在将selinux策略文件存储到metadata分区后,同样将对第一selinux策略
文件进行哈希运算得到的策略哈希值也存储到metadata分区中。
184.参阅图12所示,仍以从metadata分区中查询到第四哈希值为例。
185.本技术实施例中,从metadata分区中查询到第四哈希值,则说明metadata分区中存储有第一selinux策略文件。
186.那么,进一步判断第四哈希值与第三哈希值是否一致。
187.假设从metadata分区中查询到的第四哈希值与第三哈希值不一致。
188.那么,基于第一源文件和第二源文件,编译得到第二selinux策略文件。
189.然后,将第二selinux策略文件加载到内核中,并在确定加载完成后,用第二selinux策略文件替换metadata分区中的第一selinux策略文件;对第一源文件和第二源文件进行哈希运算,得到第五哈希值。
190.为了便于下次开机过程中,在确定system分区和vendor分区中的源文件不一致时,查询metadata分区中的第一selinux策略文件是否与第四哈希值对应的源文件一致。
191.本技术实施例中,用第五哈希值替换metadata分区中的第四哈希值,用新的策略哈希值替换metadata分区中的策略哈希值,这样,下次开机在确定第三哈希值与第四哈希值一致,且第七哈希值与策略哈希值一致后,便可以直接加载metadata分区中的第一selinux策略文件,从而完成selinux策略的初始化配置,提升开机速度,释放编译占用的cpu资源。
192.参阅图13所示,本技术实施例中,提供的一种开机性能的优化方法的完整流程如下:
193.步骤1300:在init进程中,获取system分区中第一源文件的第一哈希值。
194.步骤1301:判断第一哈希值和vendor分区中预存的第一源文件的第二哈希值是否一致;若否,则执行步骤1302,反之,执行步骤1314。
195.步骤1302:从metadata分区中查询第四哈希值。
196.步骤1303:若从metadata分区中查询到第四哈希值,则判断第四哈希值和第三哈希值是否一致,其中,第三哈希值是对第一源文件和vendor分区中的第二源文件进行哈希运算得到的,若是,则执行步骤1304;反之,执行步骤1306。
197.步骤1304:对metadata分区中的第一selinux策略文件进行哈希运算,得到第七哈希值,判断第七哈希值与metadata分区中的策略哈希值是否一致,若是,则执行步骤1305,反之,则执行步骤1306。
198.步骤1305:将metadata分区中的第一selinux策略文件加载到内核中,其中,第一selinux策略文件是基于第一源文件和vendor分区中的第二源文件编译得到,且在首次成功加载到内核后存储到metadata分区的。
199.步骤1306:基于第一源文件和第二源文件,编译得到第二selinux策略文件。
200.步骤1307:将第二selinux策略文件加载到内核中,并在确定加载完成后,用第二selinux策略文件替换metadata分区中的第一selinux策略文件。
201.步骤1308:对第一源文件和第二源文件进行哈希运算,得到第五哈希值,并用第五哈希值替换metadata分区中的第四哈希值。
202.步骤1309:对第一selinux策略文件进行哈希运算,得到新的策略哈希值,并用新的策略哈希值替换metadata分区中的策略哈希值。
203.步骤1310:若从metadata分区中未查询到第四哈希值,则基于第一源文件和第二源文件,编译得到第二selinux策略文件。
204.步骤1311:将第二selinux策略文件加载到内核中,并在确定加载完成后,将第二selinux策略文件作为第一selinux策略文件存储到metadata分区中。
205.步骤1312:对第一源文件和第二源文件进行哈希运算,得到第五哈希值,并将第五哈希值作为第四哈希值存储到metadata分区中。
206.步骤1313:对第一selinux策略文件进行哈希运算,得到策略哈希值,并将策略哈希值存储到metadata分区中。
207.步骤1314:将vendor分区中预存的第四selinux策略文件加载到内核中。
208.本技术实施例中,通过上述完整的开机性能的优化方法的完整流程,可以在首次编译得到并加载成功的第一selinux策略文件存储到metadata分区中,并将对应的第四哈希值存储到metadata分区中,这样,在下一次策略升级之前,后续每次开机初始化进程中,均可以直接从metadata分区中加载第一selinux策略文件。
209.参阅图14所示,本技术实施例中,提供的另一种开机性能的优化方法,在上述流程中,将第二selinux策略文件加载到内核中后,继续启动android系统,暂不对第二selinux策略文件进行存储,而是在android系统启动后,在cpu处于空闲状态后,触发一个任务,如action,保存与当前system分区和vendor分区的源文件相匹配的selinux策略文件,其具体完整的流程如下:
210.步骤1400:android系统启动后,在确定cpu处于空闲状态后,在secilc安全域内,基于第一源文件和第二源文件,编译得到第三selinux策略文件。
211.步骤1401:若从metadata分区中未查询到第四哈希值,则将第三selinux策略文件作为第一selinux策略文件存储到metadata分区中,并将第六哈希值作为第四哈希值存储到metadata分区中,其中,第六哈希值是对第一源文件和第二源文件进行哈希运算得到的。
212.步骤1402:若从metadata分区中查询到的第四哈希值与第三哈希值不一致,则用第三selinux策略文件替换metadata分区中的第一selinux策略文件,并用第六哈希值替换metadata分区中的第四哈希值,其中,第六哈希值是对第一源文件和第二源文件进行哈希运算得到的。
213.需要说明的是,若在确定metadata分区中的策略哈希值与第七哈希值不一致时,也可采用上述另一种开机性能的优化方法,将基于第一源文件和第二源文件编辑得到的selinux策略文件、selinux策略文件对应的哈希值和selinux策略文件对应的策略哈希值一并存储至metadata分区中,以便于下次开机加载策略文件使用。
214.随着android系统的版本升级,android系统包括的分区也随之发生变化。本技术实施例中,android系统还可以包括扩展分区;其中,上述扩展分区可以是系统扩展(system_ext)分区,也可以是system_ext分区和product分区。
215.情况一,扩展分区为system_ext分区,此时,android系统的各分区文件存储情况如图15所示。
216.由于通常system_ext中包含源文件,因此,参阅图16所示,上述开机性能的优化方法的具体流程包括:
217.步骤1600:在init进程中,若确定目标分区中目标源文件的目标哈希值,与vendor
分区中预存的目标源文件的目标源哈希值不一致,则判断第八哈希值与metadata分区中的第九哈希值是否一致,其中,目标分区是system分区和/或扩展分区;
218.步骤1610:若一致,则将metadata分区中的第五selinux策略文件加载到内核中;其中,若扩展分区是system_ext分区,则第五selinux策略文件是基于第一源文件、第二源文件和ystem_ext分区中的第三源文件编译得到,且在首次成功加载到内核后存储到metadata分区的;第八哈希值是对第一源文件、第二源文件和第三源文件进行哈希运算得到的;第九哈希值是在将第五selinux策略文件存储到metadata分区后,对第一源文件、第二源文件和第三源文件进行哈希运算得到,并存储到metadata分区的。
219.情况二,扩展分区为system_ext分区和product分区,此时,android系统的各分区文件存储情况如图17所示。
220.本技术实施例中,由于基于策略源文件的配置规则,product分区中可能包含第四源文件,也可能不包含第四源文件,但product分区中通常包含哈希文件,用于存储product分区中第四源文件对应的哈希值,其中,若product分区中不包含第四源文件时,product分区中包含的哈希文件为空。
221.参阅图18所示,若product分区中存储第四源文件,则上述开机性能的优化方法的具体流程包括:
222.步骤1800:在init进程中,若确定目标分区中目标源文件的目标哈希值,与vendor分区中预存的目标源文件的目标源哈希值不一致,则判断第八哈希值与metadata分区中的第九哈希值是否一致,其中,目标分区是system分区和/或扩展分区;
223.步骤1810:若一致,则将metadata分区中的第五selinux策略文件加载到内核中;其中,若扩展分区是system_ext分区和product分区,且product分区中存储第四源文件,则第五selinux策略文件是基于第一源文件、第二源文件、system_ext分区中的第三源文件和第四源文件编译得到,且在首次成功加载到内核后存储到metadata分区的;第八哈希值是对第一源文件、第二源文件、第三源文件和第四源文件进行哈希运算得到的;第九哈希值是在将第五selinux策略文件存储到metadata分区后,对第一源文件、第二源文件、第三源文件和第四源文件进行哈希运算得到,并存储到metadata分区的。
224.需要说明的是,本技术实施例中,若product分区中未存储第四源文件,则第五selinux策略文件、第八哈希值、第九哈希值分别与扩展分区为system_ext分区对应的第五selinux策略文件、第八哈希值、第九哈希值一致,在此不再赘述。
225.还需要说明的是,android系统包括的分区情况不仅限于本技术中提及的分区情况,随着android系统的版本升级,selinux策略源文件可能存储在不同的分区中,但均可以基于上述开机性能的优化方法,即首次加载成功后,对应存储selinux策略文件至开机过程中即可挂起的分区中,以提升开机速度,释放开机过程中编译策略所占用的cpu资源。
226.基于同一发明构思,参阅图19所示,本技术实施例中提供一种开机性能的优化装置,包括:
227.判断模块1910,用于在初始化进程中,若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致,则判断第三哈希值与metadata分区中的第四哈希值是否一致;
228.加载模块1920,用于若一致,则将所述metadata分区中的第一selinux策略文件加
载到内核中;
229.其中,所述第一selinux策略文件是基于所述第一源文件和所述vendor分区中的第二源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第三哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的;所述第四哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一源文件和所述第二源文件进行哈希运算得到,并存储到所述metadata分区的。
230.在一种可能的实现方式中,所述若确定系统分区中第一源文件的第一哈希值,与vendor分区中预存的所述第一源文件的第二哈希值不一致之后,所述判断模块1910还用于:
231.若从所述metadata分区中未查询到所述第四哈希值,或从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则基于所述第一源文件和所述第二源文件,编译得到第二selinux策略文件;
232.将所述第二selinux策略文件加载到所述内核中。
233.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,所述加载模块1920还用于:
234.若从所述metadata分区中未查询到所述第四哈希值,则在确定加载完成后,将所述第二selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第五哈希值作为所述第四哈希值存储到所述metadata分区中;或
235.若从所述metadata分区中查询到所述第四哈希值与所述第三哈希值不一致,则在确定加载完成后,用所述第二selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第五哈希值替换所述metadata分区中的第四哈希值;
236.其中,所述第五哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
237.在一种可能的实现方式中,在所述将所述第二selinux策略文件加载到所述内核中之后,所述加载模块1920还用于:
238.android系统启动后,在确定中央处理器cpu处于空闲状态后,在secilc安全域内,基于所述第一源文件和所述第二源文件,编译得到第三selinux策略文件;
239.若从所述metadata分区中未查询到所述第四哈希值,则将所述第三selinux策略文件作为所述第一selinux策略文件存储到所述metadata分区中,并将第六哈希值作为所述第四哈希值存储到所述metadata分区中;或
240.若从所述metadata分区中查询到的所述第四哈希值与所述第三哈希值不一致,则用所述第三selinux策略文件替换所述metadata分区中的第一selinux策略文件,并用第六哈希值替换所述metadata分区中的第四哈希值;
241.其中,所述第六哈希值是对所述第一源文件和所述第二源文件进行哈希运算得到的。
242.在一种可能的实现方式中,在所述将所述metadata分区中的第一selinux策略文件加载到内核中之前,所述判断模块1910还用于:
243.对所述第一selinux策略文件进行哈希运算,得到第七哈希值;
244.基于所述第七哈希值和所述metadata分区中的策略哈希值,确定所述第一
selinux策略文件未篡改;
245.其中,所述策略哈希值是在将所述第一selinux策略文件存储到所述metadata分区后,对所述第一selinux策略文件进行哈希运算得到,并存储到所述metadata分区的。
246.在一种可能的实现方式中,所述加载模块1920还用于:
247.若确定所述系统分区中第一源文件的第一哈希值,与所述vendor分区中预存的所述第一源文件的第二哈希值一致,则将所述vendor分区中预存的第四selinux策略文件加载到所述内核中。
248.在一种可能的实现方式中,若所述android系统还包括扩展分区,则所述判断模块1910,用于在所述初始化进程中,若确定目标分区中目标源文件的目标哈希值,与所述vendor分区中预存的所述目标源文件的目标源哈希值不一致,则判断第八哈希值与所述metadata分区中的第九哈希值是否一致,其中,所述目标分区是所述系统分区和/或所述扩展分区;
249.所述加载模块1920,用于若一致,则将所述metadata分区中的第五selinux策略文件加载到所述内核中;
250.其中,若所述扩展分区是系统扩展分区,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件和所述系统扩展分区中的第三源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件和所述第三源文件进行哈希运算得到,并存储到所述metadata分区的;
251.若所述扩展分区是系统扩展分区和product分区,且所述product分区中存储第四源文件,则所述第五selinux策略文件是基于所述第一源文件、所述第二源文件、所述系统扩展分区中的第三源文件和所述第四源文件编译得到,且在首次成功加载到所述内核后存储到所述metadata分区的;所述第八哈希值是对所述第一源文件、所述第二源文件、所述第三源文件和所述第四源文件进行哈希运算得到的;所述第九哈希值是在将所述第五selinux策略文件存储到所述metadata分区后,对所述第一源文件、所述第二源文件、所述第三源文件和所述第四源文件进行哈希运算得到,并存储到所述metadata分区的。
252.基于同一发明构思,本技术实施例中提供一种终端设备,终端设备的结构可以如图20所示,包括:通信组件2010、存储器2020、显示单元2030、摄像头2040、传感器2050、音频电路2060、蓝牙模块2070、处理器2080等部件。
253.通信组件2010用于与服务器或其他设备进行通信。在一些实施例中,可以包括电路无线保真(wireless fidelity,wifi)模块,wifi模块属于短距离无线传输技术,终端设备通过wifi模块可以帮助用户收发信息。
254.存储器2020可用于存储软件程序及数据。处理器2080通过运行存储在存储器2020的软件程序或数据,从而执行终端设备的各种功能以及数据处理。存储器2020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器2020存储有使得终端设备能运行的操作系统。本技术中存储器2020可以存储操作系统及各种应用程序,还可以存储执行本技术实施例的方法的代码。
255.显示单元2030还可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种菜单的图形用户界面(graphical user interface,gui)。具体地,显示单元2030可以包括设置在终端设备正面的显示屏2032。其中,显示屏2032可以采用液晶显示器、发光二极管等形式来配置。显示单元2030可以用于显示本技术实施例中的启动后的主界面等。
256.显示单元2030还可用于接收输入的数字或字符信息,产生与终端设备的用户设置以及功能控制有关的信号输入,具体地,显示单元2030可以包括设置在终端设备正面的触摸屏2031,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
257.其中,触摸屏2031可以覆盖在显示屏2032之上,也可以将触摸屏2031与显示屏2032集成而实现终端设备的输入和输出功能,集成后可以简称触摸显示屏。本技术中显示单元2030可以显示应用程序以及对应的操作步骤。
258.摄像头2040可用于捕获静态或动态图像,用户可以将摄像头2040拍摄的静态或动态图像传输给其他设备。摄像头2040可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器2080转换成数字图像信号。
259.终端设备还可以包括至少一种传感器2050,比如加速度传感器2051、距离传感器2052、指纹传感器2053、温度传感器2054。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
260.音频电路2060、扬声器2061、传声器2062可提供用户与终端设备之间的音频接口。音频电路2060可将接收到的音频数据转换后的电信号,传输到扬声器2061,由扬声器2061转换为声音信号输出。终端设备还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器2062将收集的声音信号转换为电信号,由音频电路2060接收后转换为音频数据,再将音频数据输出至通信组件2010以发送给比如另一终端设备,或者将音频数据输出至存储器2020以便进一步处理。
261.蓝牙模块2070用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备可以通过蓝牙模块2070与同样具备蓝牙模块的可穿戴终端设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
262.处理器2080是终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器2020内的软件程序,以及调用存储在存储器2020内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器2080可包括一个或多个处理单元;处理器2080还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器2080中。本技术中处理器2080可以运行操作系统、应用程序、用户界面显示及触控响应,以及本技术实施例的方法。另外,处理器2080与显示单元2030耦接。
263.基于同一发明构思,本技术实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述各个实施例中执行的任意一种方法。
264.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序
产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
265.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能的装置。
266.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能。
267.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图中的一个流程或多个流程和/或方框图中的一个方框或多个方框中指定的功能的步骤。
268.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献