一种安全远程升级嵌入式Linux内核的方法及系统的制作方法

文档序号:6587065阅读:461来源:国知局
专利名称:一种安全远程升级嵌入式Linux内核的方法及系统的制作方法
技术领域
本发明属于网络通信领域,尤其涉及一种安全远程升级嵌入式Li皿x内核的方法及系统
背景技术
随着现代电子设备智能化、网络化的发展,越来越多的功能需要一个强大的操作系统作 支撑。Linux作为一种优秀的操作系统在嵌入式领域有着广泛应用。在Li皿x广泛应用的情形 下,也产生了对Linux内核进行远程升级的需求 一方面电子设备在使用过程中需要升级功 能,有可能需要内核的支持;另一方面,Linux本身也处在一个持续的发展过程中,许多新 的特性不断的加入。
通常一个完整的嵌入式Li皿x软件系统由Bootloader、内核、文件系统和应用程序组成 。内核完成对所有的资源进行管理,包括任务调度、驱动各种外设和提供基本的服务(如文 件系统和网络协议等)。应用程序存放在文件系统中,启动后以进程的形式存在。应用程序 可以使用网络连接主机通信,完成控制和数据传输等功能。Li皿x内核作为Li皿x操作系统的 核心部件, 一般以压縮后的二进制文件存在,在嵌入式系统启动时由Bootloader从非易失性 存储器(一般是FLASH)搬移到内存并运行。内核运行后,非易失性存储器中的内核镜像在 重启前不再使用,为在线升级提供了条件。
升级Li皿x内核可以通过升级模块的方式实现,模块存放在文件系统中,由应用程序插 入到正在运行的内核中或是从中卸载。虽然模块的方式易于实现,但是限制很多,只能作为 当前内核的一些修补,不能实现不同发行版本之间的升级,也不能对系统的一些关键配置进 行修改。直接在线升级内核的方法是在应用层将新版本的Li皿x内核直接写入存储器,但 这样存在很高的风险, 一旦升级过程中出现严重错误(如断电等)或者升级了一个不可启动 的错误版本,系统将无法再次启动,必须进行现场的人工修复,这点对于远端无人职守的设 备是无法容忍的。

发明内容
本发明的目的在于提供一种安全远程升级嵌入式Li皿x内核的方法,旨在解决现有的Li皿x内核远程升级技术要么不够灵活要么缺乏安全保障的问题。 本发明的目的是这样实现的
一种安全远程升级嵌入式Li皿X内核的方法,所述方法包括下述步骤
A、 系统存储两个或两个以上Linux内核文件,其中,Linux系统默认启动的内核为工作 内核,其余的Linux内核为后备内核,所述后备内核能够确保系统成功启动;
B、 当需要对Linux内核进行升级时,以所述工作内核为升级对象进行升级;
C、 当所述工作内核因升级失败而无法启动时,启动所述后备内核。 所述步骤C具体包括下述步骤
cl、设置状态参数变量R和参数值STO、 ST1,并在系统上电复位和正常复位时设置 R=ST0;
c2、判断R是否为STO,是则由Bootloader将工作内核搬移到内存运行,并设置I^ST1, 否则Bootloader将后备内核搬移到内存运行;
c3、当内核启动所耗时间超过预设时间限定时,重启系统,否则设置I^ST0; 所述步骤B还包括升级后设置I^STO并重启系统。
所述状态参数还包括ST2,在所述步骤c2中,当R为STO时,在所述由Bootloader将工作 内核搬移到内存运行后还进一步包括对搬移中的工作内核文件进行校验,如果校验通过, 则设置I^ST1,否则设置I^ST2。
在所述步骤c3中,当系统顺利启动后,在所述设置I^STO前还进一步包括判断当前R是 否为STO,是则退出,否则继续判断R是否为ST1,是则向远程主机发送携带有升级后的工作 内核通过校验但不能正常启动的信息的告警信息,否则向远程主机发送携带有升级后的工作 内核未通过校验的信息的告警信息。
所述后备内核有2个,并在设备出厂时均经过严格测试能够正常工作,其中一个后备内 核不可改写,在所述步骤c3中,如果当前R为STO,则把另一个后备内核覆盖为当前工作内核 文件。
所述后备内核有l个,其在设备出厂时经过严格测试能够正常工作,并不可改写。 本发明的另一目的在于提供一种安全远程升级嵌入式Li皿x内核的系统,包括控制单 元和存储有Linux系统默认启动的内核的内核存储单元,其特征在于,所述内核存储单元中 还存储有l个或者多个能够确保系统成功启动的Li皿x内核文件,所述系统还包括状态寄存器 ,所述控制单元用于根据状态寄存器中的不同参数值从所述内核存储单元中搬移相应的内核 文件至内存运行。所述系统还包括看门狗,用于在所述述控制单元运行内核异常超时时,输出一个复位信 号至控制单元使其重新启动。
所述内核存储单元为一个非易失性存储器,所述Li皿x系统默认启动的内核和其它内核 分别存储在所述内核存储单元的不同MTD分区中。
所述内核存储单元包括多个相互独立的非易失性存储设备,所述Li皿x系统默认启动的 内核和其它内核分别存储在不同的存储设备中。
本发明的突出优点是本发明通过在设备中除系统默认启动的内核外还存储了至少l个 的能够保证系统成功启动的Linux内核,在对系统默认启动的内核远程升级失败而无法启动 时则可以启动其他内核,可以实现系统任何情况下均能成功启动,从而在实现对Linux内核 灵活升级的同时,也为远程升级提供了可靠的安全保障。


图l是本发明的一个实施例提供的安全远程升级嵌入式Li皿x内核方法的流程图2是本发明的一个优选实施例提供的安全远程升级嵌入式Li皿x内核方法的流程图;
图3是本发明的一个优选实施例提供的安全远程升级嵌入式Li皿x内核系统的结构图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发 明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用 于限定本发明。
本发明实施例提供的安全远程升级嵌入式Li皿x内核方法通过存储两个或更多Li皿x内核 文件,并设定Linux系统默认启动的内核为工作内核,该工作内核能够在升级过程中被修改 更新,其余的Linux内核为后备内核,该后备内核能够确保系统成功启动。工作内核所在存 储区是应用层可写的,在需要对Linux内核进行升级时,始终以所述工作内核为升级对象进 行升级,新的内核会覆盖当前的内核。正常情况下,均启动工作内核,当工作内核因升级过 程中出现严重错误(如断电等)或者升级了一个不可启动的错误版本等原因造成无法启动时 ,则启动所述后备内核,成功启动后可以对工作内核进行重新升级,从而可以保证设备不会 因为Li皿x内核远程升级失败而造成无法通信的安全问题,有效地避免现场的人工修复。
图l示出了本发明的一个实施例提供的安全远程升级嵌入式Li皿x内核方法的实现流程。 在本发明实施例中,设置了两个状态参数STO (表示启动工作内核)、ST1 (表示内核正在启动中,Bootloader如果在启动时发现当前状态为STl,则说明上次启动失败),可以由
Boot loader根据状态参数决定使用哪个内核启动。
在步骤S100中,系统上电复位和正常复位时设置状态参数值I^STO。
在步骤S102中,判断当前状态参数是否为STO,是,则继续执行步骤S104;否,则执行
步骤S108。
在步骤S104中,由Bootloader将工作内核从非易失性存储器(一般是FLASH)搬移到内存。
在步骤S106中,在运行工作内核前或同时设置I^ST1,继续执行步骤SllO。 在步骤S108中,当当前状态参数不为STO时,即表示工作内核不能启动,贝l」Bootloader 将后备内核从非易失性存储器搬移到内存。
在步骤S110中,启动内核,并开始监测启动所耗时间。
在步骤S112中,判断启动所耗时间是否超过预设时间限定,是,即表示该内核启动失败 ,则对设备重新启动后,返回执行步骤S102;否,即表示该内核文件启动成功,继续执行步 骤S114。
在步骤S 114中,通过应用程序重新设置状态参数值I^STO 。
内核成功启动后,当有升级内核的需求时,应用程序将主机上的新版本的Linux内核下 载到本地文件系统,再将新内核文件写入工作内核所在存储区,再设置状态参数为STO后重 启系统。
图2示出了本发明的一个优选实施例提供的安全远程升级嵌入式Li皿x内核方法的流程。 在本发明实施例中,增设了一个状态参数ST2 (表示启动后备内核),同时,还增加了对内 核文件校验的步骤,从而可以提高启动效率,并便于升级故障的判别。 在步骤S200中,系统上电复位和正常复位时设置状态参数值I^STO。 在步骤S202中,判断当前状态参数是否为STO,是,则继续执行步骤S204;否,则执行 步骤S212。
在步骤S204中,由Bootloader将工作内核搬移到内存。
在步骤S206中,对搬移中的工作内核文件进行校验(主要是校验文件的完整性等),如 果校验通过,则继续执行步骤S208;否则,执行步骤S210。 在步骤S208中,设置状态参数为ST1后执行步骤S214。 在步骤S210中,设置状态参数为ST2。 在步骤S212中,Bootloader将后备内核搬移到内存。
7在步骤S214中,启动内核,并开始监测启动所耗时间。
在步骤S216中,判断启动所耗时间是否超过正常时间限定,是,则对设备重新启动后, 返回执行步骤S202;否,则继续执行步骤S218。
在步骤S218中,作为本发明的一个优选实施例,在启动成功后,还可以通过应用程序进 行升级过程的自检,首先判断完成启动后的当前状态参数是否仍为STO,是,则表示当前启 动的是工作内核,即升级成功;否,则表示当前启动的是后备内核,即工作内核的升级出现 故障。
在步骤S220中,根据当前状态参数向远程主机发送不同的告警信息并重新设置R为STO, 如果重设前R为ST1,即工作内核通过校验但不能正常启动;如果重设前R为ST2,即工作内核 未通过校验。
假设在对工作内核升级的过程中断电,上电后状态参数复位为STO, Bootloader仍然按 照正常启动的流程进行,当Bootloader在搬移工作内核的时候发现校验不通过时,将状态寄 存器设为ST2,然后将"后备内核"启动。应用程序启动后通过状态寄存器知道最近一次升 级失败,并发出告警信息。
假设写入了一个残缺的工作内核,重启后,和上一种情况类似。当Bootloader在搬移内 核的时候发现Linux内核校验不对,将状态寄存器设为ST2,然后启动后备内核,应用程序启 动后发出告警信息。
假设写入一个完整的但不能启动的工作内核,重启后,Bootloader将其启动,同时将状 态寄存器设为ST1,随后内核在启动的时候死机,正常情况下内核死机一段时间(一般是 1S0秒)后会重启,重启后Bootloader能检测到STl,并上报告警。假设遇到更严重的错误, 死掉的内核不能自己重启,重启的工作可以由看门狗(软件或硬件)完成。
由于后备内核是能够确保正常启动的,只要远端设备硬件完好都能与主机建立起连接, 可以辅助以告警信息的日志进行故障判别,再次启动正确的升级操作,最终安全的完成升级 工作。
在本发明的一个实施例中,上述后备内核可以只预存一个,该后备内核在设备出厂时即 经过严格测试能够正常工作,并不可改写。在本发明的另一个实施例中,上述后备内核可以 预存2个,并在设备出厂时均经过严格测试能够正常工作,其中一个后备内核不可改写,在 上述步骤S218后,如果R仍为STO,则进一步将当前工作内核文件内容覆盖所述另一个后备内 核,从而可以实时保存最近一次成功完成升级的工作内核。
图3示出了是本发明的一个优选实施例提供的安全远程升级嵌入式Li皿x内核系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分,这些部分可以软件、硬件或者软硬 件结合的单元。
内核存储单元32存储有2个或者更多的Linux内核,其中,系统默认启动的内核为工作内 核,其余为后备内核。本发明实施例中,利用状态寄存器34存储启动状态(ST0、 ST1或ST2 )。系统上电时,状态寄存器34复位为ST0。控制单元31通过总线读取状态寄存器34中的参 数值,并根据该参数值从内核存储单元32中搬移相应的内核文件(工作内核/后备内核)至 内存运行,在搬移工作内核时还可以对工作内核进行校验,并根据校验是否通过设置状态寄 存器34中的参数为ST1或ST2。控制单元31启动内核后如果出现死机,当死机持续一段时间, 控制单元31将控制系统自动重启。本发明实施例中,为防止死掉的内核不能自己重启,利用 看门狗33对控制单元31的启动过程进行监测,当系统异常超时,看门狗33会输出一个复位信 号让控制单元31重新启动。在成功启动后,控制单元31还可以根据此时状态寄存器34中的参 数值判断工作内核的升级是否有出现故障,如有则根据参数值判别出故障类型,并向主机发 送相应的告警信息。
所述工作内核和后备内核可以存储在同一个非易失性存储器(例如FLASH)的不同MTD分 区中,也可以存储在不同的、相互独立的存储设备中。所述看门狗33可以通过软件或者硬件 实现。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原 则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种安全远程升级嵌入式Linux内核的方法,其特征在于,所述方法包括下述步骤A、系统存储两个或两个以上Linux内核文件,其中,Linux系统默认启动的内核为工作内核,其余的Linux内核为后备内核,所述后备内核能够确保系统成功启动;B、当需要对Linux内核进行升级时,以所述工作内核为升级对象进行升级;C、当所述工作内核因升级失败而无法启动时,启动所述后备内核。
2.如权利要求l所述的安全远程升级嵌入式Li皿x内核的方法,其特 征在于,所述步骤C具体包括下述步骤cl、设置状态参数变量R和参数值STO、 ST1,并在系统上电复位和正常复位时设置 R=ST0;c2、判断R是否为STO,是则由Bootloader将工作内核搬移到内存运行,并设置I^ST1, 否则Bootloader将后备内核搬移到内存运行;c3、当内核启动所耗时间超过预设时间限定时,重启系统,否则设置I^ST0;所述步骤B还包括升级后设置I^STO并重启系统。
3.如权利要求2所述的安全远程升级嵌入式Li皿x内核的方法,其特 征在于,所述状态参数还包括ST2,在所述步骤c2中,当R为STO时,在所述由Bootloader将 工作内核搬移到内存运行后还进一步包括对搬移中的工作内核文件进行校验,如果校验通 过,则设置I^ST1,否则设置I^ST2。
4.如权利要求3所述的安全远程升级嵌入式Li皿x内核的方法,其特 征在于,在所述步骤c3中,当系统顺利启动后,在所述设置I^STO前还进一步包括判断当 前R是否为STO,是则退出,否则继续判断R是否为ST1,是则向远程主机发送携带有升级后的 工作内核通过校验但不能正常启动的信息的告警信息,否则向远程主机发送携带有升级后的 工作内核未通过校验的信息的告警信息。
5 如权利要求4所述的安全远程升级嵌入式Li皿x内核的方法,其特 征在于,所述后备内核有2个,并在设备出厂时均经过严格测试能够正常工作,其中一个后 备内核不可改写,在所述步骤c3中,如果当前R为STO,则把另一个后备内核覆盖为当前工作 内核文件。
6 如权利要求l所述的安全远程升级嵌入式Li皿x内核的方法,其特 征在于,所述后备内核有l个,其在设备出厂时经过严格测试能够正常工作,并不可改写。
7 一种安全远程升级嵌入式Li皿x内核的系统,包括控制单元和存储 有Linux系统默认启动的内核的内核存储单元,其特征在于,所述内核存储单元中还存储有 l个或者多个能够确保系统成功启动的Li皿x内核文件,所述系统还包括状态寄存器,所述控 制单元用于根据状态寄存器中的不同参数值从所述内核存储单元中搬移相应的内核文件至内 存运行。
8 如权利要求7所述的安全远程升级嵌入式Li皿x内核的系统,其特 征在于,所述系统还包括看门狗,用于在所述述控制单元运行内核异常超时时,输出一个复 位信号至控制单元使其重新启动。
9 如权利要求7所述的安全远程升级嵌入式Li皿x内核的系统,其特 征在于,所述内核存储单元为一个非易失性存储器,所述Li皿x系统默认启动的内核和其它 内核分别存储在所述内核存储单元的不同MTD分区中。
10 如权利要求7所述的安全远程升级嵌入式Li皿x内核的系统,其特 征在于,所述内核存储单元包括多个相互独立的非易失性存储设备,所述Li皿x系统默认启 动的内核和其它内核分别存储在不同的存储设备中。
全文摘要
本发明适用于网络通信领域,提供了一种安全远程升级嵌入式Linux内核的方法及系统,所述方法包括下述步骤A.系统存储两个或两个以上Linux内核文件,其中,Linux系统默认启动的内核为工作内核,其余的Linux内核为后备内核,所述后备内核能够确保系统成功启动;B.当需要对Linux内核进行升级时,以所述工作内核为升级对象进行升级;C.当所述工作内核因升级失败而无法启动时,启动所述后备内核。
文档编号G06F9/445GK101556547SQ20091030255
公开日2009年10月14日 申请日期2009年5月25日 优先权日2009年5月25日
发明者余春蕾, 周彦沛, 周祺睿, 汤国东 申请人:芯通科技(成都)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1