刷机启动方法、装置、设备和存储介质与流程

文档序号:28280818发布日期:2021-12-31 21:31阅读:94来源:国知局
刷机启动方法、装置、设备和存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种刷机启动方法、装置、设备和存储介质。


背景技术:

2.硬件设备在组装完成后,需要通过刷机将操作系统置入硬件设备中,通过刷机还可以更改或替换终端设备中原本存在的一些语言、图片、铃声、软件或者操作系统。


技术实现要素:

3.本发明提供一种刷机启动方法、装置、设备和存储介质,用以解决现有技术中刷机方案的执行时间较长的缺陷,实现一种执行时间较短的刷机方案。
4.本发明提供一种刷机启动方法,包括:
5.获取刷机包,所述刷机包用于部署操作系统;
6.将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
7.在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,并将各个所述第二分区的数据加载到各个所述第二分区中。
8.根据本发明提供的一种刷机启动方法,所述方法还包括:
9.在正常模式下,检查文件系统分区是否损坏;
10.若所述文件系统分区损坏,则对所述文件系统分区进行修复。
11.根据本发明提供的一种刷机启动方法,所述检查文件系统分区是否损坏,包括:
12.通过所述操作系统的第一启动服务程序,检查文件系统分区是否损坏;
13.所述对所述文件系统分区进行修复,包括:
14.通过所述第一启动服务程序,对所述文件系统分区进行修复。
15.根据本发明提供的一种刷机启动方法,所述方法还包括:
16.在正常模式下,通过所述操作系统的第一启动服务程序加载配置文件,所述配置文件用于在所述操作系统中加载至少一个功能模块。
17.根据本发明提供的一种刷机启动方法,所述方法还包括:
18.在正常模式下,在所述文件系统分区中挂载文件系统。
19.根据本发明提供的一种刷机启动方法,所述方法还包括:
20.通过所述操作系统的第一启动服务程序,开启目标服务,所述目标服务包括开机显示服务。
21.根据本发明提供的一种刷机启动方法,所述操作系统包括:第一操作系统和以容器化运行在第一操作系统中的第二操作系统。
22.本发明还提供一种刷机启动装置,包括:
23.获取模块,用于获取刷机包,所述刷机包用于部署操作系统;
24.处理模块,用于将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
25.所述处理模块,还用于在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,并将各个所述第二分区的数据加载到各个所述第二分区中。
26.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述刷机启动方法的步骤。
27.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述刷机启动方法的步骤。
28.本发明提供的刷机启动方法、装置、设备和存储介质,将刷机包中除了恢复recovery分区和启动引导bootloader分区的数据,其余都加载到第一分区中;进一步地,在恢复模式下从第一分区中获取其他各个第二分区的数据,并将各个第二分区的数据加载到对应的第二分区中,由于各个第二分区的数据有较多重复的文件,因此相比现有技术中需要将刷机包的数据分别加载在对应的分区中,极大地缩短了刷机执行时间。
附图说明
29.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1是本发明提供的刷机启动方法一实施例的流程示意图之一;
31.图2是本发明提供的刷机启动方法一实施例的流程示意图之二;
32.图3是本发明一实施例提供的启动方法的原理示意图;
33.图4是本发明另一实施例提供的启动方法的流程示意图;
34.图5是本发明提供的刷机启动装置的结构示意图;
35.图6是本发明提供的电子设备的结构示意图。
具体实施方式
36.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
37.首先,对本发明实施例涉及的部分词汇和应用场景进行介绍。
38.本发明实施例的方法可以应用于电子设备,该电子设备设置有操作系统。
39.在一些实施例中,该电子设备中可以包括至少两个操作系统,例如第一操作系统和第二操作系统,第二操作系统以容器化的方式运行在第一操作系统中。如本领域技术人员所知,容器化即以linux内核特性为基础实现的lxc,其充分利用了cgroups和namespace
特性,隔离进程和资源,使得第二操作系统高效、轻量的实现。
40.在本发明的实施例中,尽管没有明确描述的,第一操作系统和第二操作系统可以是相同的,例如第一操作系统和第二操作系统均为linux或均为android;第一操作系统和第二操作系统也可以是不同的,例如第一操作系统和第二操作系统中一者为linux,一者为android。
41.例如,linux系统可以是各种gnu/linux发行版,如ubuntu、debian、redhat等。
42.例如,android(安卓)操作系统涵盖google发行的android os以及aosp和基于aosp的各种衍生系统,如miui、emui、one ui等。
43.一实施例中,电子设备的存储区域的分区包括:启动引导bootloader分区、boot分区、恢复recovery分区、系统system分区、数据data分区、缓存cache分区等。当按下电源键电子设备上电启动后,首先通过bootloader分区的启动引导程序bootloader确定启动模式。例如根据用户的按键进入到某种启动模式。比如说大家所熟知的通过电源键和其他一些按键的组合,可以进入到recovery模式或者正常normal模式。
44.本发明实施例提供的方法可由电子设备如处理器执行相应的软件代码实现,也可由电子设备在执行相应的软件代码的同时,通过和服务器进行数据交互来实现。
45.常见的刷机方案,将刷机包刷在操作系统的各个分区,包括recovery分区、boot分区、系统system分区、root分区等。刷机包包括刷在各个分区的数据,刷在各个分区的数据有很多重复文件,因此,刷机时间较长。
46.本发明实施例的刷机启动方法中,刷机包中包括recovery分区、bootloader分区的内容以及第一分区的内容,但这些内容中没有重复内容,在刷机时,将刷机包中包括的recovery分区的内容加载到recovery分区,bootloader分区的内容加载到bootloader分区,第一分区的内容加载到第一分区,刷机后第一次启动时,将第一分区中各个第二分区的数据分别加载到对应的第二分区,因此大大缩短了刷机时间。
47.下面结合图1

图4以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
48.图1是本发明提供的刷机启动方法一实施例的流程示意图。如图1所示,本实施例提供的方法,包括:
49.步骤101、获取刷机包,刷机包用于部署操作系统。
50.具体的,刷机包可以包括用于部署操作系统的数据,部署操作系统时系统的各个分区所需的数据,例如将recovery分区、bootloader分区以及其他各个分区(如system分区、boot分区等)所需的数据都包含在内,但其他各个分区所需的数据有很多重复文件,在刷机时,先将该部分内容加载到一个第一分区中。
51.在本发明的实施例中,部署操作系统,可以是在电子设备在生产线上硬件组装完成后在裸机状态下刷入操作系统,也可以是对已有操作系统的电子设备更换操作系统或者更新操作系统。
52.步骤102、将刷机包中包括的恢复分区的数据加载到恢复分区,并将刷机包中包括的启动引导分区的数据加载到启动引导分区中,并将刷机包中其余数据加载到第一分区中。
53.具体的,可以通过执行刷机程序,将刷机包加载到recovery分区、bootloader分区和第一分区中,即将刷机包中包括的recovery分区的数据加载到recovery分区,将刷机包中包括的bootloader分区的数据加载到bootloader分区,其余数据加载到第一分区中。
54.步骤103、在恢复模式下从第一分区中获取操作系统中至少一个第二分区的数据,并将各个第二分区的数据加载到各个第二分区中。
55.具体的,刷机完成之后的第一次启动,会进入恢复recovery模式。
56.在recovery模式会启动操作系统的内核,根据第一分区的数据,部署操作系统,即在recovery模式会把第一分区中各个镜像文件加载到对应的第二分区,例如将boot分区对应的镜像文件加载到boot分区中、将system分区对应的镜像文件加载到system分区中。
57.可选地,在misc分区存放recovery引导信息,例如数据为boot

recovery,启动引导程序bootloader检查启动模式,bootloader去读misc分区数据,如果misc分区数据为boot

recovery,会进入recovery模式,在recovery模式会把第一分区中各个镜像文件加载到对应的分区。成功完成之后,会清除misc分区的数据。如果在recovery模式执行失败,则不会清除misc分区的数据,按任意键重启之后,再次进入recovery模式,重复执行前述步骤103。
58.恢复模式成功之后,关机,按电源键开机,进入正常模式。
59.本实施例的方法,将刷机包中除了恢复recovery分区和启动引导bootloader分区的数据,其余都加载到第一分区中;进一步地,在恢复模式下从第一分区中获取其他各个第二分区的数据,并将各个第二分区的数据加载到对应的第二分区中,相对于传统刷机方案极大地缩短了刷机执行时间。
60.可选地,操作系统包括:第一操作系统和以容器化运行在第一操作系统中的第二操作系统。
61.例如,第一操作系统为linux系统,第二操作系统为android(安卓)系统,二者共享linux kernel。在recovery模式下,启动内核kernel,执行安卓recovery init程序,进入recovery模式,在recovery模式中,从第一分区把各个第二分区需要的镜像文件,移到第二分区。
62.如图2所示,在recovery模式成功完成操作系统的部署,即将各个第二分区所需的镜像文件加载到对应的第二分区后,例如可以显示图像和/或文字信息进行提示,之后开机进入第一操作系统,系统正常启动。如果在recovery模式执行失败,也可以显示图像和/或文字信息进行提示,按任意键重启之后,再次进入recovery模式,重复执行前述步骤103。
63.可选地,如图3所示,在正常模式下,启动第一操作系统,可以执行如下几个方面的步骤:
64.一方面:
65.通过该第一操作系统的第一启动服务程序,开启目标服务。
66.具体的,加载操作系统的内核(kernel),挂载虚拟内存盘ramdisk。
67.如图3所示,执行第一启动服务程序,第一启动服务程序例如initramfs init脚本,把/proc、/sys、/dev等目录挂载到相应的位置。解析init脚本中命令行command line,可以根据命令行command line的参数,来启动对应的服务和脚本。
68.可选地,目标服务包括:开机显示服务。
69.开机显示服务用于在开机时显示提示信息,例如包括:文字、图像等。
70.最后,通过switch_root命令挂载真正的文件系统。
71.另一方面:
72.在正常模式下,检查文件系统分区是否损坏;
73.若文件系统分区损坏,则对文件系统分区进行修复。
74.可选地,通过所述操作系统的第一启动服务程序,确定文件系统分区是否;
75.若文件系统分区损坏,则通过所述第一启动服务程序,对文件系统分区进行修复。
76.具体的,启动引导程序bootloader加载操作系统的kernel并挂载ramdisk,如图3所示,执行第一启动服务程序,例如initramfs init脚本,通过init脚本中e2fsck命令检查文件系统分区(rootfs分区)是否损坏,如有损坏及时修复。
77.另一方面:
78.在正常模式下,通过执行第一启动服务程序加载配置文件,所述配置文件用于在操作系统中加载至少一个功能模块。
79.具体的,如图3所示,执行第一启动服务程序,例如initramfs init脚本,通过init脚本加载配置文件,例如initramfs.conf,在配置文件中可以配置是否加载一些功能模块,例如是否在初始化文件系统initramfs阶段加载键盘映射功能,使用busybox或klibc等配置项。
80.进一步的,如图3所示,通过init脚本还可以启动监听处理systemd

udevd服务。systemd

udevd服务用于监听内核发出的设备事件,并根据udev规则处理每个事件。
81.上述实施方式中,通过执行第一启动服务程序,实现了对第一操作系统中的分区是否损坏进行检查,如有损坏,则进行修复,提高了安全性;而且还通过执行第一启动服务程序加载配置文件,以在操作系统中加载至少一个功能模块,增加了操作系统的功能,可移植性较好。
82.在一实施例中,该刷机启动方法还包括:
83.在正常模式下,在所述文件系统分区中挂载文件系统。
84.具体的,如图3所示,在执行initramfs init脚本,完成前述功能,例如检查文件系统分区是否损坏、加载配置文件等之后,通过switch_root命令挂载真实的文件系统rootfs。
85.示例性的,如图4所示,为本发明的刷机启动方法的一种实现流程:
86.设备启动,执行启动引导程序bootloader,检查启动模式,若为恢复模式(recovery模式),启动第一操作系统的内核,执行第二操作系统的启动服务程序(android recovery init程序),进入recovery模式,在recovery模式中,恢复操作系统,即部署操作系统,从第一分区中将各个第二分区需要的镜像文件移到对应的第二分区。
87.成功后,执行相应操作进入正常模式(normal模式),启动第一操作系统的内核,执行第一操作系统的启动服务程序(initramfs init程序),通过switch_root命令挂载文件系统。执行文件系统初始化(rootfs init)。之后启动监听处理systemd

udevd服务,总线系统(dbus system),安卓服务的lxc容器,用户实例(systemd user),简单登录服务(simple logind service)等。
88.其中,启动lxc容器之后,初始化安卓硬件抽象层(hardware abstract layer,
hal),进而运行安卓系统。
89.下面对本发明提供的刷机启动装置进行描述,下文描述的刷机启动装置与上文描述的刷机启动方法可相互对应参照。
90.图5是本发明提供的刷机启动装置的结构示意图。如图5所示,本实施例提供的刷机启动装置,包括:
91.获取模块210,用于获取刷机包,所述刷机包用于部署操作系统;
92.处理模块220,用于将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
93.所述处理模块220,还用于在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,并将各个所述第二分区的数据加载到各个所述第二分区中。
94.可选地,所述处理模块220,还用于:
95.在正常模式下,确定文件系统分区是否损坏;
96.若所述文件系统分区损坏,则对所述文件系统分区进行修复。
97.可选地,所述处理模块220,具体用于:
98.通过所述操作系统的第一启动服务程序,确定所述文件系统分区是否损坏;
99.通过所述第一启动服务程序,对所述文件系统分区进行修复。
100.可选地,所述处理模块220,还用于:
101.在正常模式下,通过所述操作系统的第一启动服务程序加载配置文件,所述配置文件用于在所述操作系统中加载至少一个功能模块。
102.可选地,所述处理模块220,还用于:
103.在正常模式下,在所述分区中挂载文件系统。
104.可选地,所述处理模块220,还用于:
105.通过所述操作系统的第一启动服务程序,开启目标服务,所述目标服务包括开机显示服务。
106.可选地,所述操作系统包括:第一操作系统和以容器化运行在第一操作系统中的第二操作系统。
107.本实施例的装置,可以用于执行前述方法实施例中任一实施例的方法,其具体实现过程与技术效果与方法实施例中类似,具体可以参见方法实施例中的详细介绍,此次不再赘述。
108.图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行刷机启动方法,包括:
109.获取刷机包,所述刷机包用于部署操作系统;
110.将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
111.在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,
并将各个所述第二分区的数据加载到各个所述第二分区中。
112.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
113.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的刷机启动方法,该方法包括:
114.获取刷机包,所述刷机包用于部署操作系统;
115.将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
116.在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,并将各个所述第二分区的数据加载到各个所述第二分区中。
117.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的刷机启动方法,该方法包括:
118.获取刷机包,所述刷机包用于部署操作系统;
119.将所述刷机包中包括的恢复分区的数据加载到所述恢复分区,并将所述刷机包中包括的启动引导分区的数据加载到所述启动引导分区中,并将所述刷机包中其余数据加载到第一分区中;
120.在恢复模式下从所述第一分区中获取所述操作系统中至少一个第二分区的数据,并将各个所述第二分区的数据加载到各个所述第二分区中。
121.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
122.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
123.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1