CN114265603A - 基于不对称分区的系统升级方法、装置和电子设备 - Google Patents
基于不对称分区的系统升级方法、装置和电子设备 Download PDFInfo
- Publication number
- CN114265603A CN114265603A CN202111403071.2A CN202111403071A CN114265603A CN 114265603 A CN114265603 A CN 114265603A CN 202111403071 A CN202111403071 A CN 202111403071A CN 114265603 A CN114265603 A CN 114265603A
- Authority
- CN
- China
- Prior art keywords
- partition
- starting
- upgrading
- upgrade
- mark
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于不对称分区的系统升级方法、装置和电子设备,在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统;若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,第二系统分区的存储空间大于第一系统分区的存储空间;根据第二系统的升级失败信息对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。本发明提供的技术方案,由于第二系统分区的存储空间大于第一系统分区的存储空间,能够节省成本,避免造成资源浪费。在读取到用于标识第二系统分区中的第二系统升级失败的标志时,对第二系统进行再次升级,能够保证第二系统的正常运行。
Description
技术领域
本发明实施例属于互联网技术领域,具体涉及一种基于不对称分区的系统升级方法、装置和电子设备。
背景技术
嵌入式系统作为一种能够独立运作的器件,其软件包括软件运行换将及其操作系统,嵌入式系统的产品在使用过程中通过在线迭代升级,可以逐步提高用户的体验。在对嵌入式系统进行升级的过程中,可以用升级的系统文件直接覆盖原有的旧的系统文件,以完成嵌入式系统的升级。但是,在升级过程中可能会遇到断电或者版本错误等问题,导致升级后的嵌入式系统无法正常运行。
现有技术中,通过在嵌入式系统中设置两个同样的系统启动分区,两个系统启动分区中分别保存有新版本系统文件和旧版本系统文件,且两个版本的系统文件互相作为备份。在嵌入式系统升级过程中,若其中一个系统分区中的系统文件出现问题而无法运行时,可以使用另一个系统分区中的系统文件运行系统,从而保证嵌入式系统能够正常运行。
虽然现有技术中使用两个同样的系统启动分区能够系统升级后无法正常运行的情况,但是,两个系统分区中的任一系统分区仅在另一个系统分区中的系统文件出现问题时才发挥作用,造成了一定程度的资源浪费,增加了嵌入式系统的成本。
发明内容
为了解决现有技术中的上述问题,即为了解决现有的两个同样的系统分区使得嵌入式系统的成本较高造成资源浪费的问题,本发明实施例提供了一种基于不对称分区的系统升级方法、装置和电子设备。
本发明实施例提供了一种基于不对称分区的系统升级方法,所述基于不对称分区的系统升级方法包括:
在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统。
若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,所述第二系统分区的存储空间大于所述第一系统分区的存储空间。
根据所述第二系统的升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
可选的,所述升级失败信息包括版本错误信息或升级错误信息。
所述根据所述升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统,包括:
若所述升级失败信息为版本错误信息,则根据升级失败前的旧版本和升级失败的版本确定目标版本。
在服务器中下载所述目标版本对应的目标升级包,并通过所述目标升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
若所述升级失败信息为升级错误信息,则通过升级失败的版本对应的升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
可选的,在系统启动,读取用于启动第一系统分区的启动分区标志之前,所述方法还包括:
在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统。
若检测到所述第二系统的待升级指示,则在服务器中下载升级包,并根据所述升级包,在所述第二系统分区中进行擦除操作,将所述升级包写入第二系统分区。
在写入完成后,设置启动分区标志为用于验证所述第二系统是否升级成功的升级验证标志,并重启系统,验证所述第二系统是否升级成功。
若检测到所述第一系统的待升级指示,则将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,并重启系统。
可选的,所述重启系统,验证所述第二系统是否升级成功,包括:
在重启系统后,读取用于验证所述第二系统是否升级成功的升级验证标志,启动验证计数器和新的第二系统。
若所述新的第二系统启动成功,则对所述启动验证计数器进行清零操作。
若所述新的第二系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第二系统。
重复执行上述步骤,直到所述新的第二系统启动成功,或,所述验证计数器的计数大于等于第一预设阈值。
在所述验证计数器的计数大于或等于所述第一预设阈值时,将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。
可选的,在启动第一系统分区中的第一系统之后,所述方法还包括:
若未读取到用于标识第二系统分区中的第二系统升级失败的标志,则在服务器中下载第一系统对应的升级包,并根据所述第一系统对应的升级包,在所述第一系统分区中进行擦除操作,将所述第一系统对应的升级包写入第一系统分区。
在写入完成后,设置启动分区标志为用于验证所述第一系统是否升级成功的升级验证标志,并重启系统,验证所述第一系统是否升级成功。
可选的,所述重启系统,验证所述第一系统是否升级成功,包括:
在重启系统后,读取用于验证所述第一系统是否升级成功的升级验证标志,启动验证计数器和新的第一系统。
若所述新的第一系统启动成功,则对所述启动验证计数器进行清零操作。
若所述新的第一系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第一系统。
重复执行上述步骤,直到所述新的第一系统启动成功,或,所述验证计数器的计数大于等于第二预设阈值。
在所述验证计数器的计数大于或等于所述第二预设阈值时,将所述启动分区标志设置为用于启动第二系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第一系统的升级失败信息,并重启系统。
可选的,在将所述启动分区标志设置为用于启动第二系统分区的启动分区标志,并重启系统之后,所述方法还包括:
在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统。
若读取到用于标识第一系统分区中的第一系统升级失败的标志,则获取第一系统的升级失败信息。
根据所述第一系统的升级失败信息对所述第一系统进行再次升级。
本发明实施例还提供了一种基于不对称分区的系统升级装置,包括:
启动模块,用于在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统。
读取模块,用于若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,所述第二系统分区的存储空间大于所述第一系统分区的存储空间。
升级模块,用于根据所述第二系统的升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
可选的,所述升级失败信息包括版本错误信息或升级错误信息;所述升级模块,具体用于在所述升级失败信息为版本错误信息时,根据升级失败前的旧版本和升级失败的版本确定目标版本;在服务器中下载所述目标版本对应的目标升级包,并通过所述目标升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统;并在所述升级失败信息为升级错误信息时,通过升级失败的版本对应的升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
可选的,所述启动模块,还用于在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;在检测到所述第二系统的待升级指示时,在服务器中下载升级包,并根据所述升级包,在所述第二系统分区中进行擦除操作,将所述升级包写入第二系统分区。并在检测到所述第一系统的待升级指示时,将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,并重启系统。
所述装置还包括验证模块,所述验证模块,用于在写入完成后,设置启动分区标志为用于验证所述第二系统是否升级成功的升级验证标志,并重启系统,验证所述第二系统是否升级成功。
可选的,所述验证模块,具体用于在重启系统后,读取用于验证所述第二系统是否升级成功的升级验证标志,启动验证计数器和新的第二系统;在所述新的第二系统启动成功时,对所述启动验证计数器进行清零操作;在所述新的第二系统初次启动失败时,控制启动验证计数器的计数加1,并第二次启动第二系统;重复执行上述步骤,直到所述新的第二系统启动成功,或,所述验证计数器的计数大于等于第一预设阈值;在所述验证计数器的计数大于或等于所述第一预设阈值时,将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。
可选的,所述升级模块,还用于在未读取到用于标识第二系统分区中的第二系统升级失败的标志时,在服务器中下载第一系统对应的升级包,并根据所述第一系统对应的升级包,在所述第一系统分区中进行擦除操作,将所述第一系统对应的升级包写入第一系统分区;
所述验证模块,还用于在写入完成后,设置启动分区标志为用于验证所述第一系统是否升级成功的升级验证标志,并重启系统,验证所述第一系统是否升级成功。
可选的,所述验证模块,具体用于在重启系统后,读取用于验证所述第一系统是否升级成功的升级验证标志,启动验证计数器和新的第一系统;在所述新的第一系统启动成功时,对所述启动验证计数器进行清零操作;在所述新的第一系统初次启动失败时,控制启动验证计数器的计数加1,并第二次启动第一系统;重复执行上述步骤,直到所述新的第一系统启动成功,或,所述验证计数器的计数大于等于第二预设阈值;在所述验证计数器的计数大于或等于所述第二预设阈值时,将所述启动分区标志设置为用于启动第二系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第一系统的升级失败信息,并重启系统。
可选的,所述启动模块,还用于在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统。
所述读取模块,还用于在读取到用于标识第一系统分区中的第一系统升级失败的标志时,获取第一系统的升级失败信息。
所述升级模块,还用于根据所述第一系统的升级失败信息对所述第一系统进行再次升级。
本发明实施例还提供了一种电子设备,该电子设备包括:处理器,以及与所述处理器通信连接的存储器。
所述存储器存储计算机执行指令。
所述处理器执行所述存储器存储的计算机执行指令,实现上述任一种优选技术方案中所述的基于不对称分区的系统升级方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述任一种优选技术方案中所述的基于不对称分区的系统升级方法。
本发明实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述任一种优选技术方案中所述的基于不对称分区的系统升级方法。
本领域技术人员能够理解的是,本发明实施例提供的一种基于不对称分区的系统升级方法,在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统;若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,第二系统分区的存储空间大于第一系统分区的存储空间;根据第二系统的升级失败信息对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。本发明提供的技术方案,使得第二系统分区的存储空间大于第一系统分区的存储空间,保证了第二系统分区能够实现嵌入式系统产品的完整功能,同时节省了生产成本,避免造成资源浪费。此外,在第一系统后,读取到用于标识第二系统分区中的第二系统升级失败的标志时,对第二系统进行再次升级,能够避免第二系统升级失败后无法运行,导致嵌入式系统无法正常运行的问题,保证了第二系统的正常运行,即保证了产品的正常使用。
附图说明
图1为本发明实施例提供的一种现有技术中嵌入式系统分区的结构示意图;
图2为本发明实施例提供的一种嵌入式系统不对称分区的结构示意图;
图3为本发明实施例提供的一种基于不对称分区的系统升级方法的流程示意图;
图4为本发明实施例提供的另一种基于不对称分区的系统升级方法的流程示意图;
图5为本发明实施例提供的一种基于不对称分区的系统升级装置的结构示意图;
图6为本发明提供的一种电子设备结构示意图。
具体实施方式
首先,本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。本领域技术人员可以根据需要对其作出调整,以便适应具体的应用场合。
其次,需要说明的是,在本发明实施例的描述中,术语“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或构件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的技术方案可以应用于嵌入式系统分区的场景中。嵌入式系统的产品在使用过程中通过在线迭代升级,可逐步提高用户的体验,但在升级过程中可能存在系统升级失败,使得系统升级后无法正常启动,从而导致产品无法使用的情况。目前,主要是通过在嵌入式系统中设置两个同样的系统分区,即A、B分区,以保存系统的新版本和旧版本,且A、B相互作为彼此的备份。使得在新版本出现升级失败的情况时,使用旧版本进行恢复。具体的,可参见图1所示,图1为本发明实施例提供的一种现有技术中嵌入式系统分区的结构示意图。根据图1可知,嵌入式系统可以包括bootloader、环境变量env、A分区、B分区、A分区的环境变量分区、B分区的环境变量分区以及数据存储空间data。
示例的,根据图1所示的嵌入式系统的分区,嵌入式系统的bootloader,在根据A分区的环境分区混入B分区的环境分区中的信息,确定启动升级后A分区的系统时,若A分区的系统在升级过程中出现升级失败,则A分区的系统启动失败,此时,可以启动B分区的系统,使得嵌入式系统的产品能够正常使用。
虽然设置A、B分区的方法能够较好的解决升级失败产品无法正常使用的问题。但是,随着芯片成本的上涨,使用A、B分区的成本不断增加,而且A、B分区中的任一系统分区仅在另一个系统分区中的系统文件出现问题时才会发挥作用,造成了资源的浪费。
为了解决使用两个完全同样的系统分区成本较高,造成资源浪费的问题,可以设置两个不对称的分区,即两个存储空间不同的系统分区。两个不对称的分区中较小的分区为最小系统,可以仅保留其升级和恢复的功能,而在其中较大的分区保留系统的全部功能,使得较小的分区在检测到较大的分区中的系统文件出现升级失败的情况时,对较大分区中的系统文件进行再次升级,保证较大分区中的系统始终能够正常启动,解决了系统升级失败无法正常启动的问题的同时,能够有效的节省成本。
图2为本发明实施例提供的一种嵌入式系统不对称分区的结构示意图。根据图2所示,在嵌入式系统中,可以包括bootloader、环境变量env、第一系统分区、第二系统分区、第一系统分区的环境变量分区、第二系统分区的环境变量分区以及数据存储空间data。其中,第一系统分区为较小分区,第二系统分区为较大分区。根据本发明实施例提供的技术方案,在系统正常启动时,bootloader可以读取环境变量env中的第二系统分区的环境变量分区,启动第二系统分区的系统。由于第二系统分区为较大分区,也就是说,第二系统分区的系统为全功能系统,因此,在每次系统正常启动时,启动第二系统分区的系统能够产品的正常使用。bootloader读取环境变量env中的第一系统分区的环境变量分区,以启动第一系统分区的系统。若启动第二系统分区的系统后,检测到第二系统分区的系统需要升级,则对第二系统分区的系统执行升级操作。若第二系统分区的系统升级失败,则重启系统,以启动第一系统分区的系统,并在第一系统分区的系统启动后,对第二系统分区的系统进行再次升级,直至第二系统分区的系统升级成功,并在升级成功后,重启系统,以启动第二系统分区的系统。
示例的,若启动第二系统分区的系统后,检测到第一系统分区的系统需要升级,则重启系统,以启动第一系统分区的系统,对其进行升级,在升级成功后,重启系统,以启动第二系统分区的系统。
因此,本发明实施例提供的技术方案第一系统分区的系统仅在其需要升级或第二系统分区的系统升级失败的情况才启动,并在完成升级任务后重启第二系统分区的系统,使得在正常的情况下,均启动第二系统分区的系统,能够保证嵌入式系统始终正常运行,而且节省了成本,避免造成资源浪费。
下面,将通过具体的实施例对本发明提供的基于不对称分区的系统升级方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3为本发明实施例提供的一种基于不对称分区的系统升级方法的流程示意图。该基于不对称分区的系统升级方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为基于不对称分区的系统升级装置,该基于不对称分区的系统升级装置可以为终端或者终端中的处理芯片。示例的,请参见图3所示,该基于不对称分区的系统升级方法可以包括:
S301、在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统。
根据上述实施例所述,本发明实施例中的第一系统分区仅具有升级和恢复功能,因此,在一种可能的实现方式中,在第二系统分区升级失败时,可以重启系统,使得在系统启动时,能够读取到用于启动第一系统分区的启动分区标志,从而第一系统分区中的第一系统。
在该种可能的实现方式下,在系统启动,读取用于启动第一系统分区的启动分区标志之前,可以包括:
在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;若检测到第二系统的待升级指示,则在服务器中下载升级包,并根据升级包,在第二系统分区中进行擦除操作,将升级包写入第二系统分区;在写入完成后,设置启动分区标志为用于验证第二系统是否升级成功的升级验证标志,并重启系统,验证第二系统是否升级成功;若检测到第一系统的待升级指示,则将启动分区标志设置为用于启动第一系统分区的启动分区标志,并重启系统。其中,在读取用于启动第一系统分区的启动分区标志之前启动系统,为系统的正常启动。可以理解的是,系统在正常启动时,需要先启动第二系统分区的第二系统。
示例的,在第二系统分区中第二系统启动后,需要检测是否存在系统升级的指示,并在检测到第二系统的待升级指示时,对第二系统进行升级。其中包括在服务器下载升级包,将升级包写入第二系统分区,并在写入完成后,重启系统,验证第二系统是否升级成功。
在本发明实施例中,在启动第二系统分区中的第二系统后,检测第一系统和第二系统是否需要升级,并执行相应的操作,使得在第一系统需要升级时,重启系统,以对第一系统进行升级操作,能够在不启动第一系统的情况下,确定其是否需要升级操作,避免了第一系统无法升级的问题。
示例的,在重启系统,验证所述第二系统是否升级成功时,可以在重启系统后,读取用于验证第二系统是否升级成功的升级验证标志,启动验证计数器和新的第二系统;若新的第二系统启动成功,则对启动验证计数器进行清零操作;若新的第二系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第二系统;重复执行上述步骤,直到新的第二系统启动成功,或,验证计数器的计数大于等于第一预设阈值;在验证计数器的计数大于或等于第一预设阈值时,将启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。
可以理解的是,验证计数器用于记录第二系统验证重启的次数,每重启失败一次,验证计数器的技术加1。第一预设阈值的大小可以为大于等于2的数值,本发明实施例对此不做任何限定。
示例的,在新的第二系统启动成功时,仅需要对启动验证计数器进行清零操作。而在在验证计数器的计数大于或等于第一预设阈值时,需要将启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。使得在重启系统后,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统。
在本发明实施例中,通过重启新的第二系统,以验证第二系统是否升级成功,能够及时对第二系统的升级情况进行检测。并在第二系统升级失败后,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第二系统的升级失败信息,再重启系统,使得在启动第一系统之后,第一系统能够得到第二系统失败的信息,从而执行针对性的操作。此外,在重启新的第二系统时,设置第一预设阈值,能够避免第二系统升级失败时一直在进行重启操作,导致系统无法使用的问题,从而提升了用户体验。
S302、若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,第二系统分区的存储空间大于第一系统分区的存储空间。
示例的,将第二系统分区的存储空间设置为大于第一系统分区,能够节省成本,使得第二系统分区中的第二系统能够具有嵌入式系统的产品的完整功能。本发明实施例对于具体的产品功能不做任何限定。
S303、根据第二系统的升级失败信息对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。
示例的,升级失败信息包括版本错误信息或升级错误信息。在根据升级失败信息对第二系统进行再次升级时,若升级失败信息为版本错误信息,则根据升级失败前的旧版本和升级失败的版本确定目标版本;在服务器中下载目标版本对应的目标升级包,并通过目标升级包对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统;若升级失败信息为升级错误信息,则通过升级失败的版本对应的升级包对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。
可以理解的是,在根据升级失败前的旧版本和升级失败的版本确定目标版本时,可以根据升级失败前的旧版本确定出可以升级的版本,将所有可以升级的版本中去除升级失败的版本,在剩下的版本中根据版本号或者升级包的大小,或者其他因素确定出目标版本。本发明实施例对此不做任何限定。例如,旧版本为1.12,升级失败的版本为1.14,确定出的所有可升级版本为1.14、1.15和1.16,因此,可以根据版本号的大小,将版本为1.16的确定为目标版本。
在升级失败信息为升级错误信息时,该升级错误信息可能为升级时出现中断导致的升级错误信息,例如设备断电等原因导致升级中断,或者,其他原因。本发明实施例对于升级错误信息的原因不做任何限定。
在本发明实施例中,针对版本错误信息或升级错误信息,执行不同的再次升级操作。其中,对于升级错误信息,通过升级失败的版本对应的升级包对第二系统进行再次升级,能够避免将正确版本的升级包误以为错误的升级包,提升再次升级的速度。
由此可见,本发明实施例提供的基于不对称分区的系统升级方法,在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统;若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,第二系统分区的存储空间大于第一系统分区的存储空间;根据第二系统的升级失败信息对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。本发明实施例提供的技术方案,由于第二系统分区的存储空间大于第一系统分区的存储空间,使得第二系统分区能够实现对应的产品的完整功能,同时能够节省成本,避免造成资源浪费。此外,在第一系统后,读取到用于标识第二系统分区中的第二系统升级失败的标志时,对第二系统进行再次升级,能够避免第二系统升级失败后无法运行,导致嵌入式系统无法正常运行的问题。
在本发明的另一实施例中,在第一系统启动后,若未读取到用于标识第二系统分区中的第二系统升级失败的标志,则在服务器中下载第一系统对应的升级包,并根据第一系统对应的升级包,在第一系统分区中进行擦除操作,将第一系统对应的升级包写入第一系统分区;在写入完成后,设置启动分区标志为用于验证第一系统是否升级成功的升级验证标志,并重启系统,验证第一系统是否升级成功。
根据上述实施例所述,若未读取到用于标识第二系统分区中的第二系统升级失败的标志,则表示在第一系统启动之前,启动了第二系统,且检测到需要对第一系统进行更新操作。因此,若未读取到用于标识第二系统分区中的第二系统升级失败的标志,则对第一系统执行升级操作。
可以理解的是,对第一系统进行升级操作的过程与对第二系统进行升级操作的过程相同,具体的可参见上述对第二系统进行升级操作的过程,本发明实施例在此不再赘述。
在本发明实施例中,在未读取到用于标识第二系统分区中的第二系统升级失败的标志时,对第一系统进行升级操作,能够避免不对第一系统进行升级的问题,从而保证第一系统中的为最新的版本,能够提升用户的体验。
示例的,在验证第一系统是否升级成功时,可以包括:
在重启系统后,读取用于验证第一系统是否升级成功的升级验证标志,启动验证计数器和新的第一系统;若新的第一系统启动成功,则对启动验证计数器进行清零操作;若新的第一系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第一系统;重复执行上述步骤,直到新的第一系统启动成功,或,验证计数器的计数大于等于第二预设阈值;在验证计数器的计数大于或等于第二预设阈值时,将启动分区标志设置为用于启动第二系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第一系统的升级失败信息,并重启系统。
示例的,第二预设阈值可以为大于或等2的数值,且第二预设阈值可以与第一预设阈值相同,也可以不相同,本发明实施例对此不做任何限定。
可以理解的是,本发明中验证第一系统升级是否成功的过程与上述实施例所述的验证第二系统升级是否成功的过程相同,具体的可参加上述实施例所述,本发明实施例在此不做任何限定。
在本发明实施例中,通过重启新的第一系统的方式,验证第一系统是否升级成功,能够及时对第一系统的升级情况进行反馈,避免了在第二系统出现问题时,第一系统升级失败导致嵌入式系统无法正常运行的问题,使得嵌入式系统始终能够正常运行,从而提升了用户体验。此外,通过设置第二预设阈值,能够避免在第一系统升级失败时,一直进行重启验证。
示例的,在第一系统升级失败后,重启系统时。在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;若读取到用于标识第一系统分区中的第一系统升级失败的标志,则获取第一系统的升级失败信息;根据第一系统的升级失败信息对第一系统进行再次升级。
在本发明中,对第一系统进行再次升级的方式,与上述实施例中对第二系统进行再次升级的方式相同,根据第一系统的升级失败信息,进行再次升级,具体的参见上述实施例所述,本发明实施例在此不再赘述。
在本发明实施例中,在第一系统升级失败时,对第一系统进行再次升级,使得第一系统为版本最新的系统,从而提升用户体验。
为了便于理解本发明实施例提供的基于不对称分区的系统升级方法,下面,将以第一系统分区为mini分区,第二系统分区为full分区为例,对本发明实施例提供的技术方案进行详细的描述,具体的可参见图4所示,图4为本发明实施例提供的另一种基于不对称分区的系统升级方法的流程示意图。
示例的,本发明实施例中的mini分区和full分区两个分区是通过软件上的优化,对分区做出调整。且mini分区和full分区为一小一大两个不对称的分区,其中,mini分区为最小系统,仅保留升级和恢复功能,可对mini分区的系统进行升级,也可在full分区的系统升级失败时恢复full分区的系统;full分区为全功能系统,可以实现完整产品功能,也可对mini或full分区分别实现升级和恢复。可以理解的是,通过划分mini分区和full分区,在生产时可在mini分区写入测试系统,用于生产测试。产品售出后第一次完成连网后将mini分区升级为最小系统,产品进入正常使用流程。
根据图4所示,本发明实施例提供的基于不对称分区的系统升级方法,在系统正常启动后,bootloader读取env分区中保存的启动分区标志。示例的,在嵌入式系统的架构中,第一系统分区,即mini可以表示为OS_mini分区,第二系统分区,即full分区可以表示为OS_full分区。对应的启动分区分别存储有OS_mini系统和OS_full系统。在读取启动分区标志后,可以包括以下4种可能的情况:
情况一:当读取到启动分区标志为OS_full分区时,正常启动OS_full分区的OS_full系统。在OS_full系统启动后,检测是否需要升级OS_full系统或OS_mini系统,若均不需要升级,则正常运行OS_full系统。若需要升级OS_mini时,则设置分区启动标志为OS_mini,并重启系统,即启动OS_mini系统。若需要升级OS_full系统,则从服务器下载OS_full升级包,擦除OS_full分区中原有的系统文件,以在OS_full分区中写入升级包,并设置启动分区标志为OS_full,设置升级验证标志,系统重启。在系统重启后,bootloader读取启动分区标志,读取到升级验证标志,在验证计数器小于等于1时,第一次尝试启动升级后的OS_full系统,验证计数器加1,若启动成功,则清除env中的升级验证标志,并且清零验证计数器。若启动失败,则再次启动,在第二次尝试启动升级后的OS_full系统失败时,bootloader会设置OS_full系统升级失败的标志,清除升级验证标志,设置启动分区标志为OS_mini,并重启系统。
情况二:在情况一所述的第二次尝试启动升级后的OS_full系统失败后,重启系统时,bootloader读取env中的启动分区标志,在读取到启动OS_mini分区时,启动OS_mini系统。在启动OS_mini系统后,读取OS_full系统升级失败的标志,并上报服务器OS_full系统升级失败的相关版本及信息。若实际失败的原因并非版本错误,则优先尝试恢复升级上一版本,并执行相似的升级和验证流程。对于具体的相关版本和信息和参见上述实施例所述的第二系统的升级失败信息,本发明实施例在此不再赘述。
情况三:在启动OS_full系统后,检测到需要升级OS_mini时,重启系统。在重启系统时,bootloader读取env中的启动分区标志,读取到启动OS_mini分区的启动分区标志时,启动OS_mini系统后,读取OS_full升级失败的标志,若未读取到OS_full系统升级失败的标志,则执行OS_mini系统升级流程,从服务器下载OS_mini系统升级包,擦除OS_mini分区中原有的系统文件,以在OS_mini分区写入升级包,设置分区启动标志为OS_mini,设置升级验证标志,系统重启。在系统重启时,bootloader读取启动分区标志,读取到升级验证标志,验证计数器小于等于1时,第一次尝试启动升级后的OS_mini系统,验证计数器加1,若启动成功,则清除env中的升级验证标志,并且清零验证计数器,设置启动分区标志为OS_full。若启动失败,则进行第二次尝试,在第二次尝试启动升级后的OS_mini系统失败时,bootloader设置OS_mini系统升级失败的标志,清除升级验证标志,设置启动分区标志为OS_full,并重启系统。
情况四:在情况三所述的第二次尝试启动升级后的OS_mini系统失败后,重启系统时,bootloader读取env中的启动分区标志,读取到启动OS_full分区,启动OS_full系统后,读取OS_mini系统升级失败的标志,并上报服务器OS_full系统升级失败的相关版本及信息。若实际失败的原因并非版本错误,则优先尝试恢复升级上一版本,并执行相似的升级和验证升级流程。对于具体的相关版本和信息和参见上述实施例所述的第一系统的升级失败信息,本发明实施例在此不再赘述。
综上所述,本发明实施例提供的技术方案通过设置不对称的OS_mini分区和OS_full分区,实现OS_mini分区中的OS_mini系统和OS_full分区中的OS_full系统互为备份,互相修复升级,节省了成本,避免造成资源浪费。
图5为本发明实施例提供的一种基于不对称分区的系统升级装置50的结构示意图,示例的,请参见图5所示,该基于不对称分区的系统升级装置50可以包括:
启动模块501,用于在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统。
读取模块502,用于若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,第二系统分区的存储空间大于第一系统分区的存储空间。
升级模块503,用于根据第二系统的升级失败信息对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。
可选的,升级失败信息包括版本错误信息或升级错误信息;升级模块503,具体用于在升级失败信息为版本错误信息时,根据升级失败前的旧版本和升级失败的版本确定目标版本;在服务器中下载目标版本对应的目标升级包,并通过目标升级包对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统;并在升级失败信息为升级错误信息时,通过升级失败的版本对应的升级包对第二系统进行再次升级,并在升级成功后,启动第二系统分区中的第二系统。
可选的,启动模块501,还用于在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;在检测到第二系统的待升级指示时,在服务器中下载升级包,并根据升级包,在第二系统分区中进行擦除操作,将升级包写入第二系统分区。并在检测到第一系统的待升级指示时,将启动分区标志设置为用于启动第一系统分区的启动分区标志,并重启系统。
装置还包括验证模块504,验证模块504,用于在写入完成后,设置启动分区标志为用于验证第二系统是否升级成功的升级验证标志,并重启系统,验证第二系统是否升级成功。
可选的,验证模块504,具体用于在重启系统后,读取用于验证第二系统是否升级成功的升级验证标志,启动验证计数器和新的第二系统;在新的第二系统启动成功时,对启动验证计数器进行清零操作;在新的第二系统初次启动失败时,控制启动验证计数器的计数加1,并第二次启动第二系统;重复执行上述步骤,直到新的第二系统启动成功,或,验证计数器的计数大于等于第一预设阈值;在验证计数器的计数大于或等于第一预设阈值时,将启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。
可选的,升级模块503,还用于在未读取到用于标识第二系统分区中的第二系统升级失败的标志时,在服务器中下载第一系统对应的升级包,并根据第一系统对应的升级包,在第一系统分区中进行擦除操作,将第一系统对应的升级包写入第一系统分区。
验证模块504,还用于在写入完成后,设置启动分区标志为用于验证第一系统是否升级成功的升级验证标志,并重启系统,验证第一系统是否升级成功。
可选的,验证模块504,具体用于在重启系统后,读取用于验证第一系统是否升级成功的升级验证标志,启动验证计数器和新的第一系统;在新的第一系统启动成功时,对启动验证计数器进行清零操作;在新的第一系统初次启动失败时,控制启动验证计数器的计数加1,并第二次启动第一系统;重复执行上述步骤,直到新的第一系统启动成功,或,验证计数器的计数大于等于第二预设阈值;在验证计数器的计数大于或等于第二预设阈值时,将启动分区标志设置为用于启动第二系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第一系统的升级失败信息,并重启系统。
可选的,启动模块501,还用于在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统。
读取模块502,还用于在读取到用于标识第一系统分区中的第一系统升级失败的标志时,获取第一系统的升级失败信息。
升级模块503,还用于根据第一系统的升级失败信息对第一系统进行再次升级。
本发明实施例提供的基于不对称分区的系统升级装置,可以执行上述任一实施例中的基于不对称分区的系统升级方法的技术方案,其实现原理以及有益效果与基于不对称分区的系统升级方法的实现原理及有益效果类似,可参见基于不对称分区的系统升级方法的实现原理及有益效果,此处不再进行赘述。
图6为本发明提供的一种电子设备结构示意图。如图6所示,该电子设备600可以包括:至少一个处理器601和存储器602。
存储器602,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器602可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器601用于执行存储器602存储的计算机执行指令,以实现前述方法实施例所描述的基于不对称分区的系统升级方法。其中,处理器601可能是一个中央处理器(CentralProcessing Unit,简称为CPU),或者是特定集成电路(Application Specific IntegratedCircuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。具体的,在实现前述方法实施例所描述的基于不对称分区的系统升级方法时,该电子设备例如可以是终端、服务器等具有处理功能的电子设备。
可选的,该电子设备600还可以包括通信接口603。在具体实现上,如果通信接口603、存储器602和处理器601独立实现,则通信接口603、存储器602和处理器601可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口603、存储器602和处理器601集成在一块芯片上实现,则通信接口603、存储器602和处理器601可以通过内部接口完成通信。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的基于不对称分区的系统升级方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于不对称分区的系统升级方法,其特征在于,所述方法包括:
在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统;
若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,所述第二系统分区的存储空间大于所述第一系统分区的存储空间;
根据所述第二系统的升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
2.根据权利要求1所述的方法,其特征在于,所述升级失败信息包括版本错误信息或升级错误信息;
所述根据所述升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统,包括:
若所述升级失败信息为版本错误信息,则根据升级失败前的旧版本和升级失败的版本确定目标版本;
在服务器中下载所述目标版本对应的目标升级包,并通过所述目标升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统;
若所述升级失败信息为升级错误信息,则通过升级失败的版本对应的升级包对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
3.根据权利要求1或2任一项所述的方法,其特征在于,在系统启动,读取用于启动第一系统分区的启动分区标志之前,所述方法还包括:
在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;
若检测到所述第二系统的待升级指示,则在服务器中下载升级包,并根据所述升级包,在所述第二系统分区中进行擦除操作,将所述升级包写入第二系统分区;
在写入完成后,设置启动分区标志为用于验证所述第二系统是否升级成功的升级验证标志,并重启系统,验证所述第二系统是否升级成功;
若检测到所述第一系统的待升级指示,则将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,并重启系统。
4.根据权利要求3所述的方法,其特征在于,所述重启系统,验证所述第二系统是否升级成功,包括:
在重启系统后,读取用于验证所述第二系统是否升级成功的升级验证标志,启动验证计数器和新的第二系统;
若所述新的第二系统启动成功,则对所述启动验证计数器进行清零操作;
若所述新的第二系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第二系统;
重复执行上述步骤,直到所述新的第二系统启动成功,或,所述验证计数器的计数大于等于第一预设阈值;
在所述验证计数器的计数大于或等于所述第一预设阈值时,将所述启动分区标志设置为用于启动第一系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,保存第二系统的升级失败信息,并重启系统。
5.根据权利要求3所述的方法,其特征在于,在启动第一系统分区中的第一系统之后,所述方法还包括:
若未读取到用于标识第二系统分区中的第二系统升级失败的标志,则在服务器中下载第一系统对应的升级包,并根据所述第一系统对应的升级包,在所述第一系统分区中进行擦除操作,将所述第一系统对应的升级包写入第一系统分区;
在写入完成后,设置启动分区标志为用于验证所述第一系统是否升级成功的升级验证标志,并重启系统,验证所述第一系统是否升级成功。
6.根据权利要求5所述的方法,其特征在于,所述重启系统,验证所述第一系统是否升级成功,包括:
在重启系统后,读取用于验证所述第一系统是否升级成功的升级验证标志,启动验证计数器和新的第一系统;
若所述新的第一系统启动成功,则对所述启动验证计数器进行清零操作;
若所述新的第一系统初次启动失败,则控制启动验证计数器的计数加1,并第二次启动第一系统;
重复执行上述步骤,直到所述新的第一系统启动成功,或,所述验证计数器的计数大于等于第二预设阈值;
在所述验证计数器的计数大于或等于所述第二预设阈值时,将所述启动分区标志设置为用于启动第二系统分区的启动分区标志,设置用于标识第二系统分区中的第二系统升级失败的标志,并保存第一系统的升级失败信息,并重启系统。
7.根据权利要求6所述的方法,其特征在于,在将所述启动分区标志设置为用于启动第二系统分区的启动分区标志,并重启系统之后,所述方法还包括:
在系统启动时,读取用于启动第二系统分区的启动分区标志,启动第二系统分区中的第二系统;
若读取到用于标识第一系统分区中的第一系统升级失败的标志,则获取第一系统的升级失败信息;
根据所述第一系统的升级失败信息对所述第一系统进行再次升级。
8.一种基于不对称分区的系统升级装置,其特征在于,包括:
启动模块,用于在系统启动时,读取用于启动第一系统分区的启动分区标志,启动第一系统分区中的第一系统;
读取模块,用于若读取到用于标识第二系统分区中的第二系统升级失败的标志,则获取第二系统的升级失败信息,所述第二系统分区的存储空间大于所述第一系统分区的存储空间;
升级模块,用于根据所述第二系统的升级失败信息对所述第二系统进行再次升级,并在升级成功后,启动所述第二系统分区中的第二系统。
9.一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111403071.2A CN114265603A (zh) | 2021-11-24 | 2021-11-24 | 基于不对称分区的系统升级方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111403071.2A CN114265603A (zh) | 2021-11-24 | 2021-11-24 | 基于不对称分区的系统升级方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265603A true CN114265603A (zh) | 2022-04-01 |
Family
ID=80825418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111403071.2A Pending CN114265603A (zh) | 2021-11-24 | 2021-11-24 | 基于不对称分区的系统升级方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265603A (zh) |
-
2021
- 2021-11-24 CN CN202111403071.2A patent/CN114265603A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9471435B2 (en) | Information processing device, information processing method, and computer program | |
US8918778B2 (en) | Method of fail safe flashing management device and application of the same | |
WO2016206514A1 (zh) | 启动处理方法及装置 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
CN106775674B (zh) | 一种基于通用引导加载程序的设备及其启动方法 | |
CN110780942A (zh) | 系统启动方法、装置、节点设备及计算机可读存储介质 | |
CN110737449A (zh) | 用于处理设备固件的方法、装置和机器可读存储介质 | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
KR101968272B1 (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
JP2005284902A (ja) | 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN115617488A (zh) | 操作系统迁移方法、装置、计算设备及存储介质 | |
CN111258617B (zh) | 一种电子设备 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN113297010A (zh) | 基于片上系统的固件恢复方法、装置、系统及存储介质 | |
CN113377425A (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
CN106611124A (zh) | 计算机装置及其开机方法 | |
CN112395130A (zh) | 一种系统备份的方法和设备 | |
CN116932010B (zh) | 系统固件升级方法、装置及服务器 | |
CN115373906B (zh) | 嵌入式系统架构的备份启动方法、装置、设备及芯片 | |
CN111045709B (zh) | 固件升级方法和固件升级装置 | |
US9971659B1 (en) | Memory programming providing corruption protection | |
CN117687663B (zh) | 基于ota的分区动态调整方法、装置、设备及存储介质 |
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 |