用于管理操作系统的方法、装置、设备和存储介质与流程

文档序号:18463780发布日期:2019-08-17 02:16阅读:178来源:国知局
用于管理操作系统的方法、装置、设备和存储介质与流程

本公开的实施例主要涉及计算机领域,并且更具体地,涉及用于管理操作系统的方法、装置、设备和计算机可读存储介质。



背景技术:

空中下载技术ota越来越多地应用在物联网领域,例如在车联网场景中应用在车载系统中。车载系统能够通过ota方便地在线升级,从而拥有更多更新的功能和提升的性能。然而,车载系统所部署的诸如安卓系统的原生操作系统在升级失败后可能面临无法启动的问题。



技术实现要素:

根据本公开的示例实施例,提供了一种用于管理操作系统的方案。

在本公开的第一方面中,提供了一种管理操作系统的方法。该方法包括响应于操作系统将要被启动,通过独立于操作系统而设置的初始化组件,初始化与操作系统相关的硬件设备。该方法还包括确定操作系统是否需要被升级。该方法进一步包括基于确定的结果,执行对操作系统的系统组件的操作,系统组件至少包括用于引导和加载操作系统以启动操作系统的引导加载组件。

在本公开的第二方面中,提供了一种用于管理操作系统的装置。该装置包括初始化模块,被配置为响应于操作系统将要被启动,通过独立于操作系统而设置的初始化组件,初始化与操作系统相关的硬件设备。该装置还包括升级确定模块,被配置为确定操作系统是否需要被升级。该装置进一步包括操作执行模块,被配置为基于确定的结果,执行对操作系统的系统组件的操作,系统组件至少包括用于引导和加载操作系统以启动操作系统的引导加载组件。

在本公开的第三方面中,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第一方面的方法。

在本公开的第四方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。

应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;

图2示出了根据本公开的实施例的管理操作系统的过程的流程图;

图3示出了根据本公开的一些实施例的执行对系统组件的操作的过程的流程图;

图4示出了根据本公开的实施例的用于管理操作系统的装置的示意性框图;以及

图5示出了能够实施本公开的多个实施例的计算设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

如前文所提及的,操作系统如果升级失败可能面临无法重启的问题。举例而言,对于目前车载系统所搭载的安卓定制化系统,在ota升级过程中,如果安卓系统的引导加载区(bootloader)升级失败,则系统可能无法重新启动。传统上,为了解决这一问题,将安卓系统的引导加载区、内核区(kernel)、系统服务区(systemserver)等全部做系统备份,当系统升级失败时,通过备份的安卓系统来重启。

这种传统方案有如下缺点。一是整个操作系统的备份极大地占用了存储资源。以车载场景为例,目前汽车车机的硬件资源配置与手机硬件资源配置相差较远,而将整个操作系统(诸如,安卓系统)进行备份,极大的占用原本硬件资源很紧张的车机系统的资源,从而加大对价格敏感的车企的硬件成本,提高用户购买汽车的整体成本。二是当第一次升级失败后,由于原先的操作系统已损坏,后续二次升级面临极大的安全风险,因而无法进行多次升级。

根据本公开的实施例,提出了一种管理操作系统的方案。在该方案中,设置独立于原生操作系统的初始化组件。在通过初始化组件对操作系统所处的硬件环境进行初始化后,由初始化组件来确定和执行对操作系统的系统组件的操作。以此方式,在初始化组件的引导下,操作系统将升级或启动。本公开的方案避免了对操作系统的冗余备份、减少了硬件资源的占用,并且能够在初次升级失败后进行多次升级。

以下将参照附图来具体描述本公开的实施例。

图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。在示例环境100中,操作系统101被部署或实现在计算设备102中。计算设备102位于车辆103内,例如计算设备102可以是用于车联网的车载设备。尽管将计算设备102示出为位于车辆103内,但这仅是示例性的。本公开的实施例可以应用于任何合适的计算设备,诸如台式计算机之类的固定式计算设备,或者诸如移动电话、平板计算机之类的便携式计算设备。

操作系统101可以是适于使计算设备102实现各种功能的任何操作系统,诸如安卓系统、linux系统等。操作系统101可以包括多个系统组件或者多个区,例如图1中示出的引导加载组件111、内核组件112、系统服务组件113和应用程序组件114。

图1中示出的引导加载组件111用于引导和加载操作系统101以启动操作系统101。引导加载组件111可以认为是操作系统101的原生的引导加载区(bootloader),例如u-boot。操作系统101还可以包括其他系统组件。如图1所示的,操作系统101还包括内核组件112,诸如内核区;系统服务组件113,诸如系统区(systemserver);以及应用程序组件114,诸如应用区。应当理解,图1中所示的系统组件和系统组件的数目仅是示例性的,而无意限制本公开的范围。操作系统101可以取决于其具体类型而包括不同的系统组件或分区。

尽管图1中未示出,但是计算设备102还包括各种硬件部件,例如处理单元、存储器等。初始化组件110例如可以被实现为微引导区,其独立于操作系统101而设置。在一些实施例中,作为初始化组件110的微引导区可以被认为是对操作系统101的原生引导加载区功能的改写和缩减。初始化组件110也可以以任何其他适当方式被实现。例如初始化组件110可以作为外部组件而被并入计算设备102中或以适当方式与计算设备102中的操作系统101耦合,从而执行相应的功能。

对于通常的操作系统,在上电之后,首先动作的是原生的引导加载组件或引导加载程序(例如,安卓系统的u-boot),其将初始化硬件设备、建立内存空间的映射图,从而将操作系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统的内核准备好正确的环境。对于图1所示的计算设备102,在上电之后,首先动作的是初始化组件110(例如,微引导区),而不是引导加载组件111或引导加载程序。

为了更清楚地理解本公开的实施例所提供的管理操作系统的方案,将参照图2来进一步描述本公开的实施例。图2示出了根据本公开的实施例的管理操作系统的过程200的流程图。过程200可以在图1的计算设备102处通过初始化组件110来实现。为便于讨论,将结合图1来描述过程200。

在框210,确定操作系统101是否将要被启动。例如,确定操作系统101是否被上电。如果计算设备102上的电源按钮被按下,或者在车载情况下,车辆103被启动使得计算设备102的电源接通,则可以确定操作系统101将要被启动。如果在框210确定操作系统101将要被启动,则过程200进行到框220。

在框220,通过独立于操作系统101而设置的初始化组件110来初始化与操作系统101相关的硬件设备。与操作系统101相关的硬件设备可以是部署有操作系统101的计算设备102或计算系统中运行操作系统101所需的硬件部件的至少一部分。初始化组件110可以执行与原生引导加载区的初始化操作相同或相似的操作,以使得计算设备102的硬件、固件和软件中的至少一部分能够由初始化组件110使用来管理操作系统101的启动或升级。

初始化组件110在框220执行的初始化操作可以取决于计算设备102的具体硬件、软件环境而不同。在一些实施例中,初始化组件110可以执行原生引导加载区的全部初始化操作,使得操作系统101达到启动状态。

在一些实施例中,初始化组件110可以执行与原生引导加载区相同或相似的部分初始化操作。例如,在框220执行的初始化操作可以包括:设置处理单元的寄存器,例如设置中央处理单元cpu的寄存器;设置处理单元的模式,例如设置cpu处于正常模式、异常模式、管理模式、中断模式等;设置存储器控制器,例如设置内存;设置中断;关闭看门狗;设置时钟频率,例如操作系统101的适中频率;以及设置堆栈。在框220处进行哪些初始化操作可以取决于框230和240处的动作所需的硬件环境。

在框230,初始化组件110确定操作系统101是否需要被升级。可以通过不同的方式来确操作系统101是否需要被升级。

在一些实施例中,初始化组件110可以获取指示操作系统101是否需要被升级的标志。这样的标志例如可以被存储在计算设备102的存储器或其他存储装置中,初始化组件110可以读取该标志。例如,当该标志为某一预定值,初始化组件110可以确定操作系统101需要被升级;当该标志被清零或者为其他值时,可以确定操作101无需被升级。该标志可以由例如应用程序组件114在需要升级时配置,初始化组件110自身也可以修改该标志,如下文将要描述的。

在一些实施例中,计算设备102中可以存在用于存储操作系统101的升级文件的特定存储区。初始化组件110可以检测该特定存储区是否存储有升级文件。如果初始化组件110检测到该特定存储区为空,则可以确定操作系统101无需被升级;如果初始化组件110检测到该特定存储区不是空的,则可以确定操作系统101需要被升级。

在另一些实施例中,初始化组件110可以获得操作系统101的当前版本的版本信息(例如,版本号)和升级版本的版本信息,然后通过比较版本信息来确定操作系统101是否需要被升级。在这种情况下,当前版本的版本信息可以被存储在计算设备102中,而升级版本的版本信息例如可以通过网络从云端或服务器获取。在这样的实施例中,为了能够获取版本信息,需要在框220进行相应的硬件初始化。

在框240,初始化组件110基于在框230确定的结果,执行对操作系统110的系统组件的操作。系统组件至少包括用于引导和加载操作系统101以启动操作系统101的引导加载组件111。在一些实施例中,初始化组件110可以使操作系统101进入升级模式,即对至少部分的系统组件进行升级,同时初始化组件110自身不升级。在一些实施例中,初始化组件110可以使操作系统101进入正常启动模式。下面将参考图3来具体描述这一过程。

图3示出了根据本公开的一些实施例的执行对系统组件的操作的过程300的流程图。过程300可以在图1的计算设备102处通过初始化组件110来实现,并且可以被认为是图2中的框240的具体实现。

在框310,初始化组件110确定操作系统101是否需要被升级。在框310执行的动作与上文参考框230所描述的相同。如果初始化组件110确定操作系统101无需被升级,例如上文所提及的标志被清零,则过程300进行到框320。

在框320,初始化组件110激活引导加载组件111,以使得引导加载组件111启动操作系统101。在这种情况下,初始化组件110确定操作系统101应当正常启动。初始化组件110可以通过跳转到引导加载组件111的入口地址来激活引导加载组件111。举例而言,初始化组件110可以使得指令的执行跳转到引导加载区或引导加载程序的起始地址(诸如,0x00000000)。

以此方式,引导加载组件111将开始初始化硬件设备、建立内存空间的映射图,以使操作系统101的软硬件环境达到适于运行的状态,从而启动操作系统101。应当理解,由引导加载组件111执行的硬件初始化等操作将使得操作系统101达到完全适于运行的状态;而在框220处执行的硬件设备初始化仅需使得初始化组件110能够执行框230和240的操作即可。然而还应当理解,在框220处执行的硬件设备初始化也可以可选地使得操作系统101达到完全适于运行的状态。

如果初始化组件110在框310确定操作系统101需要被升级,例如上文所提及的标志具有预定值,则初始化组件110将引导和完成操作系统101的升级。在一些实施例中,过程300进行到框330。

在框330,初始化组件110获取针对系统组件的升级版本的升级文件和针对系统组件的当前版本的镜像文件。这里的系统组件可以包括图1中所示的引导加载组件111、内核组件112、系统服务组件113和应用程序组件114中的一个或多个。

在升级文件先前已经被存储在计算设备102中的情况下,初始化组件110可以例如从计算设备102的特定存储区中读取升级文件。还可以利用例如ota技术来下载升级文件。当前版本的镜像文件可以从计算设备102的存储器或存储装置中读取。在获取升级文件和镜像文件的同时,还可以获取升级版本的版本信息和当前版本的版本信息,版本信息例如是版本号、版本标识符等。

在框340,初始化组件110确定当前版本是否不同于升级版本。初始化组件110可以进行版本检验。例如,可以将两个版本号或版本标识符进行比较。如果确定当前版本不同于升级版本,则过程300进行到框350。

在框350,初始化组件110基于升级文件和镜像文件,更新系统组件,例如更新图1中所示的引导加载组件111、内核组件112、系统服务组件113和应用程序组件114中的一个或多个。例如,初始化组件110可以利用升级文件和镜像文件来生成相应系统组件的更新文件,然后将更新文件写入相应系统组件所在的分区中作为更新后的系统组件。这样的升级过程可以是差分升级过程。

应当理解,在操作系统101的系统组件升级过程中,初始化组件110不被升级,这样无论操作系统101的升级是否成功都不会影响初始化组件110的激活或操作。还应当理解,以上结合图3所描述的升级过程是示例性,本公开的实施例可以应用于各种升级过程。

在一些实施例中,初始化组件110还可以确定系统组件是否被成功更新。如果系统组件被成功更新,则可以激活更新后的引导加载组件111,以使得更新后的引导加载组件111启动操作系统101。例如,可以跳转到引导加载组件111的起始地址处执行。在上文描述的利用标志来确定操作系统101是否需要被升级的实施例中,初始化组件110还可以设置该标志以指示操作系统101无需被升级,例如将该标志清零。在上文描述的检测用于存储升级文件的特定存储区的实施例中,初始化组件110可以删除该存储区中存储的升级文件,以指示操作系统101无需被升级。

如果系统组件未被成功更新,则可以基于升级文件和镜像文件来再次更新系统组件。在上文描述的利用标志来确定操作系统101是否需要被升级的实施例中,初始化组件110将不会重置该标志。在上文描述的检测用于存储升级文件的特定存储区的实施例中,初始化组件110将不删除该存储区中存储的升级文件。

由于系统组件升级过程中,独立于操作系统101而设置的初始化组件110不被升级,因此升级的失败将不对初始化组件110的功能产生影响。在这种情况下,初始化组件110可以引导和执行系统组件的再次更新,例如重复框330-350的动作,或者重复框350的动作。此外,如果在升级过程中计算设备102掉电,导致升级中断,则当再次加电时可以执行图2中所示的过程200。

以上描述了根据本公开实施例的用于管理操作系统的方案。该方案避免了对操作系统进行多余的备份,减少了资源占用。另外,本公开的实施例能够在升级失败后进行多次升级,而且避免了传统方案在二次升级时对备份系统造成损坏的风险。本公开的实施例可以应用于车联网的车载系统,以降低车辆的维护成本并且满足汽车行业的安全性需求。此外,本公开的实施例还可以应用于利用ota技术进行升级或者通过与云端的通信进行升级的其他系统或设备,例如物联网应用中的各种终端设备。

图4示出了根据本公开的一些实施例的用于管理操作系统的装置400的示意性框图。装置400可以被包括在图1的计算设备102中或者被实现为计算设备102。

如图4所示,装置400包括:初始化模块410,被配置为响应于操作系统将要被启动,通过独立于操作系统而设置的初始化组件,初始化与操作系统相关的硬件设备;升级确定模块420,被配置为确定操作系统是否需要被升级;以及操作执行模块430,被配置为基于确定的结果,执行对操作系统的系统组件的操作,系统组件至少包括用于引导和加载操作系统以启动操作系统的引导加载组件。

在一些实施例中,操作执行模块430包括:文件获取模块,被配置为响应于确定操作系统需要被升级,获取针对系统组件的升级版本的升级文件和针对系统组件的当前版本的镜像文件;以及组件更新模块,被配置为响应于当前版本不同于升级版本,基于升级文件和镜像文件,更新系统组件。

在一些实施例中,组件更新模块包括被配置为更新引导加载组件的第一更新模块和以下中的至少一项:第二更新模块,被配置为更新操作系统的内核组件;第三更新模块,被配置为更新操作系统的系统服务组件;以及第四更新模块,被配置为更新操作系统的应用程序组件。

在一些实施例中,装置400还包括:更新确定模块,被配置为确定系统组件是否被成功更新;第一激活模块,被配置为响应于系统组件被成功更新,激活更新后的引导加载组件,以使得更新后的引导加载组件启动操作系统;以及再次更新模块,被配置为响应于系统组件未被成功更新,基于升级文件和镜像文件来再次更新系统组件。

在一些实施例中,操作执行模块430包括:第二激活模块,被配置为响应于确定操作系统无需被升级,激活引导加载组件,以使得引导加载组件启动操作系统。

在一些实施例中,初始化模块410包括以下中的至少一项:第一初始化模块,被配置为设置处理单元的寄存器;第二初始化模块,被配置为设置处理单元的模式;第三初始化模块,被配置为设置存储器控制器;第四初始化模块,被配置为设置中断;第五初始化模块,被配置为关闭看门狗;第六初始化模块,被配置为设置时钟频率;以及第七初始化模块,被配置为设置堆栈。

应当理解,以上结合图2至图3所描述的由初始化组件110执行的过程可以由装置400实现。初始化组件110可以由装置400实现或者可以被实现为装置400的一部分。还应当理解,当初始化组件110被实现为装置400的一部分时,装置400还可以包括除图4中所示的模块之外的模块。

图5示出了可以用来实施本公开的实施例的示例设备500的示意性框图。设备500可以用于实现图1的计算设备102。如图所示,设备500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序指令,来执行各种适当的动作和处理。在ram503中,还可存储设备500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

处理单元501执行上文所描述的各个方法和处理,例如过程200和300中的任一个。例如,在一些实施例中,过程200和300中的任一个可以被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到ram503并由cpu501执行时,可以执行上文描述的过程200和300中的任一个的一个或多个步骤。备选地,在其他实施例中,cpu501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200和300中的任一个。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)等等。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

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