CN112416406B - 终端设备升级方法、装置、终端设备和介质 - Google Patents
终端设备升级方法、装置、终端设备和介质 Download PDFInfo
- Publication number
- CN112416406B CN112416406B CN202011376388.7A CN202011376388A CN112416406B CN 112416406 B CN112416406 B CN 112416406B CN 202011376388 A CN202011376388 A CN 202011376388A CN 112416406 B CN112416406 B CN 112416406B
- Authority
- CN
- China
- Prior art keywords
- version
- upgrade
- operating system
- packet
- upgrading
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种终端设备升级方法、装置、终端设备、计算机设备和存储介质。一个实施例中的方法包括:在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。采用本方法能够降低差量包的维护成本低,且实现静默升级,容灾性高。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种终端设备升级方法、终端设备升级装置、终端设备、计算机设备和存储介质。
背景技术
随着计算机技术的发展,在终端设备的使用过程中,会涉及到需要对终端设备使用的***进行升级的情形。传统的终端设备进行升级的方案中,通常是在终端设备开机后,通过与服务器通信,对比终端设备本地版本与服务器最新版本是否一致以确认是否需要升级。若需要升级,则从服务器下载升级包进行升级。传统的升级技术中,终端设备从服务器下载的升级包时,服务器通常是基于终端设备已安装***的旧版本,查找到该旧版本与服务器的新***的新版本之间的差量包,发送给终端设备进行更新。然而,不同的终端设备有些经常更新,有些可能会服务器发布多个不同的新版本之后才更新,导致各个不同的终端设备的***版本并不相同,使得服务器需要维护各种不同版本之间的差量包,差量包的维护成本高。
发明内容
基于此,有必要针对上述技术问题,提供一种终端设备升级方法、装置、终端设备、计算机设备和存储介质。
一种终端设备升级方法,所述方法包括:
在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;
使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
一个实施例中,在使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本之前,还包括步骤:
获取***升级差量包,并将所述***升级差量包存储到差量包存储区。
一个实施例中,所述升级脚本为shell脚本。
一个实施例中,获取***升级差量包之后,并将所述***升级差量包存储到差量包存储区之前,还包括:
对获取的所述***升级差量包进行合法性校验。
一种终端设备升级方法,所述方法包括:
检测差量包下发触发条件;
在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
将所述***升级差量包向所述终端设备发送。
一个实施例中,在接收到所述终端设备发送的***升级请求时,确定满足差量包下发触发条件。
一个实施例中,在确定发布了新的***版本,且生成了对应的所述***升级差量包时,确定满足差量包下发触发条件。
一个实施例中,还包括步骤:使用生成的所述***升级差量包,覆盖已存储的***升级差量包。
一种终端设备升级装置,所述装置包括:
版本恢复模块,用于在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;
升级模块,用于使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
一种终端设备升级装置,所述装置包括:
下发条件检测模块,用于检测差量包下发触发条件;
差量包获取模块,用于在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
发送模块,用于将所述***升级差量包向所述终端设备发送。
一种终端设备,所述终端设备包括:处理器,存储第一操作***的第一操作***存储区,存储第二操作***的第二操作***存储区,用以存储***升级差量包的差量包存储区,以及用以存储***基础版本的安装包的基础包存储区,所述***升级差量包为***最新版本的安装包与所述***基础版本的安装包之间的差量包;
所述处理器在运行所述第一操作***的状态下,使用所述基础安装包,将所述第二操作***的***版本恢复到所述***基础版本,并使用所述***升级差量包,将恢复到所述***基础版本的所述第二操作***,升级到所述***最新版本。
一个实施例中,所述升级脚本为shell脚本。
一个实施例中,所述处理器执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
一个实施例中,所述处理器将所述第二操作***升级到***最新版本之后,修改设备启动***参数或者修改预定磁盘位置的标志位,使得下次开机时运行在所述第二操作***。
一个实施例中,所述处理器在下次开机时运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改设备启动***参数或者修改预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如下方法的步骤:
检测差量包下发触发条件;
在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
将所述***升级差量包向所述终端设备发送。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中的方法的步骤。
上述终端升级方法、装置、终端设备计算机设备和存储介质,在终端需要进行升级时,服务器为终端提供的是***最新版本与***基础版本之间的***升级差量包,终端设备在进行升级时,针对的是当前未处于运行状态的第二操作***,将其先恢复到***基础版本后,再用***升级差量包升级到***最新版本,从而,无论终端设备当前是什么版本,都可以通过***升级差量包升级到***最新版本,而服务器也只需维护***最新版本与***基础版本之间的***升级差量包,差量包的维护成本低,且终端设备的升级过程中,不影响当前运行的第一操作***的运行使用,实现静默升级,容灾性高。
附图说明
图1为一个实施例中的终端设备升级方法的应用环境图;
图2为一个实施例中的终端设备升级方法的流程示意图;
图3为另一个实施例中的终端设备升级方法的流程示意图;
图4为一个实施例中的终端设备升级时的交互流程示意图;
图5为一个实施例的终端设备升级方法与传统方法的流程对比示意图;
图6为一个实施例中终端设备升级装置的结构框图;
图7为另一个实施例中终端设备升级装置的结构框图;
图8为一个实施例中的终端设备的存储分区的示意图;
图9为一个实施例的终端设备与传统终端设备的存储分区的对比示意图;
图10为一个实施例的终端设备的内部结构示意图;
图11为一个实施例中计算机设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的终端设备升级方法,可以应用于如图1所示的应用环境中。其中,终端设备102通过网络与服务器104进行通信。终端设备102出厂时,会安装有操作***,以使得终端设备102能够运行该操作***,以实现终端设备的相关功能。其中,终端设备102运行的操作***,基于开发以及功能更新等各种需要,会需要进行更新,服务器104基于操作***的***最新版本与操作***的***基础版本,确定两个版本之间的***升级差量包,并将该***升级差量包发送给终端设备102,以使得终端设备102基于该***升级差量包对其操作***进行更新。终端设备102存储有两个操作***,在其中一个操作***运行时,另一个操作***作为备份。终端设备102接收到***升级差量包后,对未处于运行状态的操作***进行升级,不影响终端设备102的运行。其中,终端102可以是任何可能的终端设备,在本申请的一些具体实施例中,该终端102可以是例如车机等专用的设备。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种终端设备升级方法,以该方法应用于图1中的终端设备102为例进行说明,包括以下步骤S201和步骤S202。
步骤S201:在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本。
其中,终端设备存储有两个操作***,在其中一个操作***运行时,另一个操作***作为备份。第一操作***指终端设备当前正在运行的操作***,第二操作***指终端设备没有运行的处于备份状态的操作***。***基础版本,是指该操作***最早发布的***版本,通常在终端设备出厂时安装在终端设备上。
其中,基础安装包是***基础版本的安装包,是指该操作***最早发布的***版本对应的安装包,通常也是指终端设备出厂时安装在终端设备上的操作***的安装包。其中,终端设备在出厂时,除了已经安装有该基础***版本之外,同时还在该终端设备上存储有该基础***版本的安装包,以便于终端设备能够基于该基础安装包恢复出厂设置,以及基于该基础安装包执行本申请的升级操作。
在一些实施例中,在使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本之前,还包括步骤:
获取***升级差量包,并将所述***升级差量包存储到差量包存储区。
从而,可以在确定以及获得***升级差量包,并将该***升级差量包存储到了差量包存储区之后,再执行升级过程。
其中,获取***升级差量包时,终端设备可以直接与服务器通信来获得该***升级差量包,也可以是将***升级差量包存储到移动存储设备,例如U盘、移动硬盘,然后终端设备检测到移动存储设备中存在***升级差量包时,从移动存储设备中获取该***升级差量包。本申请实施例不对终端设备获取***升级差量包的方式做具体限定。在下述相关实施例中,以从服务器获得***升级差量包为例进行说明。
其中,在获取***升级差量包之后,还可以对获取的所述***升级差量包进行合法性校验,并在合法性校验通过后,再将所述***升级差量包存储到差量包存储区。以确保所获得并存储的***升级差量包是合法的差量包。其中,合法性校验具体可以是包括各种可能的校验方式,例如校验***升级差量包的完整性,校验***升级差量包是合法的服务器发送的等等。具体的校验方式可以采用任何可能的校验方式,例如在校验***升级差量包的完整性时,可以是服务器对生成的***升级差量包通过运算得到校验码,并将该校验码携带在***升级差量包中。终端设备接收到***升级差量包时,也对接收到的***升级差量包采用同样的方式计算校验码,并与***升级差量包携带的校验码进行比对,若比对一致,则认为是完整的。再例如在校验服务器的合法性时,可以通过第三方为服务器发布证书,通过对服务器发送过来的***升级差量包中携带的证书,进行合法性验证。可以理解的是,在其他实施例中,也可以采用其他的方式进行校验,以及校验其他的需要校验的内容。
其中,在合法性校验不通过时,则可以重新从服务器获得该***升级差量包,具体重新获取的时机不限。此外,在从服务器下载该***升级差量包的过程中,如该终端设备断电或者重启,该***升级差量包因为未下载完整,因此在终端设备开机后,可以重新或者继续下载,具体可以是通过断点续传的方式进行下载。其中,断点续传是指在下载时,将下载任务划分为几个部分,每一个部分采用一个线程进行上传或下载。如果碰到故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载,以节省时间,提高速度。
其中,在使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本时,可以使用任何可能的方式进行,例如采用将第二操作***恢复到出厂设置的方式恢复到所述***基础版本。
步骤S202:使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
***最新版本是指开发人员为该操作***进行开发的最新的***版本,通常在原来的***版本上增加了新的功能、和/或优化了相关性能等等。
一个实施例中,使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,可以包括如下步骤:
执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
其中,预升级脚本在本申请实施例中也称为pre升级脚本,从而在调用***升级差量包中的升级脚本之前,先执行pre升级脚本,通过pre升级脚本来解压升级包并调用升级包内的升级脚本进行升级,实现了对升级脚本的分级,更为灵活方便。
在其中一个实施例中,在将所述第二操作***升级到***最新版本之后,还包括:修改设备启动***参数,使得下次开机时运行在所述第二操作***。从而,在将第二操作***升级到***最新版本之后,还需要修改设备启动***参数,才会使得终端设备在下次开机时,运行在升级到***最新版本的第二操作***。若没有修改设备启动***参数,则终端设备在下次开机时,仍然会运行在第一操作***。
在一些实施例中,在将所述第二操作***升级到***最新版本之后,还包括:在预定磁盘位置写入标志位,使得下次开机时在所述预定磁盘位置读取到所述标志位时运行在所述第二操作***。从而,在将第二操作***升级到***最新版本之后,还可以在预定磁盘位置写入标志位,通过该标志位来标识第二操作***已经升级到了新版本,从而在下次开机时才会运行升级到***最新版本的第二操作***。若没有在预定磁盘位置写入标志位,则终端设备在下次开机时,仍然会运行在第一操作***。其中,预定磁盘位置可以是任何可能的磁盘位置,只要在终端设备的开机过程中运行某个具体的操作***之前会访问即可。
可以理解的是,在其他实施例中,也可以通过其他方式在终端设备中进行标记,终端设备开机时会读取该标记的信息,从而通过该标记指示终端设备运行在第二操作***。在下述相关实施例中,以修改设备启动***参数为例进行说明。在通过其他的标记的情况下,可以采用类似的方式进行处理。
在一些实施例中,在修改了设备启动***参数或者修改了预定磁盘位置的标志位,终端设备在下次开始时运行在升级到***最新版本的第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。从而,在最新发布的***版本存在问题需要召回时,还可以通过接收服务器的***回退指令,通过修改设备启动参数,直接在下一次开机时运行在第一操作***,可以很便利地回退到更早版本,可以远程回退***版本。
其中,在根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位之后,在下次开机运行在所述第一操作***时,对于已经更新的第二操作***,可以基于存储的***基础版本的基础安装包,将此时未处于运行状态的第二操作***的***版本恢复到所述***基础版本。
在一些实施例中,在根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位之后,也可以是在下次开机运行在第一操作***时,不对已经更新的第二操作***做任何处理,而是在最新发布的***版本测试通过后或者再发布更新的***版本后,采用如上所述实施例中的方式,基于测试通过后或者更新的***版本与***基础版本对应的最新的***升级差量包,将第二操作***的***版本更新到***版本测试通过后或者发布的更新的***版本。如上所述,由于本申请实施例在进行更新时,是先恢复到基础版本,再用***升级差量包更新到最新版本,因此该升级过程不影响设备的正常使用,避免了直接在存在问题的***版本的基础上直接进行更新可能存在的影响,且处理方式便捷简单。
一个实施例中,所述第一操作***和所述第二操作***的***类型相同,而且,在终端设备下次开机时运行在升级到***最新版本的所述第二操作***时,可以不使用所述***升级差量包对未处于运行状态的所述第一操作***进行升级。从而,在第一操作***和第二操作***的***类型相同的情形下,当终端设备下次开机时运行在第二操作***时,此时第一操作***会处于备份状态,由于已经对第二操作***进行了更新,此时,可以不用上述***升级差量包对第一操作***更新,以便于在***最新版本出现问题时,可以快速地回退到较早版本的第一操作***,而不至于回退到***基础版本。
一个实施例中,也可以在上述完成了升级过程修改了设备启动***参数或者修改了所述预定磁盘位置的标志位之后,删除所述***升级差量包。从而在终端设备下次开机时运行在升级到***最新版本的所述第二操作***时,由于已经不存在存储的***升级差量包,而在运行的第二操作***是***最新版本,因此不会对此事处于备份状态的第一操作***进行更新。以便于在***最新版本出现问题时,可以快速地回退到较早版本的第一操作***。
应当理解的是,当终端设备运行在升级到***最新版本的所述第二操作***的过程中,若服务器又发布了更新的***版本,例如第二操作***的***最新版本为V3.0,而服务器又发布了更新的***版本V4.0,则服务器会发布更新的***版本V4.0的安装包与基础安装包之间的最新的***升级差量包,此时,则可以使用最新的***升级差量包,采用如上所述的本申请实施例的方法对该处于备份状态的第一操作***进行更新。此时,处于备份状态的第一操作***实际上相当于上述实施例中尚未升级的第二操作***。
在一个实施例中,如图3所示,提供了一种终端设备升级方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤S301和步骤S302。
步骤S301:检测差量包下发触发条件。
其中,差量包下发触发条件,是触发服务器将***升级差量包发送给终端设备的条件。基于实际技术需要的不同,可以设定不同的差量包下发触发条件。
在一些实施例中,可以是服务器可以在接收到所述终端设备发送的***升级请求时,确定满足差量包下发触发条件。
其中,可以终端设备在获知服务器发布了新的***版本时,并确定终端设备自身的版本低于***最新版本时,向服务器发送***升级请求。从而,服务器在接收到终端设备的***升级请求时,可以确定差量包下发触发条件,并可以直接进入后续的步骤。例如,终端设备可以是定期向服务器发送最新版本查询请求,以获知服务器的***最新版本。服务器也可以是在发布了新的***版本时,主动将***最新版本的信息发送给终端设备。终端设备在获得服务器的***最新版本的信息后,可以将其与自身的版本比较,以确认是否需要向服务器发送***升级请求。
在另一种实现方式中,终端设备可以是定期向服务器发送***升级请求,并在该***升级请求中携带终端设备当前的***版本信息。服务器将该***版本信息与***最新版本的信息进行比较,若不一致,则认为终端设备需要更新,确定满足差量包下发触发条件,从而进入后续的处理过程。其中,当终端设备存储的第一操作***和第二操作***的***版本不相同时,该携带的终端设备当前的***版本信息,可以是版本更高的***版本信息。例如,若第一操作***的***版本信息为V2.3,而第二操作***的***版本信息为V2.0,而通常数字越高的版本越新,则携带的终端设备的当前的***版本信息应当为V2.3。
在一些实施例中,可以是在发布了新的***版本时,并在记录的相关信息中确定未向该终端设备发送过***升级差量包时,可以认为满足差量包下发触发条件,以主动将***最新版本的***升级差量包发送给该终端设备。
步骤S302:在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包。
其中,***基础版本,是指该操作***最早发布的***版本,通常在终端设备出厂时安装在终端设备上。基础安装包是***基础版本的安装包,是指该操作***最早发布的***版本对应的安装包,通常也是指终端设备出厂时安装在终端设备上的操作***的安装包。其中,终端设备在出厂时,除了已经安装有该基础***版本之外,同时还在该终端设备上存储有该基础***版本的安装包,以便于终端设备能够基于该基础安装包恢复出厂设置,以及基于该基础安装包执行本申请的升级操作。
***最新版本是指开发人员为该操作***进行开发的最新的***版本,通常在原来的***版本上增加了新的功能、和/或优化了相关性能等等。
其中,在获取上述***升级差量包之前,还需要生成该***升级差量包并进行存储,一个实施例中,***升级差量包的生成方式可以包括如下步骤S3021至步骤S3024。
步骤S3021:基于所述***最新版本的安装包以及所述基础安装包,生成原始差量包。
在基于***最新版本的安装包和基础安装包生成原始差量包时,可以用任何获得***最新版本的安装包与基础安装包之间的差量,能够获得二者的差量升级包即可。以操作***为例Android***为例,其在生成基础安装包时,可以用Android***的makeotapackage工具得到全部的***安装包。当***或者应用有修改需要升级时,同样可以使用make otapackage工具得到新的***安装包,即***最新版本的安装包。然后可以使用Android***的ta_from_target_files工具,得到二者之间的差量包,本申请实施例中称为原始差量包。将基础安装包记为base.zip,***最新版本的安装包记为target.zip,则使用ta_from_target_files工具得到的原始差量包可以记为update_src_ota.zip。
步骤S3022:解压所述原始差量包,获得所述原始差量包中的原始升级脚本。
上述得到的完整的原始差量包,可以对其进行解压,从而获得解压包中包含的内容,例如原始升级脚本。可以理解的是,对原始差量包解压后,获得的除了原始升级脚本,还会包含有其他的内容,例如***目录。
步骤S3023:将所述原始升级脚本中的语法改写为shell脚本,获得改写后的升级脚本。
以操作***的***类型为Android***为例,可以发现,在其生成的原始升级脚本中,其语法与shell脚本语法类似,而shell脚本可以适用于多种不同的***,例如Linux***、Android***、QNX***等,因此,通过将原始升级脚本改写为shell脚本,可以适用于多个不同的***类型的操作***,提高通用性和跨平台适用性。
其中,具体地,在进行改写时,可以结合原始升级脚本和shell脚本的语法结构改写,例如:
针对删除文件/data/init.log的命令,在原始脚本文件中的语法内容为:delete(“/data/init.log”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:rm-f/data/init.log
针对删除文件夹/data/dalvik-cache的命令,在原始脚本文件中的语法内容为:delete_recursive(“/data/dalvik-cache”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:rm-rf/data/dalvik-cache。
针对解压ROM包里的my.zip文件至/system的命令,其原始脚本文件中的语法内容为:package_extract_file(“my.zip”,“/system”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:tar-zxvf my.zip-C/system。
可以理解的是,针对其他的命令,可以采用类似的方式进行改写,本申请实施例中不进行穷举。
步骤S3024:基于所述改写后的升级脚本重新打包,生成所述***升级差量包。
在获得改写后的升级脚本后,可以基于改写后的升级脚本重新打包,生成最终的***升级差量包。其中,在进行重新打包时,除了包含有改写后的升级脚本,还会包含上述解压后未做处理的其他解压后的内容。
其中,在上述生成所述***升级差量包之后,还可以进一步使用该新生成的***升级差量包,覆盖已经存储的***升级差量包,即确保服务器这一侧只保存最新的***版本与***基础版本之间的差量包,减少服务器的维护成本。在一些实施例中,可以是先将新生成的***升级差量包存储后,将之前已存储的***升级差量包仍然保留一段时间,待新***稳定后再行删除。
步骤S303:将所述***升级差量包向所述终端设备发送。
将所述***升级差量包向所述终端设备发送时,可以是基于服务器与终端设备之间的通信方式进行发送,而且是可以通过断点续传的方式发送,以节省时间,提高速度。
一个实施例中,在将所述***升级差量包向所述终端设备发送之后,还可以包括步骤:
向所述终端设备发送***回退指令,所述***回退指令用以指示所述终端设备修改设备启动***参数或者修改预定磁盘位置的标志位,使得所述终端设备下次开机时运行在未使用所述***升级差量包进行更新的第一操作***。
从而,在最新发布的***版本存在问题需要召回时,还可以通过向终端设备发送***回退指令,以指示终端设备通过修改设备启动参数,直接在下一次开机时运行在第一操作***,可以很便利地回退到更早版本,可以远程指示终端设备回退***版本。
基于如上所述的实施例,图4示出了一个实施例中的终端设备升级时的交互示意图。
在实际技术使用中,需要制作操作***的***基础版本的基础安装包base.zip,该***基础版本会安装在发布的终端设备上,同时该基础安装包可同时烧写在终端设备的存储区。在终端设备存在两个存储操作***的分区,第一操作***存储区和第二操作***存储区时,此时,在第一操作***存储区和第二操作***存储区,烧写的都是该***基础版本的***及两个操作***存储区烧写的操作***相同。同时,在终端设备存在两个不同的分区来分别存储基础安装包和***升级差量包的情况下,该基础安装包base.zip可烧写在终端设备的用以存储基础安装包的基础包存储区。此时,终端设备的用以存储***升级差量包的差量包存储区未存储有任何安装包。
在该终端设备出厂后的实际开机使用过程中,用于两个操作***存储区烧录的操作***相同,因此可以使用第一操作***和第二操作***中的任意一个来运行。通常情况下,可以预先指定运行哪一个操作***,例如通过设置UBoot参数来指示设备开机时启动哪一个操作***。
在终端设备出厂一段时间后,该终端设备使用的操作***可能需要做修改,会发布新的***版本,并生成***最新版本的安装包与基础安装包之间的差量包,以供各终端设备下载。
以操作***为例Android***为例,服务器可以用Android***的makeotapackage工具得到基础安装包base.zip。当***或者应用有修改需要升级时,同样可以使用make otapackage工具得到***最新版本的安装包target.zip。然后可以使用Android***的ta_from_target_files工具,得到二者之间的差量原始差量包update_src_ota.zip。
随后,服务器解压该原始差量包update_src_ota.zip,一个实施例中得到的目录结构如下所述:
其中,在该目录结构中,system目录主要用来更新***的一些应用或则应用会用到的一些库等等,updater-script是原始升级脚本。进一步分析updater-script升级脚本可以发现,其语法结构和linux/android/qnx下的shell脚本语法是非常类似,因此,对其进行改写,将原始升级脚本改写为shell脚本。例如:
针对删除文件/data/init.log的命令,在原始脚本文件中的语法内容为:delete(“/data/init.log”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:rm-f/data/init.log
针对删除文件夹/data/dalvik-cache的命令,在原始脚本文件中的语法内容为:delete_recursive(“/data/dalvik-cache”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:rm-rf/data/dalvik-cache。
针对解压ROM包里的my.zip文件至/system的命令,其原始脚本文件中的语法内容为:package_extract_file(“my.zip”,“/system”)。将其改写为shell脚本,则在shell脚本内的语法内容变为:tar-zxvf my.zip-C/system。
从而,将解压后的update_src_ota.zip中updater-script改写完成后,重新打包,得到更通用灵活的升级包update_dst_ota.zip。
终端设备在开机后使用的过程中,定时或者基于接收到的指令从服务器查询***最新版本的信息。并将获得的服务器的***最新版本的信息后,与自身存储的版本最高的***版本信息进行比较,当二者不一致时,说明需要升级,从而向服务器发送***升级请求,从服务器获得该***最新版本的***升级差量包update_dst_ota.zip,并存储在该终端设备的差量包存储区。
在***升级差量包update_dst_ota.zip下载完成后,由于终端设备是双***分区,当升级包校验合格后,终端设备不需要重启***即可进行升级,完全静默升级,且升级过程车机可以正常使用。即终端设备当前正在运行的是第一操作***,则在运行第一操作***的过程中,执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,先使用存储的***基础版本的基础安装包base.zip,将当前未处于运行状态的第二操作***的***版本恢复到***基础版本,然后用差量包存储区存储的***升级差量包update_dst_ota.zip,将第二操作***升级到***最新版本。
通过上述过程可以发现,服务器只需要维护一份***最新版本的最新安装包和基础安装包base.zip的差量包就可以了。举例来说,假设***升级版本依次记为A、B、C、D、E,即***版本升级到B版本时,维护差量包ΔBA即可。而当***版本再次做了升级,升级到了C版本,则只需要维护差量包ΔCA,无需维护差量包ΔBA,其他的依此类推。而在终端设备升级时,也是先回退到***基础版本,再升级到最新版本,因此,即使终端设备错过了A版本升级到B版本的时机,也完全可以直接从A版本升级取C版本。而且,结合图5所示的流程对比示意图可见,相对于传统的升级方式需要提示用户,得到用户同意后重启设备,重启设备后调用升级脚本来解压升级包,然后采用解压后的升级包进行升级的方式。本申请实施例的方式无需重启,完全静默升级,升级过程中终端设备可以正常使用,而且升级过程中,先执行一个pre升级脚本,此以解压升级包并调用升级包内的升级脚本进行升级,从而对升级脚本进行分级,具体的升级过程是在升级包的脚本内,更为灵活方便。而且该升级脚本是改写后的shell脚本,可用于linux,android,qnx***等***,提高了本申请实施例方案的通用性可跨平台性。
在将第二操作***升级到***最新版本后,需修改设备启动***参数Uboot或者修改预定磁盘位置的标志位,使得终端设备在下次开机时,运行在升级到***最新版本的第二操作***。在修改了设备启动***参数Uboot或者修改了预定磁盘位置的标志位的情况下,终端设备下次开机时,会运行在升级到***最新版本的第二操作***。
本申请实施例提供的终端设备升级方法,大大提高了终端设备升级过程中的容灾性,例如:
若***升级差量包的下载过程中断电或者终端设备进行了重启,因为***升级差量包不完整,不会校验通过,下次开机时仍然会以第一操作***运行,且可以对未下载完的***升级差量包进行断点续传。
若在使用***升级差量包进行升级的过程中断电或者重启,比如当前运行在第一操作***Sytem1,在对第二操作***System2进行升级的过程中,因为升级流程没有完成,设备启动***参数UBoot或者预定磁盘位置的标志位没有修改,而且差量包存储区仍然保存有差量包,下次开机后,***仍然会进入第一操作***System1,并会重新执行升级脚本,不会出现无法开机的情况。
若因未知原因造成的升级失败,比如当前运行在第一操作***Sytem1,在对第二操作***System2进行升级,因为升级流程没有完成,设备启动***参数UBoot或者预定磁盘位置的标志位没有修改,而且差量包存储区仍然保存有差量包,下次开机后,***仍然会进入第一操作***System1,并会重新执行升级脚本,不会出现终端设备变板砖的情况。
在没有网络的情况下,若将终端设备恢复了出厂设置,例如将第一操作***Sytem1和第二操作***System2刷为***基础版本,由于差量包存储区仍然保存有差量包,因此仍然可以执行升级脚本升级到新的版本。
若新发布的版本有问题,服务器也可以给车机下发命令,改写设备启动***参数UBoot或者预定磁盘位置的标志位,下次开机时,自动切换到更稳定版本的第一操作***System1,达到了远程回退版本的目的。
应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,这些流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种终端设备升级装置,该装置可设置于终端设备,包括:
版本恢复模块601,用于在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;
升级模块602,用于使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
一个实施例中,升级模块602,执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
一个实施例中,所述升级脚本为shell脚本。
一个实施例中,升级模块602,将所述第二操作***升级到***最新版本之后,修改设备启动***参数,使得下次开机时运行在所述第二操作***。
一个实施例中,升级模块602,将所述第二操作***升级到***最新版本之后,在预定磁盘位置写入标志位,使得下次开机时在所述预定磁盘位置读取到所述标志位时运行在所述第二操作***。
一个实施例中,还包括***回退模块,在终端设备运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
一个实施例中,升级模块602,修改设备启动***参数或者修改预定磁盘位置的标志位之后,还删除所述***升级差量包。
在一个实施例中,如图7所示,提供了一种终端设备升级装置,该装置可设置于服务器,包括:
下发条件检测模块701,用于检测差量包下发触发条件;
差量包获取模块702,用于在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
发送模块703,用于将所述***升级差量包向所述终端设备发送。
一个实施例中,还包括差量包生成模块,用于生成所述***升级差量包。
一个实施例中,差量包生成模块包括:
原始包生成模块,用于基于所述***最新版本的安装包以及所述基础安装包,生成原始差量包;
解压模块,用于解压所述原始差量包,获得所述原始差量包中的原始升级脚本;
改写模块,用于将所述原始升级脚本中的语法改写为shell脚本,获得改写后的升级脚本;
重打包模块,用于基于所述改写后的升级脚本重新打包,生成所述***升级差量包。
一个实施例中,差量包生成模块,还使用生成的所述***升级差量包,覆盖已存储的***升级差量包。
一个实施例中,还包括回退控制模块,用于向所述终端设备发送***回退指令,所述***回退指令用以指示所述终端设备修改设备启动***参数或者修改预定磁盘位置的标志位,使得所述终端设备下次开机时运行在未使用所述***升级差量包进行更新的第一操作***。
关于终端设备升级装置的具体限定可以参见上文中对于终端设备升级方法的限定,在此不再赘述。上述终端设备升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
一个实施例中,提供了一种终端设备,包括处理器和存储区,其中,如图8所示,该存储区包括有:存储第一操作***的第一操作***存储区,存储第二操作***的第二操作***存储区,用以存储***升级差量包的差量包存储区,以及用以存储***基础版本的安装包的基础包存储区,所述***升级差量包为***最新版本的安装包与所述***基础版本的安装包之间的差量包。
其中,所述处理器在运行所述第一操作***的状态下,使用所述基础安装包,将所述第二操作***的***版本恢复到所述***基础版本,并使用所述***升级差量包,将恢复到所述***基础版本的所述第二操作***,升级到所述***最新版本。
图9中示出了一个实施例中本申请的终端设备与传统终端设备的存储分区的对比示意图。如图9中9-1所示,传统的终端设备,存在UBOOT存储区、UBOOT Flag Param存储区、***SyStem1存储区、User Config Data存储区、以及出厂***包存储区,以分别存储UBOOT参数、UBOOT Flag Param、操作***SyStem1、用户配置数据User Config Data、以及基础数据包base.zip。其只存在一个***存储区,因此在设备升级过程中,会影响终端设备的运行,需要进行***的重启。
而如图9中9-2所示,本申请实施例提供的终端设备,存在UBOOT存储区、UBOOTFlag Param存储区、第一操作***存储区SyStem1、第二操作***存储区SyStem2、UserConfig Data存储区、OTA差量包存储区以及出厂***包存储区,以分别存储UBOOT参数、UBOOT Flag Param、其中一个操作***SyStem1、另一个操作***SyStem2、用户配置数据User Config Data、***升级差量包以及基础数据包base.zip。从而,因为是双***分区,当***升级差量包校验合格后,不需要重启***即可进行升级,完全静默升级,且升级过程车机可以正常使用。而且,通过设置***升级差量包,可以实现***升级差量包的断点续传的下载,若升级过程中出现故障,终端设备也可以在下次开机后重新进行升级,不影响终端设备的正常使用。
一个实施例中,所述处理器执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
一个实施例中,所述升级脚本为shell脚本。
一个实施例中,所述处理器将所述第二操作***升级到***最新版本之后,修改设备启动***参数或者修改预定磁盘位置的标志位,使得下次开机时运行在所述第二操作***。
一个实施例中,所述处理器在下次开机时运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
关于终端设备的处理器进行升级时的具体限定可以参见上文中对于终端设备升级方法的限定,在此不再赘述。一个实施例中的终端设备的内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口,在一些可能的产品形式中,该终端设备也可以包括显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有第一操作***、第二操作***、计算机程序、***升级差量包和基础安装包。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的服务器进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种终端设备升级方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储***最新版本与***基础版本之间的***升级差量包。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种终端设备升级方法。
本领域技术人员可以理解,图10、11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行如上所述的与终端设备升级相关的服务器处理步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上所述的终端设备或者服务器执行的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (33)
1.一种终端设备升级方法,其特征在于,所述终端设备存储有两个操作***,在其中一个操作***运行时,另一个操作***作为备份;所述方法包括:
在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;所述第一操作***和所述第二操作***的***类型相同,所述***基础版本是指操作***最早发布的***版本;
使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
2.根据权利要求1所述的方法,其特征在于,使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,包括:
执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
3.根据权利要求2所述的方法,其特征在于,所述升级脚本为shell脚本。
4.根据权利要求1所述的方法,其特征在于,在使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本之前,还包括步骤:
获取***升级差量包,并将所述***升级差量包存储到差量包存储区。
5.根据权利要求4所述的方法,其特征在于,获取***升级差量包之后,并将所述***升级差量包存储到差量包存储区之前,还包括:
对获取的所述***升级差量包进行合法性校验。
6.根据权利要求1或2所述的方法,其特征在于,将所述第二操作***升级到***最新版本之后,还包括:
修改设备启动***参数,使得下次开机时运行在所述第二操作***;
或者
在预定磁盘位置写入标志位,使得下次开机时在所述预定磁盘位置读取到所述标志位时运行在所述第二操作***。
7.根据权利要求6所述的方法,其特征在于,还包括步骤:
在下次开机时运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述设备启动***参数或者修改所述预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
修改设备启动***参数或者修改所述预定磁盘位置的标志位之后,删除所述***升级差量包;
或者
在下次开机时运行在所述第二操作***时,不使用所述***升级差量包对所述第一操作***进行升级。
9.一种终端设备升级方法,其特征在于,所述方法包括:
检测差量包下发触发条件;
在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
将所述***升级差量包向所述终端设备发送,以使得所述终端设备在第一操作***处于运行状态、使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本的情况下,使用所述***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***基础版本是指操作***最早发布的***版本。
10.根据权利要求9所述的方法,其特征在于,所述***升级差量包的生成方式包括:
基于所述***最新版本的安装包以及所述基础安装包,生成原始差量包;
解压所述原始差量包,获得所述原始差量包中的原始升级脚本;
将所述原始升级脚本中的语法改写为shell脚本,获得改写后的升级脚本;
基于所述改写后的升级脚本重新打包,生成所述***升级差量包。
11.根据权利要求9所述的方法,其特征在于,还包括步骤:
向所述终端设备发送***回退指令,所述***回退指令用以指示所述终端设备修改设备启动***参数或者修改预定磁盘位置的标志位,使得所述终端设备下次开机时运行在未使用所述***升级差量包进行更新的第一操作***。
12.根据权利要求9所述的方法,其特征在于,在接收到所述终端设备发送的***升级请求时,确定满足差量包下发触发条件。
13.根据权利要求9所述的方法,其特征在于,在确定发布了新的***版本,且生成了对应的所述***升级差量包时,确定满足差量包下发触发条件。
14.根据权利要求9所述的方法,其特征在于,所述方法还包括:使用生成的所述***升级差量包,覆盖已存储的***升级差量包。
15.一种终端设备升级装置,其特征在于,所述终端设备存储有两个操作***,在其中一个操作***运行时,另一个操作***作为备份;所述装置包括:
版本恢复模块,用于在运行第一操作***的状态下,使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本;所述第一操作***和所述第二操作***的***类型相同,所述***基础版本是指操作***最早发布的***版本;
升级模块,用于使用***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***升级差量包为所述基础安装包与所述***最新版本的安装包之间的差量包。
16.根据权利要求15所述的装置,其特征在于,所述升级模块,执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
17.根据权利要求16所述的装置,其特征在于,所述升级脚本为shell脚本。
18.根据权利要求15所述的装置,其特征在于,所述升级模块,将所述第二操作***升级到***最新版本之后,修改设备启动***参数,使得下次开机时运行在所述第二操作***。
19.根据权利要求15所述的装置,其特征在于,所述升级模块,将所述第二操作***升级到***最新版本之后,在预定磁盘位置写入标志位,使得下次开机时在所述预定磁盘位置读取到所述标志位时运行在所述第二操作***。
20.根据权利要求18所述的装置,其特征在于,还包括***回退模块,在终端设备运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述设备启动***参数,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
21.根据权利要求19所述的装置,其特征在于,还包括***回退模块,在终端设备运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改所述预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
22.一种终端设备升级装置,所述装置包括:
下发条件检测模块,用于检测差量包下发触发条件;
差量包获取模块,用于在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
发送模块,用于将所述***升级差量包向所述终端设备发送,以使得所述终端设备在第一操作***处于运行状态、使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本的情况下,使用所述***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***基础版本是指操作***最早发布的***版本。
23.根据权利要求22所述的装置,其特征在于,所述装置还包括差量包生成模块,用于生成所述***升级差量包。
24.根据权利要求23所述的装置,其特征在于,差量包生成模块包括:
原始包生成模块,用于基于所述***最新版本的安装包以及所述基础安装包,生成原始差量包;
解压模块,用于解压所述原始差量包,获得所述原始差量包中的原始升级脚本;
改写模块,用于将所述原始升级脚本中的语法改写为shell脚本,获得改写后的升级脚本;
重打包模块,用于基于所述改写后的升级脚本重新打包,生成所述***升级差量包。
25.根据权利要求23所述的装置,其特征在于,差量包生成模块,还使用生成的所述***升级差量包,覆盖已存储的***升级差量包。
26.根据权利要求22所述的装置,其特征在于,还包括回退控制模块,用于向所述终端设备发送***回退指令,所述***回退指令用以指示所述终端设备修改设备启动***参数或者修改预定磁盘位置的标志位,使得所述终端设备下次开机时运行在未使用所述***升级差量包进行更新的第一操作***。
27.一种终端设备,所述终端设备存储有两个操作***,在其中一个操作***运行时,另一个操作***作为备份;所述终端设备包括:处理器,其特征在于,还包括:存储第一操作***的第一操作***存储区,存储第二操作***的第二操作***存储区,用以存储***升级差量包的差量包存储区,以及用以存储***基础版本的安装包的基础包存储区,所述***升级差量包为***最新版本的安装包与所述***基础版本的安装包之间的差量包;所述第一操作***和所述第二操作***的***类型相同,所述***基础版本是指操作***最早发布的***版本;
所述处理器在运行所述第一操作***的状态下,使用基础安装包,将所述第二操作***的***版本恢复到所述***基础版本,并使用所述***升级差量包,将恢复到所述***基础版本的所述第二操作***,升级到所述***最新版本。
28.根据权利要求27所述的终端设备,其特征在于,所述处理器执行预升级脚本,通过所述预升级脚本解压所述***升级差量包,并调用所述***升级差量包内的升级脚本进行升级,将所述第二操作***从所述***基础版本升级到所述***最新版本。
29.根据权利要求28所述的终端设备,其特征在于,所述升级脚本为shell脚本。
30.根据权利要求27所述的终端设备,其特征在于,所述处理器将所述第二操作***升级到***最新版本之后,修改设备启动***参数或者修改预定磁盘位置的标志位,使得下次开机时运行在所述第二操作***。
31.根据权利要求27所述的终端设备,其特征在于,所述处理器在下次开机时运行在所述第二操作***时,若接收到***回退指令,根据所述***回退指令修改设备启动***参数或者修改预定磁盘位置的标志位,使得下次开机时运行在所述第一操作***,并根据所述***回退指令删除存储的所述***升级差量包。
32.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如下方法的步骤:
检测差量包下发触发条件;
在满足差量包下发触发条件时,获取***升级差量包,所述***升级差量包为***基础版本的基础安装包与***最新版本的安装包之间的差量包;
将所述***升级差量包向终端设备发送,以使得所述终端设备在第一操作***处于运行状态、使用存储的***基础版本的基础安装包,将当前未处于运行状态的第二操作***的***版本恢复到所述***基础版本的情况下,使用所述***升级差量包,对恢复到所述***基础版本的所述第二操作***进行升级,将所述第二操作***升级到***最新版本,所述***基础版本是指操作***最早发布的***版本。
33.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376388.7A CN112416406B (zh) | 2020-11-30 | 2020-11-30 | 终端设备升级方法、装置、终端设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376388.7A CN112416406B (zh) | 2020-11-30 | 2020-11-30 | 终端设备升级方法、装置、终端设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416406A CN112416406A (zh) | 2021-02-26 |
CN112416406B true CN112416406B (zh) | 2023-06-23 |
Family
ID=74829020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011376388.7A Active CN112416406B (zh) | 2020-11-30 | 2020-11-30 | 终端设备升级方法、装置、终端设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416406B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113805914B (zh) * | 2021-06-15 | 2022-10-14 | 荣耀终端有限公司 | 操作***升级方法、设备、存储介质及计算机程序产品 |
CN113419756A (zh) * | 2021-06-18 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 一种文件升级方法、装置及电子设备 |
CN113721959A (zh) * | 2021-08-30 | 2021-11-30 | 联想(北京)有限公司 | 一种信息处理方法、装置及电子设备 |
CN114268941A (zh) * | 2021-12-27 | 2022-04-01 | 北京自如信息科技有限公司 | 目标设备升级方法、装置、设备及存储介质 |
CN114389951B (zh) * | 2022-03-02 | 2024-06-18 | 深圳震有科技股份有限公司 | 一种5g网络下的无缝升级方法、网络设备及存储介质 |
CN115756554B (zh) * | 2023-02-13 | 2023-06-30 | 美云智数科技有限公司 | 版本升级方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668081A (zh) * | 2009-09-24 | 2010-03-10 | 宇龙计算机通信科技(深圳)有限公司 | 一种移动终端及其自动升级方法 |
CN104391728A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 软件升级差量包获取方法和相应的升级方法以及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959205B2 (en) * | 2009-07-31 | 2015-02-17 | Hewlett-Packard Development Company, L.P. | Method and system to recognize and inventory applications |
CN106293814B (zh) * | 2016-07-29 | 2020-02-07 | 北京小米移动软件有限公司 | 升级方法及装置 |
-
2020
- 2020-11-30 CN CN202011376388.7A patent/CN112416406B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668081A (zh) * | 2009-09-24 | 2010-03-10 | 宇龙计算机通信科技(深圳)有限公司 | 一种移动终端及其自动升级方法 |
CN104391728A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 软件升级差量包获取方法和相应的升级方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112416406A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416406B (zh) | 终端设备升级方法、装置、终端设备和介质 | |
US7275153B2 (en) | Booting and boot code update system using boot strapper code to select between a loader and a duplicate backup loader | |
KR101003888B1 (ko) | 전자 장치에서의 3-단계 부팅 프로세스 | |
US8539471B2 (en) | Updating firmware of an electronic device | |
US20100169709A1 (en) | System Of Updating Firmware And Method Thereof, And Method Of Creating Firmware | |
US20170322796A1 (en) | Device and method for updating firmware and firmware update system | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
CN109086078B (zh) | 安卓***升级方法、装置、服务器及移动终端 | |
US20170052779A1 (en) | Method and Device for Running Version File | |
CN106951284B (zh) | 基于安卓***应用的用户界面升级方法、装置及智能终端 | |
CN106843947B (zh) | 代码缺陷的处理方法和装置 | |
KR20170067826A (ko) | 펌웨어의 업데이트 방법 | |
CN110597545A (zh) | 一种基于ota组件的热补丁智能升级方法及*** | |
CN114116023A (zh) | 操作***启动方法、设备、存储介质及计算机程序产品 | |
CN114840242A (zh) | 一种电子设备的***升级方法、装置及可读存储介质 | |
KR100729525B1 (ko) | 펌웨어 업데이트 방법 및 시스템 | |
JP2009009391A (ja) | 更新処理ソフトウェア自己更新方法および携帯端末装置 | |
CN111913733A (zh) | 制作自动升级包方法、装置、计算机设备和存储介质 | |
CN113821234B (zh) | 操作***升级方法、设备、存储介质及计算机程序产品 | |
CN113766554A (zh) | 获取WiFi校准数据的方法、装置及WiFi设备校准测试*** | |
US11768669B2 (en) | Installing application program code on a vehicle control system | |
CN112860287A (zh) | ***程序升级方法、装置、计算机设备及存储介质 | |
CN104049985A (zh) | 一种跨文件***的版本在线升级方法和装置 | |
KR102142905B1 (ko) | 통신 단말기의 사용자 파일 시스템 자동 복구 방법 | |
KR102399103B1 (ko) | 파일 시스템 기반 차량 진단 이벤트 메모리 관리 장치 및 방법 |
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 |