CN112363739B - 终端设备的分区镜像在线升级方法、装置、设备及介质 - Google Patents
终端设备的分区镜像在线升级方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112363739B CN112363739B CN202110062410.9A CN202110062410A CN112363739B CN 112363739 B CN112363739 B CN 112363739B CN 202110062410 A CN202110062410 A CN 202110062410A CN 112363739 B CN112363739 B CN 112363739B
- Authority
- CN
- China
- Prior art keywords
- partition
- kernel
- rootfs
- update
- app
- 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
- 238000005192 partition Methods 0.000 title claims abstract description 324
- 238000000034 method Methods 0.000 title claims abstract description 97
- 230000008569 process Effects 0.000 claims description 53
- 230000002452 interceptive effect Effects 0.000 claims description 52
- 238000011084 recovery Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 17
- 230000003993 interaction Effects 0.000 claims description 17
- 239000003550 marker Substances 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000002159 abnormal effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 239000011449 brick Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种终端设备的分区镜像在线升级方法中,确定调整后分区,首先将kernel更新镜像和Rootfs更新镜像备份至所述App分区,形成2个相互备份的Kernel和Rootfs的分区,再将kernel更新镜像和Rootfs更新镜像写入至合并分区中,写入完成后再进行App更新镜像的更新写入,同时在升级的各执行阶段进行相应的阶段标记,在掉电等异常重启情况下,根据交互分区中的阶段标记,以及2个相互备份的Kernel和Rootfs分区镜像,能保证系统再次执行远程升级,保障系统运行的稳定性。本申请还提供了一种终端设备的分区镜像在线升级装置、设备及一种可读存储介质,具有上述有益效果。
Description
技术领域
本申请涉及计算机软件技术领域,特别涉及一种终端设备的分区镜像在线升级方法、装置、设备及一种可读存储介质。
背景技术
使用linux的终端设备(如摄像头)的Flash空间(分区)布局主要包括:uboot、kernel、根文件系统(以下称为Rootfs区)、业务文件代码区(以下称为App区)。因大部分CPU硬件特性,CPU从固定的Flash开始部分加载uboot代码,升级uboot存在不安全特性,所以设备出厂后,uboot不做升级,但是设备出厂后kernel、Rootfs、App三个区需要进行升级,且为了维护产品升级管理,通常这三个分区需同时更新。在进行远程升级操作时,若发生掉电、异常重启等情况,则kernel、Rootfs、App区的数据不能全部更新,升级镜像没有全写入到flash,会导致设备不能启动运行(又称为变砖)。
目前,为了防止系统升级变砖,通常有以下几种方法:增加Flash容量,新增一个用于备份整个升级镜像的空闲分区;或者,增加Flash容量,新增一个用于变砖后恢复的kernel备份分区;或者,通过外置SD卡/U盘方式,将整个升级镜像备份到sd卡/U盘中;或者,通过手动方式来重新升级。
上述方式下需要增加容量或设备,而额外设置的容量和设备需要额外成本,造成整体实现成本的提升;或者需要用户的配合(拆除设备或执行一些复杂操作),对于实现的人员的技术要求高,不利于广泛推广,且用户配合过程容易出错导致升级过程的失败,对于系统运行的稳定性造成影响。
因此,如何在控制实现设备成本以及人工成本的情况下,实现代码存储空间空余不足时设备各种运行情况下的稳定远程升级,是本领域技术人员急需解决的问题。
发明内容
本申请的目的是提供终端设备分区镜像在线升级方法,该方法在代码存储空间空余空间不足的情况下,可以实现一种远程升级过程中掉电等异常重启情况下,无需额外空间情况下,也不需要人为干预,也能再次执行远程升级,保障系统的可用性;本申请的另一目的是提供终端设备的分区镜像在线升级装置、设备及一种可读存储介质。
为解决上述技术问题,本申请提供一种终端设备的分区镜像在线升级方法,包括:
确定终端设备待升级的调整后分区;其中,所述调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区;
将kernel更新镜像和Rootfs更新镜像备份至所述App分区;
备份完成后,将所述kernel更新镜像和所述Rootfs更新镜像写入至所述合并分区;
将App更新镜像写入至所述App分区;
根据分区升级的执行阶段在所述交互分区中进行相应的阶段标记的更新,以便掉电重启后根据所述阶段标记进行升级业务恢复。
可选地,在确定终端设备待升级的调整后分区之前,还包括:
确定所述终端设备中的kernel分区、Rootfs分区以及App分区;
将所述kernel分区以及所述Rootfs分区组合,作为kernel和Rootfs的合并分区;
确定低于所述App分区容量的容量值,作为合并容量值,并根据所述合并容量值设置所述合并分区的分区容量;
将所述交互分区中信息存储空间根据操作步骤的类型进行划分。
可选地,所述终端设备的分区镜像在线升级方法还包括:
将系统中WIFI/以太网驱动、网络基本通信功能、与服务端进行升级交互的功能模块添加至合并分区;
将系统中不涉及Linux启动以及升级交互的功能模块添加至所述App分区中。
可选地,所述终端设备的分区镜像在线升级方法还包括:
若所述终端设备掉电后重新上电,读取所述交互分区中的所述阶段标记,并根据所述阶段标记确定在掉电前的升级执行阶段;
根据所述升级执行阶段执行相应的设备功能恢复流程。
可选地,所述阶段标记包括:开始标记、更新App标记以及更新Kernel和Rootfs标记;
则相应地,所述掉电重启后根据所述阶段标记进行升级业务恢复,包括:
开始标记、更新App标记以及更新Kernel和Rootfs标记;
则相应地,所述掉电重启后根据所述阶段标记进行升级业务恢复,包括:
若所述开始标记未设定,则判定升级未开始或升级过程已完成,从所述合并分区中加载kernel并运行系统;
若所述开始标记已设定,读取所述更新App标记;
若所述更新App标记已设定,则判定App镜像更新失败,从所述合并分区中加载Kernel,并控制Kernel重续升级过程;
若所述更新App标记未设定,读取所述更新Kernel和Rootfs标记;
若所述更新Kernel和Rootfs标记已设定,判定Kernel和Rootfs更新镜像写入失败,从所述App分区中加载Kernel,并控制Kernel重续升级过程;
若所述更新Kernel和Rootfs标记未设定,判定Kernel和Rootfs更新镜像备份失败,从所述合并分区中加载Kernel,并控制Kernel重续升级过程。
本申请提供了一种终端设备的分区镜像在线升级装置,该装置包括:
分区确定单元,用于确定终端设备待升级的调整后分区;其中,所述调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区;
合并备份单元,用于将kernel更新镜像和Rootfs更新镜像备份至所述App分区;
合并更新单元,用于备份完成后,将所述kernel更新镜像和所述Rootfs更新镜像写入至所述合并分区;
App更新单元,用于将App更新镜像写入至所述App分区;
阶段记录单元,用于根据分区升级的执行阶段在所述交互分区中进行相应的阶段标记的更新,以便掉电重启后根据所述阶段标记进行升级业务恢复。
本申请提供了一种终端设备的分区镜像在线升级设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现所述的终端设备的分区镜像在线升级方法的步骤。
本申请提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述的终端设备的分区镜像在线升级方法的步骤。
本申请提供的终端设备的分区镜像在线升级方法中,通过确定调整后的待升级kernel和Rootfs的合并分区、App分区和交互分区,首先将kernel更新镜像和Rootfs更新镜像备份至App分区,以利用App分区动态增加kernel备份分区,形成2个相互备份的都能正常运行的Kernel和Rootfs的合并分区,以保障系统的正常运行不受影响,再将kernel更新镜像和Rootfs更新镜像写入至合并分区中,写入完成后再进行App更新镜像的更新写入,同时在升级的各执行阶段进行相应的阶段标记,在掉电等异常重启情况下,无需额外空间情况下,也不需要人为干预,根据交互分区中的阶段标记,以及2个相互备份的Kernel和Rootfs合并分区,能保证系统再次执行远程升级,保障系统运行的稳定性。
本申请还提供了一种终端设备的分区镜像在线升级装置、设备及一种可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种终端设备的分区镜像在线升级方法的流程图;
图2为本申请实施例提供的一种uboot启动检测示意图;
图3为本申请实施例提供的一种升级流程及恢复升级流程示意图;
图4为本申请实施例提供的一种终端设备的分区镜像在线升级装置的结构框图;
图5为本申请实施例提供的一种终端设备的分区镜像在线升级设备的结构示意图。
具体实施方式
本申请的核心是提供一种终端设备的分区镜像在线升级方法,该方法在代码存储空间空余空间不足的情况下,可以实现一种远程升级过程中掉电等异常重启情况下,无需额外空间情况下,也不需要人为干预,也能再次执行远程升级,保障系统可用性;本申请的另一核心是提供终端设备的分区镜像在线升级装置、设备及一种可读存储介质。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本实施例提供的一种终端设备的分区镜像在线升级方法的流程图,该方法主要包括以下步骤:
步骤s110、确定终端设备待升级的调整后分区;
需要说明的是,本实施例对应用的终端设备的类型不做限定,主要应用于Linux系统,在其它系统类型上的实现方式也可以参照本实施例的介绍,在此不再赘述。
在进行在线升级前,需要对分区布局进行调整,以满足后续升级过程的使用需求,分区调整具体需要将kernel、Rootfs、App三个分区调整为 kernel和Rootfs的合并分区、App分区和一个用于uboot与linux信息交互的交互分区,则相应地,调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区。
本实施例中对于分区布局的调整触发时间不做限定,在升级执行之前完成即可,同时本实施例中对于分区布局的调整具体实现方式不做限定,在一次分区调整后,后续的若干次在线升级过程均可基于该调整后的分区进行。
可选地,在执行步骤s120之前,可以进一步执行将升级描述信息写入至交互分区中的步骤,以便于后续从交互分区中读取升级描述信息,以确定当前升级过程的大致情况,方便后续维护。当然,也可以不执行该步骤,本实施例中对此不做限定。
步骤s120、将kernel更新镜像和Rootfs更新镜像备份至App分区;
本实施例中用于更新的各镜像(包括kernel镜像Rootfs更新镜像以及App更新镜像)可以从远端(服务端)接收得到。
获取到用于更新的各镜像后,首先将kernel更新镜像和Rootfs更新镜像备份至App分区,以避免在合并分区中根据kernel更新镜像和Rootfs更新镜像进行更新过程中如果出现异常掉电后kernel和Rootfs无法正常加载,而kernel和Rootfs无法正常加载则会导致系统无法正常运行,将两镜像在更新至合并分区之前将其备份至App分区,即使在合并分区更新过程中异常掉电,在重启后也可以根据App分区中备份的kernel更新镜像和Rootfs更新镜像恢复系统的正常运行。
而本实施例中仅备份这两个镜像的原因在于kernel中需加入基本的文件系统(基本的根文件系统及支持网络交互的代码)才能实现系统的恢复,且空间占用小,而对于其他镜像的备份处理本实施例中不做限定,可以根据实际镜像备份的需要进行设定,在此不再赘述。
需要说明的是,本步骤中获取以及更新的kernel更新镜像和Rootfs更新镜像可以是两个单独的镜像,也可以为包含Rootfs更新镜像的kernel更新镜像或者包含kernel更新镜像的Rootfs更新镜像,只要包含两个更新镜像部分即可。
其中,为了提升镜像的稳定性以及可靠性,可以利用包含Rootfs更新镜像的kernel更新镜像进行镜像备份,则将kernel更新镜像以及Rootfs更新镜像备份至App分区的实现方式如下:
(1)获取包含Rootfs更新镜像的kernel更新镜像,并将包含Rootfs更新镜像的kernel更新镜像作为合并更新镜像;
(2)将合并更新镜像备份至App分区;
相应地,下述步骤s130备份完成后,将kernel更新镜像以及Rootfs更新镜像写入至合并分区具体为:
备份完成后,将合并更新镜像写入至合并分区。
在将kernel(含Rootfs)的合并更新镜像备份至App分区并确认正确写入后,再将kernel(含Rootfs)合并更新镜像写入至合并分区,实现对于合并分区的在线升级。
步骤s130、备份完成后,将kernel更新镜像和Rootfs更新镜像写入至合并分区;
在将kernel更新镜像和Rootfs更新镜像备份至App分区并确认正确写入后,再将kernel更新镜像和Rootfs更新镜像写入至合并分区,实现对于合并分区的在线升级,具体的镜像更新写入过程的实现步骤可以参照相关技术的实现,在此不再赘述。
步骤s140、将App更新镜像写入至App分区;
在将kernel更新镜像Rootfs更新镜像写入至合并分区并确认正确写入后,合并分区的升级完成,合并分区的升级完成后可以保障系统的基础功能运行。基于此,启动对于App分区的更新,将App更新镜像写入至App分区中,该镜像的写入过程也可以参照相关技术的实现,本实施例中对此不做限定。
将App更新镜像写入至App分区并确认正确写入之后。大体的分区镜像在线升级过程完成。
步骤s150、根据分区升级的执行阶段在交互分区中进行相应的阶段标记的更新,以便掉电重启后根据阶段标记进行升级业务恢复。
而在上述所有分区升级的执行阶段(包括:启动阶段、kernel和Rootfs备份阶段、kernel和Rootfs更新阶段、App更新阶段以及升级完成阶段等)下,本实施例中在交互分区中进行相应阶段标记的更新,以指示当前所处的更新阶段,以便于在系统异常掉电上电后迅速确定中断阶段,并采取相应的系统恢复措施以保障系统运行的稳定性。比如在kernel和Rootfs备份阶段则将交互分区中kernel和Rootfs备份标记更新为正在进行对应的标记(比如将标记位由0置1),以指示目前正处于kernel和Rootfs备份阶段,则在异常掉电又上电后可以执行kernel和Rootfs备份阶段中断对应的处理措施,例如根据原合并分区中的kernel和Rootfs进行业务恢复等。
为加深理解,本实施例中介绍一种升级实现过程,在实际应用时可以按照下述步骤来实现,具体包括以下步骤:
(1)设备从远端(服务端)接收升级包;
(2)擦除交互分区(即将该Flash区域所有存储位全置1,以便当前升级信息的写入;
(3)将升级描述信息写入到交互分区;
(4)设定开始标记到交互分区;
(5)将交互分区中备份kernel和Rootfs标记清0,以表明开始进行kernel和Rootfs更新镜像备份;
(6)将升级程序中的kernel和Rootfs更新镜像写入到App分区并确认正确写入;
(7)将交互分区更新kernel和Rootfs标记清0,以表明开始进行kernel和Rootfs更新镜像更新;
(8)将升级程序中的kernel和Rootfs更新镜像更新到Kernel和Rootfs的合并分区并确认正确写入;
(9)将交互分区更新App标记清0,以表明开始进行App更新镜像更新;
(10)将App更新镜像写入到App分区并确认正确写入;
(11)擦除交互分区(即将该Flash区域所有存储位全置1),表明升级操作结束。
基于上述介绍,本实施例提供的终端设备的分区镜像在线升级方法,通过确定调整后的待升级kernel和Rootfs的合并分区、App分区和交互分区,首先将kernel更新镜像和Rootfs更新镜像备份至App分区,以保障不论处于何种升级阶段断电重启后,系统的正常运行不受影响,在kernel更新镜像和Rootfs更新镜像备份完成后,再将kernel(含Rootfs)更新镜像Rootfs更新镜像备份写入至合并分区中,写入完成后再进行App更新镜像的更新写入,同时在升级的各执行阶段进行相应的阶段标记,从而保障在代码存储空间,比如NorFlash空余空间不足的情况下,在掉电等异常重启情况下,无需额外空间情况下,即无需额外的Flash备份空间以及SD卡,也不需要人为干预,根据合并分区以及App分区中的镜像以及交互分区中的阶段标记也能再次执行远程升级,保障系统运行的稳定性。
上述实施例中对于分区调整的具体实现过程不做限定,为加深理解,本实施例中介绍一种分区调整的实现方式,具体如下:
在确定待升级的调整后分区之前,可以进一步执行以下步骤:
(1)确定终端设备的kernel分区、Rootfs分区以及App分区;
(2)将kernel分区以及Rootfs分区组合,作为kernel和Rootfs的合并分区;
为保障终端设备在升级过程中不论出现掉电重启或是其他意外情况均可以保障正常运行,本实施例中在kernel分区中需加入基本的文件系统(基本的根文件系统及支持网络交互的代码)以实现功能备份,因此将Kernel分区和Rootfs分区合并,将两分区组合后进行在线升级。而本实施例中对于将两分区组合的具体实现方式不做限定,比如linux内核支持一种initramfs根文件系统方式,该方式可以将kernel和Rootfs组合在一起,本实施例中仅以上述实现方式为例进行介绍,其它实现方式均可参照本实施例的介绍,在此不再赘述。
(3)确定低于App分区容量的容量值,作为合并容量值,并根据合并容量值设置合并分区的分区容量;
调整后的kernel+Rootfs的合并分区容量需小于App分区容量,以确保后续在线升级过程中App分区能备份下Kernel+Rootfs更新镜像,因此需要确定低于App分区容量的容量值设置合并分区的分区容量。而在确定分区容量值之后,为合并分区设置容量值的过程可以参照相关技术的介绍,在此不再赘述。
(4)生成用于uboot与linux信息交互的交互分区;
uboot与linux信息的交互分区只需1KB字节左右的容量即可,根据Flash的擦除特性,可分配最小的擦除页大小容量(通常4KB大小),将交互分区的分区容量设置为最小的擦除页大小容量,以减少交互分区空间占用的同时提升数据擦除效率。
(5)将交互分区中信息存储空间根据操作步骤的类型进行划分。
交互分区主要用于升级操作过程中记录当前操作步骤的执行阶段,可以将分区中信息存储空间根据操作步骤的类型进行划分,具体可以包括:升级描述信息、开始标记、备份kernel+Rootfs标记、更新kernel+Rootfs标记以及更新App标记,其中,具体地,升级描述信息可以依据实际情况存储用于升级所需的升级包获取地址等信息;开始标记用于记录固定特定值,以确定是否进入升级流程;备份kernel+Rootfs标记用于记录是否开始备份kernel+Rootfs更新镜像,在kernel+Rootfs升级镜像写入App分区前,可以将该标记清0;更新kernel+Rootfs标记用于记录是否开始更新kernel+Rootfs更新镜像,将kernel+Rootfs升级镜像写入kernel+Rootfs分区,在将kernel+Rootfs升级镜像写入kernel+Rootfs分区之前可以将该标记清0;更新App标记用于记录是否开始更新App更新镜像的进程,在将App升级镜像写入App分区时可以将该标记清0,则相应地,一种交互分区的信息格式如下表1所示。
表1
本实施例中仅以上述操作步骤类型对应的交互分区的信息空间划分为例进行介绍,其它操作类型下的交互分区信息设置均可参照上述介绍,在此不再赘述。
进一步地,交互分区存储的信息总量较少,可以不采用文件系统方式,直接对flash读写操作,以减少分区容量,同时不需要在uboot中增加文件系统的支持(以降低uboot大小及复杂度)。
进一步地,由于升级过程中,需要将内核+RootFs分区镜像备份到App分区,所以kernel和RootFs的合并分区需小于App分区大小,在具体实现过程中,可能会因为内核编译的功能太多(如各种外设的支持)导致容量不足的情况,大部分的功能和网络升级交互无关,完全可以将这些功能模块以ko形式放入到App分区。因此,可选地,可以将系统中WIFI/以太网驱动、网络基本通信功能、与服务端进行升级交互的功能模块添加至合并分区中,同时将系统中不涉及Linux启动以及升级交互的功能模块(以ko形式)添加至App分区中,以调整 kernel+Rootfs的合并分区与App分区的大小。
本实施例提供的上述分区调整实现方式可以保障分区的稳定性,为后续在线升级提供可靠保障。
上述实施例中提供了一种在线升级方法,可以保障系统在掉电重新上电后仍然保持系统正常运行,而上述实施例中对于具体的升级过程中掉电后上电的具体处理方式不做限定,而本实施例中基于此介绍一种在线升级过程的异常处理方式,具体可以包括如下步骤:
(1)若终端设备掉电后重新上电,读取交互分区中的阶段标记,并根据阶段标记确定在掉电前的升级执行阶段;
交互分区中在升级过程中的掉电前根据升级的实际执行阶段进行相应的阶段标记更新,则在掉电后就可以根据这些标记来确定在掉电前所处的执行阶段。
(2)根据升级执行阶段执行相应的设备功能恢复流程。
为保障不同升级执行阶段的快速业务恢复,可以针对不同的升级执行阶段设置对应的设备功能恢复流程,在确定掉电前的阶段后,执行相应的设备功能,而本实施例中对于具体的针对各阶段设置的设备功能恢复处理流程不做限定,可选地,一种实现方式如下:
阶段标记具体可以包括:开始标记、更新App标记以及更新Kernel和Rootfs标记;则相应地,根据升级执行阶段执行相应的设备功能恢复流程的过程具体可以包括以下步骤:
若开始标记为未设定,则判定升级未开始或升级过程已完成,从合并分区中加载kernel并运行系统;
若开始标记已设定,读取更新App标记;
若更新App标记已设定,则判定App镜像更新失败,从合并分区中加载Kernel,并控制Kernel重续升级过程;
若更新App标记为未设定,读取更新Kernel和Rootfs标记;
若更新Kernel和Rootfs标记已设定,判定Kernel和Rootfs更新镜像写入失败,从App分区中加载Kernel,并控制Kernel重续升级过程;
若更新Kernel和Rootfs标记未设定,判定Kernel和Rootfs更新镜像备份失败,从合并分区中加载Kernel,并控制Kernel重续升级过程。
为加深理解,本实施例中介绍一种完整的异常处理流程,以异常为升级过程掉电为例:
(1)设备上电后,触发uboot异常处理流程,uboot异常处理流程如图2所示,主要包括如下步骤:
(1.1)uboot读取交互分区中的开始标记,检测该标记是否对应设定的结束(或升级成功对应的完成)值。
若匹配,则表明升级不成功,需进入恢复升级流程,进入下一步操作流程。
若不匹配,表明还没开始升级或者不存在(已完成)升级过程失败,则正常加载kernel,不进入恢复升级流程,结束。
(1.2)读取更新App标记,检测每个数据是否全1,即是否为结束(或升级成功对应的完成)对应的标记值。
若不是全1,表明写入App更新镜像到App分区时重启了,判定为App更新镜像写入阶段,则从Kernel+Rootfs分区加载Kernel;
若是全1,表明还没有将App更新镜像写到App分区,进入下一步继续判断。
(1.3)读取更新Kernel+Rootfs标记,检测每个数据是否全1。
若不是全1,表明写入kernel+Rootfs更新镜像到Kernel+Rootfs合并分区时重启了,则从App分区加载Kernel;
若是全1,表明还没有将kernel+Rootfs更新镜像写到kernel+Rootfs分区,则备份kernel+Rootfs到App分区前,异常重启,则从Kernel+Rootfs分区加载Kernel;
(1.4)从指定分区加载kernel,并通过传参方式告知kernel,系统启动后进入恢复升级流程。
(2)恢复升级流程如图3所示,具体包括如下步骤:
(2.1)读取交互分区内容;
(2.2)从远端(服务端)接收升级包;
(2.3)通过交互标志来确定之前升级过程中断电前执行的步骤。
检测更新App标记是否1,如果不全为1,则按升级流程步骤s140开始继续执行升级步骤。
检测更新Kernel+Rootfs标记是否1,如果不全为1,则按升级流程步骤s130开始继续执行升级步骤。
检测备份Kernel+Rootfs标记是否1,如果不全为1,则按升级流程步骤s120开始继续执行升级步骤。
以上检测的标记都没有设定时,则按升级流程步骤将kernel更新镜像和Rootfs更新镜像备份至App分区开始继续执行升级步骤。
以上实现方式均以完成对应的标记值作为阶段的判断条件,也可以以进行中对应的标记值作为所属阶段的判断条件,或两种标记值相结合,其它阶段的判断方式均可参照上述介绍,在此不再赘述。
本实施例中介绍的升级过程的异常处理方式可以保障系统运行以及升级过程的快速恢复。
需要说明的是,本实施例中仅以上述实现步骤为例进行介绍,其它基于本申请的升级过程的异常处理方式均可参照本实施例的介绍,在此不再赘述。
请参考图4,图4为本实施例提供的终端设备的分区镜像在线升级装置的结构框图;该装置主要包括:分区确定单元110、合并备份单元120、合并更新单元130、App更新单元140以及阶段记录单元150。本实施例提供的终端设备的分区镜像在线升级装置可与上述终端设备的分区镜像在线升级方法相互对照。
其中,分区确定单元110主要用于确定终端设备待升级的调整后分区;其中,调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区;
合并备份单元120主要用于将kernel更新镜像和Rootfs更新镜像备份至App分区;
合并更新单元130主要用于备份完成后,将kernel更新镜像和Rootfs更新镜像写入至合并分区;
App更新单元140主要用于将App更新镜像写入至App分区;
阶段记录单元150主要用于同时根据分区升级的执行阶段在交互分区中进行相应的阶段标记的更新。
可选地,终端设备的分区镜像在线升级装置可以进一步还包括:分区调整单元;
分区调整单元包括:
确定子单元,用于在确定待升级的调整后分区之前,确定终端设备的kernel分区、Rootfs分区以及App分区;
组合子单元,用于将kernel分区以及Rootfs分区组合,作为kernel和Rootfs的合并分区;
设置子单元,用于确定低于App分区容量的容量值,作为合并容量值,并根据合并容量值设置合并分区的分区容量;
划分子单元,用于将交互分区中信息存储空间根据操作步骤的类型进行划分。
本实施例提供一种终端设备的分区镜像在线升级设备,主要包括:存储器以及处理器。
其中,存储器用于存储程序;
处理器用于执行程序时实现如上述实施例介绍的终端设备的分区镜像在线升级方法的步骤,具体可参照上述终端设备的分区镜像在线升级方法的介绍。
请参考图5,为本实施例提供的终端设备的分区镜像在线升级设备的结构示意图,该终端设备的分区镜像在线升级设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在终端设备的分区镜像在线升级设备301上执行存储器332中的一系列指令操作。
终端设备的分区镜像在线升级设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上面图1所描述的终端设备的分区镜像在线升级方法中的步骤可以由本实施例介绍的终端设备的分区镜像在线升级设备的结构实现。
本实施例公开一种可读存储介质,其上存储有程序,程序被处理器执行时实现如上述实施例介绍的终端设备的分区镜像在线升级方法的步骤,具体可参照上述实施例中对终端设备的分区镜像在线升级方法的介绍。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的终端设备的分区镜像在线升级方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (9)
1.一种终端设备的分区镜像在线升级方法,其特征在于,该方法包括:
确定所述终端设备中的kernel分区、Rootfs分区以及App分区;
将所述kernel分区以及所述Rootfs分区组合,作为kernel和Rootfs的合并分区;
确定低于所述App分区容量的容量值,作为合并容量值,并根据所述合并容量值设置所述合并分区的分区容量;
生成用于uboot与linux信息交互的交互分区;
将所述交互分区中信息存储空间根据操作步骤的类型进行划分;
确定终端设备待升级的调整后分区;其中,所述调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区;
将kernel更新镜像和Rootfs更新镜像备份至所述App分区;
备份完成后,将所述kernel更新镜像和所述Rootfs更新镜像写入至所述合并分区;
将App更新镜像写入至所述App分区;
根据分区升级的执行阶段在所述交互分区中进行相应的阶段标记的更新,以便掉电重启后根据所述阶段标记进行升级业务恢复。
2.如权利要求1所述的终端设备的分区镜像在线升级方法,其特征在于,还包括:
将系统中WIFI/以太网驱动、网络基本通信功能、与服务端进行升级交互的功能模块添加至合并分区;
将系统中不涉及Linux启动以及升级交互的功能模块添加至所述App分区中。
3.如权利要求1所述的终端设备的分区镜像在线升级方法,其特征在于,还包括:
若所述终端设备掉电后重新上电,读取所述交互分区中的所述阶段标记,并根据所述阶段标记确定在掉电前的升级执行阶段;
根据所述升级执行阶段执行相应的设备功能恢复流程。
4.如权利要求3所述的终端设备的分区镜像在线升级方法,其特征在于,所述阶段标记包括:开始标记、更新App标记以及更新Kernel和Rootfs标记;
则相应地,所述掉电重启后根据所述阶段标记进行升级业务恢复,包括:
若所述开始标记未设定,则判定升级未开始或升级过程已完成,从所述合并分区中加载kernel并运行系统;
若所述开始标记已设定,读取所述更新App标记;
若所述更新App标记已设定,则判定App镜像更新失败,从所述合并分区中加载Kernel,并控制Kernel重续升级过程;
若所述更新App标记未设定,读取所述更新Kernel和Rootfs标记;
若所述更新Kernel和Rootfs标记已设定,判定Kernel和Rootfs更新镜像写入失败,从所述App分区中加载Kernel,并控制Kernel重续升级过程;
若所述更新Kernel和Rootfs标记未设定,判定Kernel和Rootfs更新镜像备份失败,从所述合并分区中加载Kernel,并控制Kernel重续升级过程。
5.如权利要求1所述的终端设备的分区镜像在线升级方法,其特征在于,在所述将kernel更新镜像和Rootfs更新镜像备份至所述App分区之前,还包括:将升级描述信息写入至所述交互分区中。
6.如权利要求1至5任一项所述的终端设备的分区镜像在线升级方法,其特征在于,所述将kernel更新镜像以及Rootfs更新镜像备份至App分区,包括:
获取包含Rootfs更新镜像的kernel更新镜像,并将所述包含Rootfs更新镜像的kernel更新镜像作为合并更新镜像;
将所述合并更新镜像备份至所述App分区;
则相应地,所述备份完成后,将所述kernel更新镜像以及所述Rootfs更新镜像写入至所述合并分区,包括:
备份完成后,将所述合并更新镜像写入至所述合并分区。
7.一种终端设备的分区镜像在线升级装置,其特征在于,该装置包括:
分区调整单元,用于确定所述终端设备中的kernel分区、Rootfs分区以及App分区;将所述kernel分区以及所述Rootfs分区组合,作为kernel和Rootfs的合并分区; 确定低于所述App分区容量的容量值,作为合并容量值,并根据所述合并容量值设置所述合并分区的分区容量;生成用于uboot与linux信息交互的交互分区;将所述交互分区中信息存储空间根据操作步骤的类型进行划分;
分区确定单元,用于确定终端设备待升级的调整后分区;其中,所述调整后分区包括:kernel和Rootfs的合并分区、App分区和用于uboot与linux信息交互的交互分区;
合并备份单元,用于将kernel更新镜像和Rootfs更新镜像备份至所述App分区;
合并更新单元,用于备份完成后,将所述kernel更新镜像和所述Rootfs更新镜像写入至所述合并分区;
App更新单元,用于将App更新镜像写入至所述App分区;
阶段记录单元,用于根据分区升级的执行阶段在所述交互分区中进行相应的阶段标记的更新,以便掉电重启后根据所述阶段标记进行升级业务恢复。
8.一种终端设备的分区镜像在线升级设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的终端设备的分区镜像在线升级方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序被处理器执行时实现如权利要求1至6任一项所述的终端设备的分区镜像在线升级方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110062410.9A CN112363739B (zh) | 2021-01-18 | 2021-01-18 | 终端设备的分区镜像在线升级方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110062410.9A CN112363739B (zh) | 2021-01-18 | 2021-01-18 | 终端设备的分区镜像在线升级方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112363739A CN112363739A (zh) | 2021-02-12 |
CN112363739B true CN112363739B (zh) | 2021-04-09 |
Family
ID=74535022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110062410.9A Active CN112363739B (zh) | 2021-01-18 | 2021-01-18 | 终端设备的分区镜像在线升级方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363739B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778732A (zh) * | 2021-08-06 | 2021-12-10 | 锐捷网络股份有限公司 | 业务板卡的故障定位方法及装置 |
CN114780019A (zh) * | 2022-03-22 | 2022-07-22 | 江苏泽景汽车电子股份有限公司 | 电子设备的管理方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980447B (zh) * | 2005-12-06 | 2010-06-16 | 中兴通讯股份有限公司 | 一种通信系统软件版本的平滑升级方法 |
KR101515198B1 (ko) * | 2013-04-10 | 2015-05-11 | 주식회사 팬택 | 모바일 단말의 펌웨어 업그레이드 장치 및 방법 |
CN109189451A (zh) * | 2018-10-25 | 2019-01-11 | 京信通信系统(中国)有限公司 | 一种固件升级方法及装置 |
CN110780890B (zh) * | 2019-10-24 | 2023-06-06 | 百度在线网络技术(北京)有限公司 | 系统升级方法、装置、电子设备和介质 |
-
2021
- 2021-01-18 CN CN202110062410.9A patent/CN112363739B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112363739A (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572229B (zh) | 嵌入式系统的固件升级方法以及固件升级装置 | |
CN111796856B (zh) | 差分升级方法及装置、存储介质、计算机设备 | |
US9471435B2 (en) | Information processing device, information processing method, and computer program | |
CN112363739B (zh) | 终端设备的分区镜像在线升级方法、装置、设备及介质 | |
EP2375323A1 (en) | Firmware image update and management | |
CN103365696B (zh) | Bios镜像文件获取方法及装置 | |
CN109032632B (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
CN113626256B (zh) | 一种虚拟机磁盘数据备份方法、装置、终端及存储介质 | |
JP7002358B2 (ja) | 情報処理システム、情報処理装置、情報処理装置のbios更新方法、及び情報処理装置のbios更新プログラム | |
US8341390B2 (en) | Computer system and method for backing up BIOS settings | |
CN111552592A (zh) | 一种双备份启动方法及系统 | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
CN111045712A (zh) | 一种具有备份功能的单系统升级方法及系统 | |
CN117687663B (zh) | 基于ota的分区动态调整方法、装置、设备及存储介质 | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
CN114115958A (zh) | 程序启动方法及终端设备 | |
CN111752749A (zh) | Cors终端主机、自动备份与恢复方法以及存储装置 | |
CN110795155B (zh) | 系统启动方法及装置、电子设备、存储介质 | |
CN110908722B (zh) | 应用于操作系统启动的方法、装置、电子设备及存储介质 | |
CN112099819A (zh) | 一种数据处理方法、数据处理装置及车载终端 | |
CN116627515A (zh) | 嵌入式系统的分区切换启动方法及装置 | |
CN116204353B (zh) | 车机系统的恢复还原方法、装置、设备及存储介质 | |
CN113360384B (zh) | App运行稳定性保护方法、装置及计算机可读介质 | |
CN118656101A (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 |