首页> 中国专利> 嵌入式Linux分区与数据还原方法、系统及系统开发方法

嵌入式Linux分区与数据还原方法、系统及系统开发方法

摘要

本发明公开一种嵌入式Linux分区与数据还原方法,包括步骤:S101.bootloader在信息区创建初始分区表;S102.bootloader根据初始分区表升级镜像程序,并根据升级的镜像数据地址更新分区表,以及将升级的镜像数据存储至备份镜像分区;S103.bootloader将分区信息传入Linux内核,Linux内核解析分区信息并将解析成功的分区信息与存储介质相关联。本发明还公开一种嵌入式Linux分区与数据还原系统及系统开发方法。相较于现有技术,本发明可实现对嵌入式Linux系统动态分区、文件系统故障还原,减少产品的维护与开发成本。

著录项

  • 公开/公告号CN103473067A

    专利类型发明专利

  • 公开/公告日2013-12-25

    原文格式PDF

  • 申请/专利权人 福建三元达软件有限公司;

    申请/专利号CN201310435177.X

  • 发明设计人 甘禹;黄歆颋;

    申请日2013-09-23

  • 分类号G06F9/44(20060101);

  • 代理机构福州市鼓楼区博深专利代理事务所(普通合伙);

  • 代理人林志峥

  • 地址 350001 福建省福州市鼓楼区软件大道89号福州软件园产业基地二期7#楼第三层

  • 入库时间 2024-02-19 22:01:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-31

    授权

    授权

  • 2016-08-17

    著录事项变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20130923

    著录事项变更

  • 2014-01-22

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20130923

    实质审查的生效

  • 2013-12-25

    公开

    公开

说明书

技术领域

本发明涉及计算机应用领域,尤其涉及一种嵌入式Linux分区与数据还原方 法、系统及系统开发方法。

背景技术

嵌入式Linux系统目前广泛的使用在电子行业与微型计算机行业,其特点 是开发方便、可移植性强、任务处理高效与节省硬件资源。

嵌入式Linux系统目前主要的数据存储介质有硬盘、Nandflash和 iNand/SD/MMC,其中Nandflash由于价格低廉、存储容量大与通用性强处于行 业中普遍使用的存储器。Nandflash由于其自身的电气特性是使用充放电原理来 修改数据,这必然会导致数据的存储单元,在多次修改之后产生不合格数据, 这不合格数据所在的存储单元,我们俗称坏块(invalid block),坏块的产生必然 会导致Linux系统下文件系统的破损和分区不能正常使用等一系列数据存储问 题。

鉴于Linux存储介质可能出现坏块的现象,而目前嵌入式行业使用Linux的 分区普遍使用在Linux内核中设置默认值,会存在分区挂载失败和文件系统数据 异常的风险。

发明内容

为解决上述问题,本发明采用的一个技术方案是:

提供一种嵌入式Linux分区与数据还原方法,包括步骤:S101、bootloader 在信息区创建初始分区表,分区表用于记录镜像分区对应分区信息,镜像分区 包括bootloader分区、Linux内核分区、备份镜像分区、根文件系统分区、用户 文件系统分区;S102、bootloader根据初始分区表升级镜像程序,并根据升级的 镜像数据地址更新分区表,以及将升级的镜像数据存储至备份镜像分区;S103、 bootloader将分区信息传入Linux内核,Linux内核解析分区信息并将解析成功 的分区信息与存储介质相关联。

本发明采用的另一个技术方案是:

提供一种嵌入式Linux分区与数据还原系统开发方法,包括步骤:设置 bootloader对外人机交互接口,用于支持预设传输途径下,数据存储介质所有分 区镜像的升级以及参数设置;设置bootloader数据存储介质驱动接口,用于判断 坏块以及正确读写数据;在bootloader代码中预置初始分区表,分区表保存在信 息区,信息区为数据存储介质不可能出现坏块的位置设置信息区,分区表用于 记录镜像分区对应分区信息,镜像分区包括bootloader分区、Linux内核分区、 备份镜像分区、根文件系统分区、用户文件系统分区;在bootloader代码中设计 坏块管理机制,当bootloader升级镜像程序判定出现坏块时,将分区的起始地址 跳过坏块向后移动,将新的分区的起始地址更新至分区表。在bootloader代码中 设计Linux能够识别的分区信息数据格式以将分区表传入Linux内核,分区信息 包括分区号、分区名称、分区的起始地址、分区容量、分区属性;在Linux源码 中添加对分区信息数据格式的解析函数,用于内核解析分区信息并将解析成功 的分区信息与存储介质相关联,其中解析过程处于early或init阶段。

本发明提供的嵌入式Linux分区与数据还原方法、系统及系统开发方法,利 用bootloader对各个镜像的管理和保护,在嵌入式Linux内核启动时传入动态分 区信息,嵌入式Linux内核解析bootloader传入的分区信息并与数据存储介质关 联,根文件系统只读并能够引导挂载用户文件系统,挂载失败或者用户要求还 原时,擦除数据存储介质标记区并标记无效,bootloader启动时判断用户文件系 统区是否无效,如果无效将其从备份区还原。相较于现有技术,本发明增加对 嵌入式Linux系统动态分区、文件系统故障还原,减少产品的维护与开发成本。

附图说明

图1是本发明一实施方式中一种嵌入式Linux分区与数据还原系统开发方法 的执行流程图;

图2是本发明一实施方式中的镜像分区示意图;

图3是本发明一实施方式中一种嵌入式Linux分区与数据还原方法的执行流 程图;

图4是数据还原步骤的具体执行流程图;

图5是步骤S102的具体执行流程图;

图6是本发明一实施方式中一种嵌入式Linux分区与数据还原系统;

图7是图6中升级模块的功能模块图。

主要元件符号说明

具体实施方式

为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合 实施方式并配合附图详予说明。

请参阅图1,是本发明一实施方式中一种嵌入式Linux动态分区与数据还原 系统开发方法的执行流程图。

一种嵌入式Linux分区与数据还原系统开发方法,包括如下步骤:

步骤S301、设置bootloader对外人机交互接口,所述对外人机交互接口用 于支持预设传输途径下,数据存储介质所有分区镜像的升级以及参数设置。

步骤S302、设置bootloader数据存储介质驱动接口,所述存储介质驱动接 口用于判断坏块以及正确读写数据。

步骤S303、在bootloader代码中预置初始分区表,分区表保存在信息区, 信息区为数据存储介质不可能出现坏块的位置设置信息区,分区表用于记录镜 像分区对应分区信息。请参阅图2,是本发明一实施方式中的镜像分区示意图。 在本实施方式中,镜像分区包括bootloader分区、Linux内核分区、备份镜像分 区、根文件系统分区、用户文件系统分区。

步骤S304、在bootloader代码中设计坏块管理机制,所述坏块管理机制用 于当bootloader升级镜像程序判定出现坏块时,将分区的起始地址跳过坏块向后 移动,并当完成移动后将新的分区的起始地址更新至分区表。

步骤S305、在bootloader代码中设计Linux能够识别的分区信息数据格式, 分区信息包括分区号、分区名称、分区的起始地址、分区容量、分区属性。

具体地,将分区信息组包在cmdline中,其格式如下:

cmdline=mtdarry:[num],[name],[start],[size],[opt];

其中,num表示mtd分区号,name表示mtd分区名称,start表示当前分区 的起始地址,size表示分区容量,opt表示分区属性。

步骤S306、在Linux源码中添加对分区信息数据格式的解析函数,所述解 析函数用于内核解析分区信息并将解析成功的分区信息与存储介质相关联,其 中解析过程处于early或init阶段。

在本实施方式中,所述的一种嵌入式Linux动态分区与数据还原系统开发方 法,还包括步骤:

步骤S307、在bootloader代码中设计备份机制,所述备份机制用于将升级 的镜像数据存储至备份镜像分区备份。

步骤S308、在根文件系统挂载用户文件系统的脚本中添加挂载失败机制, 所述挂载失败机制用于当挂载失败时将用户文件系统分区标记为不合法并重启 系统。

步骤S309、在bootloader代码中设计还原机制,所述还原机制用于在Linux 内核启动之前判断用户文件系统分区是否标记为不合法,并当判定不合法时从 所述备份镜像分区将升级的镜像数据复制到用户文件系统分区,然后将用户文 件系统分区标记为合法。

其中,所述步骤S308前还包括步骤:在根文件系统中添加一个用于擦写分 区的工具程序;所述“将用户文件系统分区标记为不合法”具体为:使用所述 工具程序将用户文件系统分区以第0块地址偏移擦除10个块;所述“判断用户 文件系统分区是否标记为不合法”具体为:判断用户文件系统分区的第0块地 址上的数据是否被擦除,如果被擦除则判定为不合法;所述“将用户文件系统 分区标记为合法”具体为将用户文件系统分区的第0块地址上的数据标记为已 使用。例如,假设用户文件系统在mtd第3分区,并且属于UBI文件系统,则 添加如下命令:

以上命令的意思是,挂载mtd3分区,如果失败则将mtd3以0地址偏移擦 除10个块,然后软件重启设备。

其中,所述工具程序使用开源软件mtd-utils-tools编译生成。

本发明的嵌入式Linux分区与数据还原系统开发方法,解决了系统在反复升 级过程中导致数据存储介质坏块产生影响分区正常使用的问题,减少了内核源 码的修改和维护;解决了文件系统破损情况无法挂载,从而需要返工维修替换 数据存储介质与刷新镜像的问题,很大程度上节省了开发维护周期与成本。

下面对基于上述开发方法开发出的嵌入式Linux动态分区与数据还原系统 所执行的一种嵌入式Linux动态分区与数据还原方法进行说明。

请参阅图3,是本发明一实施方式中一种嵌入式Linux分区与数据还原方法 的执行流程图,包括步骤:

步骤S101、bootloader在信息区创建初始分区表,分区表用于记录镜像分区 对应分区信息,镜像分区包括bootloader分区、Linux内核分区、备份镜像分区、 根文件系统分区、用户文件系统分区。

其中,所述信息区是数据存储介质不可能出现坏块的位置,所述分区信息 包括各分区的起始地址、分区容量。

步骤S102、bootloader根据初始分区表升级镜像程序,并根据升级的镜像数 据地址更新分区表,以及将升级的镜像数据存储至备份镜像分区。

步骤S103、bootloader将分区信息传入Linux内核,Linux内核解析分区信 息并将解析成功的分区信息与存储介质相关联。

在本实施方式中,所述的一种嵌入式Linux分区与数据还原方法还包括数据 还原步骤,请参阅图4,是数据还原步骤的具体执行流程图。该数据还原步骤具 体包括:

步骤S201、bootloader在Linux内核启动之前判断用户文件系统分区是否标 记为合法,若否,进入步骤S202,若是,进入步骤S203;

步骤S202、bootloader从所述备份镜像分区将升级的镜像数据复制到用户文 件系统分区,然后将用户文件系统分区标记为合法,进入步骤S201;

步骤S203、当Linux内核启动后,执行根文件系统挂载其他文件系统并判 断是否挂载成功,若否,进入步骤S204,若是,系统正常运行;

步骤S204、将用户文件系统分区标记为不合法并重启系统。

其中,所述“将用户文件系统分区标记为不合法”具体步骤为:使用工具 程序将用户文件系统分区以第0块地址偏移擦除10个块;所述“判断用户文件 系统分区是否标记为不合法”具体为:判断用户文件系统分区的第0块地址上 的数据是否被擦除,如果被擦除则判定为不合法;所述“将用户文件系统分区 标记为合法”具体为将用户文件系统分区的第0块地址上的数据标记为已使用。

其中,请参阅图5,是步骤S102的具体执行流程图。所述步骤S102具体包 括:

步骤S1021、bootloader将Linux内核、用户文件系统和其他数据下载到指 定分区中,在此过程,如果分区头处于坏块区域,将分区的相应数据向后移动 一个单元,同时更新分区表;

步骤S1022、当bootloader升级镜像程序时,判断是否出现坏块;

步骤S1023、当判定出现坏块时,将分区的起始地址跳过坏块向后移动;

步骤S1024、当完成移动后,将新的分区的起始地址更新至分区表。

请参阅图6,是本发明一实施方式中一种嵌入式Linux动态分区与数据还原 系统的功能模块中。所述嵌入式Linux动态分区与数据还原系统100包括创建模 块10、升级模块20、关联模块30。

创建模块10用于使用bootloader在信息区创建初始分区表,分区表用于记 录镜像分区对应分区信息,镜像分区包括bootloader分区、Linux内核分区、备 份镜像分区、根文件系统分区、用户文件系统分区。

升级模块20用于使用bootloader根据初始分区表升级镜像程序,并根据升 级的镜像数据地址更新分区表,以及将升级的镜像数据存储至备份镜像分区;

关联模块30用于使用bootloader将分区信息传入Linux内核,Linux内核解 析分区信息并将解析成功的分区信息与存储介质相关联。

其中,所述信息区是数据存储介质不可能出现坏块的位置,所述分区信息 包括各分区的起始地址、分区容量。

在本实施方式中,所述的一种嵌入式Linux分区与数据还原系统100还包括 第一判断模块40、复制模块50、挂载判断模块60、重启模块70。

第一判断模块40用于使用bootloader在Linux内核启动之前判断用户文件 系统分区是否标记为合法。

复制模块50用于当第一判断模块40判定用户文件系统未有标记为合法时, 使用bootloader从所述备份镜像分区将升级的镜像数据复制到用户文件系统分 区,然后将用户文件系统分区标记为合法,然后通知第一判断模块40执行判断 操作。

挂载判断模块60用于当第一判断模块40判定用户文件系统标记为合法时, 且当Linux内核启动后,执行根文件系统挂载其他文件系统并判断是否挂载成 功,若是,系统正常运行。

重启模块70用于当挂载判断模块判定没有挂载成功时,将用户文件系统分 区标记为不合法并重启系统。

请参阅图7,是图6中升级模块的功能模块图。在本实施方式中,所述升级 模块20具体包括下载子模块21、升级判断子模块22、坏块跳过子模块23、更 新子模块24。

下载子模块21用于使用bootloader将Linux内核、用户文件系统和其他数 据下载到指定分区中,在此过程,如果分区头处于坏块区域,将分区的相应数 据向后移动一个单元,同时更新分区表。

升级判断子模块22用于当bootloader升级镜像程序时,判断是否出现坏块。

坏块跳过子模块23用于当升级判断子模块当判定出现坏块时,将分区的起 始地址跳过坏块向后移动。

更新子模块24用于当坏块跳过子模块23完成移动后,将新的分区的起始 地址更新至分区表。

本发明提供的嵌入式Linux分区与数据还原方法、系统及系统开发方法,利 用bootloader对各个镜像的管理和保护,在嵌入式Linux内核启动时传入动态分 区信息,嵌入式Linux内核解析bootloader传入的分区信息并与数据存储介质关 联,根文件系统只读并能够引导挂载用户文件系统,挂载失败或者用户要求还 原时,擦除数据存储介质标记区并标记无效,bootloader启动时判断用户文件系 统区是否无效,如果无效将其从备份区还原。相较于现有技术,本发明可实现 对嵌入式Linux系统动态分区、文件系统故障还原,减少产品的维护与开发成本。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利 用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运 用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号