基于MTD存储设备的嵌入式linux操作系统升级方法及系统与流程

文档序号:25037507发布日期:2021-05-11 17:10阅读:370来源:国知局
基于MTD存储设备的嵌入式linux操作系统升级方法及系统与流程

本发明涉及嵌入式技术领域,尤其涉及一种基于mtd存储设备的嵌入式linux操作系统升级方法及系统。



背景技术:

随着信息技术的不断发展,嵌入式产品已经广泛应用于工业和家庭的各个领域。基于arm-linux体系的嵌入式产品,在开发、生产及现场运行等各个阶段都不可避免的会遇到系统升级的需求。当前现有的升级方案可以分为增量升级和全量升级两种模式。

增量升级模式即将需求新增或修改的功能部分通过软件补丁等方式添加到操作系统中。这种模式往往要求操作系统拥有完整的读写操作权限,容易遭受升级过程中误操作导致的操作系统损伤,危害系统稳定和安全。全量升级模式则一般通过覆写原操作系统存储区域实现系统升级,通常采用各功能分区独立升级的方式,某一功能分区的升级过程不会影响其他功能分区。但是,该模式同样面临升级过程中数据损坏或丢失导致的系统稳定和安全方面的隐患。而且现有的一些升级方案只能实现部分功能分区的升级,容易导致操作系统环境的严重差异化、系统功能的零散化,不利于操作系统版本管理,降低操作系统的稳定性。



技术实现要素:

本发明的目的在于提供一种基于mtd存储设备的嵌入式linux操作系统升级方法及系统,增强操作系统的稳定性。

为实现上述目的,第一方面,本发明提供了一种基于mtd存储设备的嵌入式linux操作系统升级方法,包括以下步骤:

将操作系统关键功能划分为五组分区,以及进行对应的升级文件包制作,得到升级文件包集成包,其中,所述五组分区包括uboot分区、kernel分区、rootfs分区、app分区和data分区,每组分区均拥有主分区及备份分区;

利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对;

若所述校验信息比对一致,则对划分出的所述五组分区分别进行静态分区升级流程以及动态分区升级流程,并重启目标板,完成升级。

其中,利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对,包括:

通过软件设计对外部存储设备的接入进行检测,并当检测到所述外部存储设备具有所述升级文件包集成包时,启动操作系统升级流程;

利用解压指令对所述升级文件包集成包进行解密解压缩,并提取解压得到的压缩文件内容,以及判断所述压缩文件是否提取成功;

若所述压缩文件提取成功,则对解压得到的升级文件进行版本确认和校验信息比对。

其中,若所述压缩文件提取成功,则对解压得到的升级文件进行版本确认和校验信息比对,包括:

采集所述升级文件的版本信息,并与设定版本信息进行比较;

若所述版本信息与所述设定版本信息不相同,则利用校验算法运算当前所述升级文件的校验信息,并将所述校验信息与所述升级文件包中存储的原始校验信息进行比对。

其中,若所述校验信息比对一致,则对划分出的所述五组分区分别进行静态分区升级流程以及动态分区升级流程,并重启目标板,完成升级,包括:

若所述校验信息比对一致,则对所述uboot分区和所述kernel分区进行静态分区升级流程,然后重启目标板,完成升级;

若所述校验信息比对一致,则对所述rootfs分区、所述app分区和所述data分区进行动态分区升级流程,然后重启目标板,完成升级。

其中,若所述校验信息比对一致,则对所述uboot分区和所述kernel分区进行静态分区升级流程,然后重启目标板,完成升级,包括:

当所述uboot分区和所述kernel分区的所述校验信息比对一致时,利用擦除指令擦除mtd存储设备中所述uboot分区和所述kernel分区对应的存储区域;

利用拷贝指令将有效的所述升级文件拷贝至设定的mtd分区,然后重启所述目标板,完成升级。

其中,若所述校验信息比对一致,则对所述rootfs分区、所述app分区和所述data分区进行动态分区升级流程,然后重启目标板,完成升级,包括:

利用进程管理指令,停止对应进程对所述rootfs分区、所述app分区和所述data分区挂载路径的数据读写访问;

利用擦除指令擦除mtd存储设备中所述rootfs分区、所述app分区和所述data分区对应的存储区域;

利用拷贝指令将有效的所述升级文件拷贝至设定的mtd分区,然后重启所述目标板,完成升级。

第二方面,本发明提供了一种基于mtd存储设备的嵌入式linux操作系统,如第一方面所述的一种基于mtd存储设备的嵌入式linux操作系统升级方法应用于一种基于mtd存储设备的嵌入式linux操作系统,

所述基于mtd存储设备的嵌入式linux操作系统包括功能分区划分模块、升级文件包制作模块和系统升级模块,所述功能分区划分模块、所述升级文件包制作模块和所述系统升级模块依次连接;

所述功能分区划分模块,用于将操作系统关键功能划分为五组分区,其中,所述五组分区包括uboot分区、kernel分区、rootfs分区、app分区和data分区,每组分区均拥有主分区及备份分区;

所述升级文件包制作模块,用于根据五组分区创建对应的升级文件,并利用组合指令,将包含校验信息的所述升级文件进行加密压缩、集成,得到对应的升级文件包集成包;

所述系统升级模块,用于利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对,并当所述校验信息比对一致,则对划分出的所述五组分区分别进行静态分区升级流程以及动态分区升级流程,并重启目标板,完成升级。

本发明的一种基于mtd存储设备的嵌入式linux操作系统升级方法及系统,首先,将操作系统关键功能划分为五组分区,并进行对应的升级文件包制作,得到升级文件包集成包,其中,所述五组分区包括uboot分区、kernel分区、rootfs分区、app分区和data分区;然后,利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对;当所述校验信息比对一致时,则对所述uboot分区和所述kernel分区进行静态分区升级流程,对所述rootfs分区、所述app分区和所述data分区进行动态分区升级流程,然后重启目标板,完成升级,检测识别出校验失败的升级文件、伪装成升级文件的虚假文件,有效防护来自此类异常升级文件的攻击,保护系统安全,每组分区中设计有主分区及其备份分区,主备分区版本同步,进一步提高操作系统升级过程的容错率,有效防护升级过程中发生意外停电等危险操作带来的系统安全风险,增强系统的稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的一种基于mtd存储设备的嵌入式linux操作系统升级方法的步骤示意图。

图2是本发明提供的一种基于mtd存储设备的嵌入式linux操作系统关键分区设计。

图3是本发明提供的一种基于mtd存储设备的嵌入式linux操作系统升级文件包制作方法流程图。

图4是本发明提供的一种基于mtd存储设备的嵌入式linux操作系统升级流程设计流程图。

图5是本发明提供的一种基于mtd存储设备的嵌入式linux操作系统升级系统的结构示意图。

1-功能分区划分模块、2-升级文件包制作模块、3-系统升级模块。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

请参阅图1,本发明提供一种基于mtd存储设备的嵌入式linux操作系统升级方法,包括以下步骤:

s101、将操作系统关键功能划分为五组分区,以及进行对应的升级文件包制作,得到升级文件包集成包。

具体的,所述的嵌入式linux操作系统关键功能主分区及备份分区设计,主要包括五组分区,分别为uboot分区、kernel分区、rootfs分区、app分区和data分区,如图2所示,其中,所述uboot分区包括uboot引导程序主分区及备份分区设计、uboot引导程序的只读性设计,所述kernel分区包括kernel内核程序主分区及备份分区设计、kernel内核程序的只读性设计,所述rootfs分区包括rootfs根文件系统集成软件主分区及备份分区设计、rootfs根文件系统集成软件分区只读性设计,所述app分区具有app用户应用程序主分区及备份分区设计,所述data分区为data数据主分区及备份分区设计。

所述的嵌入式linux操作系统升级文件包制作方法,主要涉及目标升级文件的准备、目标升级文件校验码的运算及保存、加密压缩生成目标升级文件包的三个步骤,如图3所示,详细流程如下:

步骤1:创建uboot、kernel、rootfs、app、data主分区及备份分区升级信息存储文件夹。

步骤2:将uboot、kernel、rootfs、app、data主分区及备份分区目标升级文件,以及版本信息分别存储至各自相对应的目标升级文件,具体为:对于uboot、kernel分区,将新版本对应的启动程序及其版本信息文件拷贝到uboot、kernel文件夹;对于rootfs、app、data分区,将新版本对应的根文件系统ubifs格式镜像及其版本信息文件拷贝到对应的rootfs、app、data文件夹。

步骤3:使用嵌入式linux指令md5sum生成各自目标升级文件校验码,并将该校验码保存至对应的目标文件夹中,具体为:对于uboot、kernel分区,使用md5sum指令生成新版本对应的启动程序md5校验码,并保存到uboot、kernel文件夹;对于rootfs、app、data分区,使用md5sum指令生成新版本对应的根文件系统分区镜像md5校验码,并保存到对应的rootfs、app、data文件夹。

步骤4:使用tar+openssl组合指令将目标文件夹进行加密压缩,加密压缩生成的文件包只有知道制作者设计的密码才能正常的解密解压缩,即可完成各个分区相对应的目标升级文件包制作。

步骤5:集成单个或多个所述升级文件包,生成升级文件包集成包,通过升级文件包监测及升级流程设计实现一次性完成单个或者多个分区功能升级的需求。

s102、利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对。

具体的,所述的嵌入式linux操作系统升级文件包的监测及升级流程设计,主要包括升级文件包的监测设计及升级流程的设计两个部分。如图4所示,升级软件包的监测设计,基于嵌入式linux操作系统集成的usb热拔插检测机制,通过软件设计,实时监测外部存储设备的接入,当检测到接入的外部存储设备中存在所述的升级文件集成包或升级文件包时,启动操作系统升级流程。

操作系统升级流程的设计:

步骤1:监测到各分区所述升级文件包集成包,使用tar+openssl解压指令进行对所述升级文件包集成包进行解密解压缩,提取压缩文件包内容。判断压缩文件是否提取成功,提取成功则继续后续升级流程,提取失败则退出本次升级流程。

步骤2:读取解压得到的升级文件包的版本信息,并与当前操作系统相关部分的设定版本信息进行比对。判断当前升级文件包是否为新版本,即判断所述版本信息与所述设定版本信息是否相同,如果所述版本信息与所述设定版本信息不相同,则判断所述版本信息是新版本,则继续后续升级流程,如果是相同版本则退出本次升级流程。

步骤3:调用md5sum指令(校验算法)运算当前所述升级文件md5校验信息,并与升级文件包中存储的原始校验信息进行比对。判断校验信息是否一致,当校验信息比对结果一致时,继续后续升级流程,当校验信息比对结果不一致时,则认为该目标升级文件包已损坏,退出本次升级流程,有效防护升级文件在传输过程中发生异常变更或文件损坏时,对系统安全造成的损害。

s103、若所述校验信息比对一致,则对划分出的所述五组分区分别进行静态分区升级流程以及动态分区升级流程,并重启目标板,完成升级。

具体的,若所述校验信息比对一致,则对所述uboot分区和所述kernel分区进行静态分区升级流程,然后重启目标板,完成升级,包括:

一般地,在嵌入式linux操作系统进入运行态阶段后,uboot引导程序已完成引导启动的功能使命,kernel内核可执行代码已经由mtd存储设备读取到内存(ram)区域,进入内核态运行,操作系统不再对mtd存储设备中uboot引导程序及kernel内核存储区域进行读写访问。故此,静态分区升级流程设计,在监测到某一分区及备份分区有效的目标升级文件后,直接使用flash_eraseall擦除指令擦除mtd存储设备中所述uboot分区和所述kernel分区对应的存储区域,然后使用flashcp拷贝指令将有效的目标升级文件拷贝至设定的mtd分区,完成mtd对应分区的擦写,重启目标板验证升级结果,即可完成相应分区的升级。

若所述校验信息比对一致,则对所述rootfs分区、所述app分区和所述data分区进行动态分区升级流程,然后重启目标板,完成升级,包括:

这些分区由于分区挂载、应用数据存储的因素,经常需要与内存(ram)空间进行数据交换,需根据实际情况制定差异化的升级方案,不能直接擦除相应mtd存储区域并覆写。当监测到rootfs根文件系统、app应用程序分区、data数据分区相关目标升级文件时,需要首先根据获取的停止指令,停止操作系统有关进程对相应分区挂载路径的数据读写访问,再使用flash_eraseall擦除指令擦除对应分区:rootfs根文件系统分区升级,需要首先将可能使用到的系统指令(如shell控制台、flashcp、flash_eraseall等)拷贝到内存,卸载根文件系统,再通过相关指令擦写rootfs根文件系统分区存储区域;同理,app应用程序分区及data数据分区的升级,应首先停止有关进程对app应用程序分区挂载路径、data数据分区挂载路径的数据读写访问,卸载对应分区,再使用flash_eraseall、flashcp等mtd设备操作指令擦写对应分区存储区域。判断擦除操作结果,擦除操作成功则继续后续流程,擦除失败则重新擦除。

使用flashcp拷贝指令将目标升级文件及版本信息拷贝至相应的mtd存储分区,完成对应分区存储数据信息的更新,实现嵌入式linux操作系统对应分区功能升级目标。判断flashcp指令数据拷贝操作结果,操作成功则继续后续升级流程,操作失败则返回重新执行mtd存储设备分区擦写工作,重启目标板,验证升级结果。

请参阅图5,本发明提供一种基于mtd存储设备的嵌入式linux操作系统,所述的一种基于mtd存储设备的嵌入式linux操作系统升级方法应用于一种基于mtd存储设备的嵌入式linux操作系统,

所述基于mtd存储设备的嵌入式linux操作系统包括功能分区划分模块1、升级文件包制作模块2和系统升级模块3,所述功能分区划分模块1、所述升级文件包制作模块2和所述系统升级模块3依次连接;

所述功能分区划分模块1,用于将操作系统关键功能划分为五组分区,其中,所述五组分区包括uboot分区、kernel分区、rootfs分区、app分区和data分区;

所述升级文件包制作模块2,用于根据五组分区创建对应的升级文件,并利用组合指令,将包含校验信息的所述升级文件进行加密压缩、集成,得到对应的升级文件包集成包;

所述系统升级模块3,用于利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对,并当所述校验信息比对一致,则对划分出的所述五组分区分别进行静态分区升级流程以及动态分区升级流程,并重启目标板,完成升级。

在本实施方式中,关于一种基于mtd存储设备的嵌入式linux操作系统的具体限定可以参见上文中对于一种基于mtd存储设备的嵌入式linux操作系统升级方法的限定,在此不再赘述。上述一种基于mtd存储设备的嵌入式linux操作系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

本发明的有益效果是:

提供一种基于mtd存储设备的嵌入式linux操作系统的升级方法及系统,并通过对升级过程的安全防护设计、以及对关键功能分区的只读性设计、备份分区设计实现操作系统的升级需求。在升级过程中,可以检测识别出校验失败的升级文件、伪装成升级文件的虚假文件,有效防护来自此类异常升级文件的攻击,保护系统安全。在系统关键功能分区部分,通过只读性设计、备份分区设计的方法,主/备分区版本同步,即使主分区在升级过程中发生不可预期的异常,操作系统仍然能够从备份分区加载新版本系统功能,极大地降低了由操作系统升级带来的系统稳定性风险,增强了嵌入式linux操作系统的稳定性及生命力。

本发明的一种基于mtd存储设备的嵌入式linux操作系统升级方法及系统,将操作系统关键功能划分为五组分区,并进行对应的升级文件包制作,得到升级文件包集成包,其中,所述五组分区包括uboot分区、kernel分区、rootfs分区、app分区和data分区;然后,利用软件设计对所述升级文件包集成包进行检测,并对所述升级文件包集成包进行内容提取、版本确认和校验信息比对;当所述校验信息比对一致时,则对所述uboot分区和所述kernel分区进行静态分区升级流程,对所述rootfs分区、所述app分区和所述data分区进行动态分区升级流程,然后重启目标板,完成升级,检测识别出校验失败的升级文件、伪装成升级文件的虚假文件,有效防护来自此类异常升级文件的攻击,保护系统安全,每组分区中设计有主分区及其备份分区,主备分区版本同步,进一步提高操作系统升级过程的容错率,有效防护升级过程中发生意外停电等危险操作带来的系统安全风险,增强系统的稳定性。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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