一种系统安全升级的方法和装置与流程

文档序号:11831260阅读:119来源:国知局
一种系统安全升级的方法和装置与流程

本发明涉及计算机领域,尤其涉及一种系统安全升级的方法和装置。



背景技术:

系统升级,通常包括引导分区(bootloader),OS,中间件,应用等组件的升级。在嵌入式产品,如智能电视机,各种盒子如交互式网络电视(Internet protocol TV,IPTV)盒子,过顶(Over The Top,OTT)盒子,数字视频广播(Digital Video Broadcasting,DVB)盒子,机顶盒等,其内置的存储器通常是计算机闪存设备(NAND)介质或者内嵌式存储器(Embedded Multi Media Card,eMMC)介质,NAND和eMMC的特点是容易出现坏块、导致其损坏。系统升级会加大对NAND或eMMC的读写,如果在升级过程中,突然断电,更会使存储介质损坏的可能性大大增加。常见的升级,例如:安卓系统的升级通常包括对bootloader,操作系统内核(kernel),系统(system),恢复(recovery),缓存(cache)等分区的内容进行更新。系统在线升级的时候,往往更新其中部分分区或者全部分区的内容。

由此可知,系统升级包括全部升级和部分升级。通常的做法是依次更新bootloader,kernel,system等分区的内容,如果关键分区如bootloader分区由于断电导致破坏,整个系统将无法启动,设备无法正常运行,俗称导致设备变“砖”。



技术实现要素:

本发明的目的是提供一种系统安全升级的方法和装置,以解决由于系统升级出现的设备不可用率高的情况。

本发明的目的是通过以下技术方案实现的:

一种系统安全升级的方法,包括:

在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区;其中,系统包括至少两个引导分区,每一个引导分区中均存储有用于引导系统启动的代码;

在所述参数分区内将筛选出的所述一个引导分区的配置状态参数设置为表征失败状态,并运行所述一个引导分区中存储的用于引导系统启动的代码;

确定执行成功时,在所述参数分区内将筛选出的所述一个引导分区的配置状态参数值设置为表征成功状态。

这样,能够大大降低由于系统升级时关键分区损坏导致设备不可用的概率,利用多个引导分区实现设备的快速恢复启动,不影响系统的正常运行时间,为用户提供了方便,进一步提升系统的可靠性,提高设备的可用性,确保系统能够安全可靠地升级。

较佳的,在设备首次开机之前,将参数分区内记录的每一个引导分区的配置状态参数值均设置为表征成功状态。

较佳,系统包括的至少两个引导分区为相同的引导分区,所述系统为嵌入式系统。

可选的,在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区,具体包括:

在设备开机后,执行只读芯片ROM中保存的引导代码;

在引导代码执行完毕后,通过执行初始化分区中存储的代码,依次检测参数分区内记录的每一个引导分区的配置状态参数;其中,每读取一个引导分区的配置状态参数,判断是否表征成功状态,若是,则将所述一个引导分区标记为待操作引导分区,否则,将所述一个引导分区标记为待修复引导分区;

从已标记的待操作引导分区中筛选出一个引导分区。

可选的,确定执行成功时,在所述参数分区内将所述一个引导分区的配置状态参数值设置为表征成功状态之后,进一步包括:

将所述一个引导分区内存储的代码复制到每一个已标记的待修复引导分区中;

每确定所述一个引导分区内存储的代码成功复制到一个待修复引导分区后,在参数分区内将所述一个待修复引导分区的配置状态参数值设置为表征成功状态。

一种系统安全升级的装置,包括:

筛选单元,用于在该设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区;其中,系统包括至少两个引导分区,每一个引导分区中均存储有用于引导系统启动的代码;

处理单元,用于在所述参数分区内将筛选出的所述一个引导分区的配置状态参数设置为表征失败状态,并运行所述一个引导分区中存储的用于引导系统启动的代码;

确定单元,用于确定执行成功时,在所述参数分区内将筛选出的所述一个引导分区的配置状态参数值设置为表征成功状态。

这样,能够大大降低由于系统升级时关键分区损坏导致设备不可用的概率,利用多个引导分区实现设备的快速恢复启动,不影响系统的正常运行时间,为用户提供了方便,进一步提升系统的可靠性,提高设备的可用性,确保系统能够安全可靠地升级。

较佳的,所述筛选单元检测的系统包括的至少两个引导分区为相同的引导分区,所述系统为嵌入式系统。

较佳的,所述筛选单元进一步用于:

在设备首次开机之前,将参数分区内记录的每一个引导分区的配置状态参数值均设置为表征成功状态。

较佳的,在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区时,所述筛选单元 具体用于:

在设备开机后,执行只读芯片ROM中保存的引导代码;

在引导代码执行完毕后,通过执行初始化分区中存储的代码,依次检测参数分区内记录的每一个引导分区的配置状态参数;其中,每读取一个引导分区的配置状态参数,判断是否表征成功状态,若是,则将所述一个引导分区标记为待操作引导分区,否则,将所述一个引导分区标记为待修复引导分区;

从已标记的待操作引导分区中筛选出一个引导分区。

较佳的,确定执行成功时,在所述参数分区内将筛选出的所述一个引导分区的配置状态参数值设置为表征成功状态之后,所述确定单元进一步用于:

将筛选出的所述一个引导分区内存储的代码复制到每一个已标记的待修复引导分区中;

每确定筛选出的所述一个引导分区内存储的代码成功复制到一个待修复引导分区后,在参数分区内将所述一个待修复引导分区的配置状态参数值设置为表征成功状态。

附图说明

图1为本发明实施例中系统安全升级的方法流程示意图;

图2为本发明实施例中参数分区的示意图;

图3为本发明实施例中安卓设备的存储器分区示意图;

图4为本发明实施例中系统安全升级的装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

存储介质(如NAND/eMMC)的分区管理与系统升级密切相关。通常系统升级时,执行完芯片上的引导代码(ROM code)后总是跳转到固定分区执行其相关代码,而不会根据分区是否损坏跳转到别的分区,如果升级过程中关键分区例如引导分区(bootloader)由于断电出现毁坏情况时,会导致系统升级无法正常进行,进一步导致设备不可用,影响用户的正常使用。和通常的做法不同,本发明实施例中设计了初始化(Init)分区,并对引导分区进行了多个分区的备份,用以大大提高系统升级的可靠性。

参阅图1所示,本发明实施例中,提供一种系统安全升级的方法,具体流程如下:

步骤100:在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区;其中,系统包括至少两个引导分区,每一个引导分区中均记录有用于引导系统启动的代码。

具体的,系统包括的至少两个引导分区为相同的引导分区,可以互为备份,该系统为嵌入式系统。

进一步的,在设备次开机之前,将参数分区内记录的每一个引导分区的配置状态参数值均设置为表征成功状态。

例如,参数(parameter)分区采用key-value方式存放一些启动过程必须的参数,包括表征引导分区的配置状态的参数,具体的,可参阅图2所示,用“SUCCESS”表征成功的配置状态,用“FAILD”表征失败的配置状态,在设备首次开机(即出厂)之前,将参数分区内记录的每一个引导分区的配置状态参数值均设置为“SUCCESS”状态。

具体的,在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区,具体过程为:在设备开机后,执行只读芯片ROM中保存的引导代码;在引导代码执行完毕后,通过执行初始化分区中存储的代码,依次检测参数分区内记录的每一个引导分区的配置状态参数;其中,每读取一个引导分区的配置状态参数,判断是否表 征成功状态,若是,则将该一个引导分区标记为待操作引导分区,否则,将该一个引导分区标记为待修复引导分区;从已标记的待操作引导分区中筛选出一个引导分区。

步骤101:在参数分区内将筛选出的上述一个引导分区的配置状态参数设置为表征失败状态,并运行该一个引导分区中存储的用于引导系统启动的代码。

步骤102:确定执行成功时,在参数分区内将筛选出的上述一个引导分区的配置状态参数值设置为表征成功状态。

需要说明的是,这里检测到一个配置状态为成功状态的引导分区后,执行该引导分区的代码时,将该引导分区的配置状态设置为失败状态,在成功执行完该引导分区的代码后,将将该引导分区的配置状态设置为成功状态,这样做能够确保在执行完某一个引导分区的代码后,参数分区中保存的该分区的配置状态是正确的,如果不执行这样的操作,在执行引导分区的代码时若由于断电或电路板短路等原因导致升级失败时,将导致参数分区内记录该引导分区的配置状态出现错误,再次升级时可能会继续出现升级失败的情形。

进一步的,确定执行成功时,在参数分区内将筛选出的上述一个引导分区的配置状态参数值设置为表征成功状态之后,将上述一个引导分区内存储的代码复制到每一个已标记的待修复引导分区中;每确定上述一个引导分区内存储的代码成功复制到一个待修复引导分区后,在参数分区内将该一个待修复引导分区的配置状态参数值设置为表征成功状态。

例如,系统中存在两个引导分区,这两个引导分区互为备份,这里用bootloader0和bootloader1来表示这个互为备份的引导分区,检测到bootloader0的配置状态为“SUCCESS”状态,bootloader1的配置状态为“FAILD”状态,设备开机后成功执行完bootloader0中存储的代码后,需要将bootloader0中存储的代码复制到bootloader1中,在确定bootloader0中存储的代码成功复制到bootloader1中后,将bootloader1的配置状态修改为“SUCCESS”状态,这样, 能够实现对出现毁坏情况的引导分区恢复至正常情况。

进一步的,需要说明的是,初始化分区、引导分区以及设备的存储器的其他分区的代码执行,都是先将分区的代码下载(load)到内存中(如DDR或IRAM),CPU从内存中读取对应分区的代码进行加载。

具体的,下面以一安卓(Android)设备的存储器分区为例针对上述系统安全升级的方法进行详细说明。

Android设备的存储器即eMMC/NAND分区情况,参阅图3所示,包括:Parameter,Init区,Bootloader0,Bootloader1,…BootloaderN,Kernel,Android,recovery,cache,其他(other)等分区。其中:

Parameter分区采用简单的key-value方式存放一些启动过程中必须的参数,包括bootloader0/bootloader1/…bootloaderN的配置(boot)状态。这里用“SUCCESS”表征成功的配置状态,用“FAILD”表征失败的配置状态,初始化时,这些引导分区的状态都是“SUCCESS”状态。

Init分区存储有一段初始化代码,该初始化代码根据parameter分区的记录的引导分区的参数决定跳转到哪个引导分区,其中BootLoader0,BootLoader1,…BootLoaderN是同一个引导分区的多个备份。

每一个引导分区都存储有一段为启动操作系统做准备的代码,为启动操作系统做准备。

Kernel分区是指操作系统的内核分区,通常存储有内核、驱动相关代码,如Linux kernel;android分区包括android相关的组件,通常存储有android相关的框架代码、虚拟机代码、用到的库等;recovery分区是指android的recovery分区,该分区包含一个简单的Linux系统,用于升级;cache分区用以保存系统升级下载的升级包;Other分区是指其他分区,由各个产品自己定义。

当设备开机时,最先执行只读芯片“ROM”芯片里面的代码即引导代码(ROM code),该引导代码执行完毕之后,会跳转到Init分区的代码,Init分区的代码会检查parameter分区的Bootloader0_Boot_state的值,如果是 “SUCCESS”,则从该分区执行;如果是“FAILD”,记录Bootloader_Boot_state=FAILD的引导分区,进一步的继续检查Bootloader1_Boot_state的值…如此下去,直到找到一个配置状态为“SUCCESS”的引导分区执行该分区存储的代码。在执行一个引导分区存储的代码时,首先把该引导分区对应的Bootloader_Boot_state设置为“FAILED”,直到引导分区存储的代码成功执行完毕后才把其对应的Bootloader_Boot_state改为“SUCCESS”。如果该引导分区存储有损坏的代码,导致该引导分区存储的代码将不会被完全成功执行,从而该引导分区对应的Bootloader_Boot_state不会被改写为“SUCCESS”。在该引导分区存储的代码成功执行完毕之后,要负责恢复Bootloader_Boot_state=FAILD的引导分区,即把该引导分区存储的代码复制到到损坏的备份引导分区中,在确定该引导分区存储的代码成功复制到到损坏的备份引导分区中之后,将损坏的备份引导分区的配置状态修改为“SUCCESS”;最后把执行权交给kernel做后面的启动过程,此过程不做详细描述。

需要说明的是,通常情况下,设备开机时执行完芯ROM code后总是跳转到固定分区执行,而不会根据分区是否损坏跳转到别的分区。本发明实施例中,设备开机时执行完ROM code后通过跳转到Init分区,Init分区根据parameter分区中记录的引导分区的配置状态决定跳转到哪个引导分区中,由于Init分区的内容不会通过系统升级而改变,所以理论上该分区不会因为升级而损坏,而bootloader的多个备份机制保证了bootloader的可靠性。Kernel等其他分区只有在恢复(recovery)模式下进行更新,如果更新失败(如断电),重启后,恢复(recovery)模式会继续更新kernel等分区的内容,从而保证了其他分区的可靠性,Recovery模式特指Android recovery模式,其实质是更新升级包。

基于上述技术方案,参阅图4所示,本发明实施例中提供一种系统安全升级的装置,包括:筛选单元40,处理单元41和确定单元42,其中:

筛选单元40,用于在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区;其中, 系统包括至少两个引导分区,每一个引导分区中均存储有用于引导系统启动的代码;

处理单元41,用于在参数分区内将筛选出的上述一个引导分区的配置状态参数设置为表征失败状态,并运行该引导分区中存储的用于引导系统启动的代码;

确定单元42,用于确定执行成功时,在参数分区内将筛选出的上述一个引导分区的配置状态参数值设置为表征成功状态。

较佳的,所述筛选单元检测的系统包括的至少两个引导分区为相同的引导分区,该系统为嵌入式系统。

较佳的,筛选单元40进一步用于:

在设备首次开机之前,将参数分区内记录的每一个引导分区的配置状态参数值均设置为表征成功状态。

较佳的,在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区时,筛选单元40具体用于:

在设备开机后,执行只读芯片ROM中保存的引导代码;

在引导代码执行完毕后,通过执行初始化分区中存储的代码,依次检测参数分区内记录的每一个引导分区的配置状态参数;其中,每读取一个引导分区的配置状态参数,判断是否表征成功状态,若是,则将该引导分区标记为待操作引导分区,否则,将该引导分区标记为待修复引导分区;

从已标记的待操作引导分区中筛选出一个引导分区。

较佳的,确定执行成功时,在参数分区内将筛选出的上述一个引导分区的配置状态参数值设置为表征成功状态之后,确定单元42进一步用于:

将筛选出的上述一个引导分区内存储的代码复制到每一个已标记的待修复引导分区中;

每确定筛选出的该一个引导分区内存储的代码成功复制到一个待修复引 导分区后,在参数分区内将该待修复引导分区的配置状态参数值设置为表征成功状态。

综上所述,本发明实施例中,在设备开机时,检测参数分区内记录的每一个引导分区的配置状态参数,筛选出配置状态参数表征成功状态的一个引导分区;在参数分区内将上述一个引导分区的配置状态参数设置为表征失败状态,并运行该一个引导分区中存储的用于引导系统启动的代码;确定执行成功时,在参数分区内将上述一个引导分区的配置状态参数值设置为表征成功状态。这样,能够大大降低由于系统升级导致设备不可用的概率,提升系统的可靠性,提高设备的可用性,确保系统能够安全可靠地升级。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1