在Linux操作系统引导过程中实现映象文件自动容错的方法技术方案

技术编号:2921196 阅读:187 留言:0更新日期:2012-04-11 18:40
一种在Linux操作系统引导过程中实现映象文件自动容错的方法,用于检测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,其中该方法包括:配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验 码;初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件;加载该当前映象文件,根据校验码对该映象文件进行完整性检查;如果未通过完整性检查则按顺序将另一映象文件指定为当前文件重新加载;及执行该当前映象文 件。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种映象文件(Image File)自动容错的方法,尤其是涉及一种。
技术介绍
在启动Linux操作系统时,一般情况下需要首先通过运行一个启动装载(Boot Loader)程序(如grub、lilo等等)将Linux系统的映象文件(如可执行内核kernel的映象文件和Rmdisk的压缩文件等)加载到内存中,然后将CPU的指令跳转,去执行kernel的映象文件。然而,如果需要加载的映象文件在装入内存时出现错误,例如,磁盘存储介质发生物理损坏,数据虽然可以读取,但不正确时,现有的启动装载(BootLoader)程序不能探测到该类错误,致使后续的执行发生异常,导致系统死机。如图1所示,为公知启动装载(Boot Loader)程序加载文件处理的基本流程图。以加载Linux映象(Image)为例,当被加载的文件读取异常,而该异常又无法被启动装载(Boot Loader)捕获时,最终导致死机。即使启动装载(BootLoader)可能检测到通常错误(如打开、读取文件失败),也不能自动地进行后续处理,必须通过人工手动地输入指令来尝试加载其它映象(Image)文件。目前基于Linux的应用比较广泛,如各种服务器,存储设备等等,它们一般不连接终端设备(如显示器,键盘等等),当出现上述异常情况时,往往需要通过连接终端设备后,根据异常提示,进行人工过程的干预,如手动选择另一个(组)映象(Image)文件,通知启动装载(boot loader)程序根据新的选择来重新加载等等。或者当没有另一个(组)映象(Image)文件可以选择时,就只有借用外界的工具进行系统的修复和映象(Image)文件的修正。如果启动装载(boot loader)程序针对这种异常的情况,可以自动选择另一个(组)映象(Image)文件来加载(系统有Image文件的备份),就不需要人工处理的过程了,因此,如何实现启动装载(boot loader)程序对所加载的映象(Image)文件具有容错的功能,即启动装载(boot loader)程序可以自动探测到任何潜在的异常错误,并且可以自动地实施后续的处理,引导另一个(组)映象(Image)文件启动,以成为急待解决的问题。
技术实现思路
本专利技术为解决上述问题而提供一种,可以自动探测到映象文件加载过程中的错误,并自动进行容错处理,以克服由于文件错误而导致的执行异常,甚至系统死机的发生。本专利技术提供一种,用于探测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,其方法包括配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码;初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件;加载该当前映象文件,根据校验码对该映象文件进行完整性检查;如果未通过完整性检查则按顺序将另一映象文件指定为当前映象文件重新加载;执行该当前映象文件。本专利技术由于设计使用多个物理存储介质(如Flash ROM,磁盘等等)来保存多组映象文件,保证当一组加载失败后可以选择其它组,在要加载的映象文件后面加入了校验码,可以用于文件的完整性检查,如遇异常则选择另一组或另一个映象文件重新加载,这样不仅可以自动探测到映象文件加载过程中的错误,而且还可以自动进行容错处理,克服了由于文件加载错误而导致的执行异常,甚至系统死机的发生。附图说明图1为公知启动装载(Boot Loader)程序加载文件处理的基本流程图;图2为本专利技术流程图;图3为本专利技术所提供的映象文件与校验码示意图;图4为本专利技术所提供的映象文件完整性检查的流程图;及图5为本专利技术的实施例流程图。其中,附图标记说明如下步骤201 配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码步骤202 初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件步骤203 加载该当前映象文件,根据校验码对该映象文件进行完整性检查步骤204 如果未通过完整性检查则按顺序将另一映象文件指定为当前映象文件重新加载步骤205 执行该当前映象文件步骤401 定位内存中的映象(Image)文件步骤402 取出映象(Image)文件的16个字节的校验码,保存到Verify1,赋值启动装载(Boot Loader)中记录的Image Size的变量FileSize步骤403 使用MD5校验算法,校验映象(Image)文件中剩余的字节,得到映象(Image)文件的校验码Verify2步骤404 比较Verify1与Verify2步骤405 如果不一致,则返回异常处理步骤406 如果一致,则更新(Image)文件的大小,FileSize=FileSize-16步骤407 返回正常处理具体实施方式如图1所示,为现有技术中启动装载(Boot Loader)程序加载文件处理的基本流程,通常在启动装载(boot loader)程序中都设有timeout功能,即不需要用户从外界输入任何指令,就可以在达到某个预定的时间值时,自动进行后续的加载处理。该流程中,对“时间到”的判断和对“时间累计”判断也是timeout的相关功能。利用timeout功能,每隔一段时间(通常为1秒)都要进行“时间累计”,即内部的时间计数累加,当这个时间计数的值大于或等于timeout的默认值,即为“时间到”,或者说是“timeout”的时间到了。该预设置值可以在启动装载(boot loader)程序的配置文件中配置,如grub.conf。而图1中的“时间累计取消”步骤,则是告知启动装载(boot loader)程序取消当前的“timeout”功能,其过程是设置“取消timeout功能”标志,停止时间计数值与timeout的预置值之间的比较。在此过程中,只有收到外界用户的输入指令(如按下Enter键、光标移动指令或者其它已定义的热键),启动装载(boot loader)程序才能继续执行。本专利技术提供一种,用于检测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,如图2所示,为本专利技术的流程图,首先配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码(步骤201);接着初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件(步骤202);然后加载该当前映象文件,根据校验码对该映象文件进行完整性检查(步骤203);如果未通过完整性检查则按顺序将另一映象文件指定为当前映象文件重新加载(步骤204);最后执行该当前映象文件(步骤205)。下面以一较佳实施例来说明本专利技术实现启动装载(boot loader)程序的容错功能的过程,假定设计使用两个物理存储介质(如Flash ROM,磁盘等等)来保存第一组映象文件(primary groups Image)和第二组映象文件(secondlygroup Images)。两组Images保证当一组加载失败后可以选择另一组。两个物理存储介质,来保证当其中一种介质损坏后,可以使用另一个物理介质。提供系统有效运转的可靠保障。在要加载的映象(Image)文件后面加入Image文件的校验码(如md5算法等等)。用于映象(Image)文件的完整性的检查。在启动装载(boot loader)的本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘文涵陈玄同马赫
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利