CN100476745C - 在Linux操作系统引导过程中实现映象文件自动容错的方法 - Google Patents
在Linux操作系统引导过程中实现映象文件自动容错的方法 Download PDFInfo
- Publication number
- CN100476745C CN100476745C CNB200310124401XA CN200310124401A CN100476745C CN 100476745 C CN100476745 C CN 100476745C CN B200310124401X A CNB200310124401X A CN B200310124401XA CN 200310124401 A CN200310124401 A CN 200310124401A CN 100476745 C CN100476745 C CN 100476745C
- Authority
- CN
- China
- Prior art keywords
- image file
- linux
- suse
- automatic fault
- fault tolerant
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种在Linux操作系统引导过程中实现映象文件自动容错的方法,首先配置一组以上的映象文件,并在映象文件中加入校验码,初始化系统数据时分别定位各个映象文件的位置并指定当前映象文件,然后加载当前映象文件,根据校验码对映象文件进行完整性检查,如果未通过完整性检查则将另一映象文件指定为当前映象文件重新加载,最后执行当前映象文件,本发明可检测映象文件加载过程中的错误,并自动容错,避免了文件加载错误而导致的执行异常。
Description
技术领域
本发明涉及一种映象文件(Image File)自动容错的方法,尤其是涉及一种在Linux操作系统引导过程中实现映象文件自动容错的方法。
背景技术
在启动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操作系统引导过程中实现映象文件自动容错的方法,可以自动探测到映象文件加载过程中的错误,并自动进行容错处理,以克服由于文件错误而导致的执行异常,甚至系统死机的发生。
本发明提供一种在Linux操作系统引导过程中实现映象文件自动容错的方法,用于探测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,其方法包括:配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码;初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件;加载该当前映象文件,根据校验码对该映象文件进行完整性检查;如果未通过完整性检查则按顺序将另一映象文件指定为当前映象文件重新加载;执行该当前映象文件。
本发明由于设计使用多个物理存储介质(如Flash ROM,磁盘等等)来保存多组映象文件,保证当一组加载失败后可以选择其它组,在要加载的映象文件后面加入了校验码,可以用于文件的完整性检查,如遇异常则选择另一组或另一个映象文件重新加载,这样不仅可以自动探测到映象文件加载过程中的错误,而且还可以自动进行容错处理,克服了由于文件加载错误而导致的执行异常,甚至系统死机的发生。
附图说明
图1为公知启动装载(Boot Loader)程序加载文件处理的基本流程图;
图2为本发明在Linux操作系统引导过程中实现映象文件自动容错的方法流程图;
图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操作系统引导过程中实现映象文件自动容错的方法,用于检测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,如图2所示,为本发明的流程图,首先配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码(步骤201);接着初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件(步骤202);然后加载该当前映象文件,根据校验码对该映象文件进行完整性检查(步骤203);如果未通过完整性检查则按顺序将另一映象文件指定为当前映象文件重新加载(步骤204);最后执行该当前映象文件(步骤205)。
下面以一较佳实施例来说明本发明实现启动装载(boot loader)程序的容错功能的过程,假定设计使用两个物理存储介质(如Flash ROM,磁盘等等)来保存第一组映象文件(primary groups Image)和第二组映象文件(secondlygroup Images)。两组Images保证当一组加载失败后可以选择另一组。两个物理存储介质,来保证当其中一种介质损坏后,可以使用另一个物理介质。提供系统有效运转的可靠保障。
在要加载的映象(Image)文件后面加入Image文件的校验码(如md5算法等等)。用于映象(Image)文件的完整性的检查。
在启动装载(boot loader)的程序(如grub)中加入映象(Image)文件完整性检查的功能。检查成功后并改变相应的系统变量,来更新Image文件的大小。
在启动装载(boot loader)的程序中加入对Image文件操作(如打开,读取,完整性检查等)的异常处理,即选择另一组或另一个映象(Image)文件进行重新加载。
当启动装载(boot loader)的程序通过容错功能从另一个(组)映象(Image)成功启动Linux后,系统内部提供对引导失败的Image修复的功能,如果修复失败系统会远程通知使用者,根据需要这些处理可以是自动处理的过程,这样就完全不需要过多的维护。
如图3所示,为本发明的实施例在加入校验码后的映象文件示意图,将要加载的映象(Image)文件重整,可通过md5数学算法(或其它的算法来完成检验和checksum)计算映象(Image)文件的16个字节校验码,将该校验码写入该档案尾部,产生新的映象(Image)文件,分别保存在两个不同物理存储介质(/dev/hda和/dev/hdb)中,并相应的完成对启动装载(Boot Loade)r程序的配置文件。
以NAS OS的Boot Loader为例,NAS Boot Loader通过“Grub”程序实现装载,下面是修改Boot Loader的配置文件,将两个OS Image文件的必要信息写入Grub.conf的实例:
#grub.conf
serial--unit=0--speed=115200
terminal--timeout=1 serial console
default=0#默认指向第一组Image的配置项。
timeout=5#定义timeout默认的时间
#以上为boot loader的全局配置项,与
#Image的配置无关
title nas2.00.Primary OS
#Image的Tiltle,要加载的第一组
#Image的配置项。其后续的咨询将被
#boot loader程序会保存到全局的数组
#链表中
root(hd0,0)#/dev/hda第一个OS的存储介质的
#第一个分区
kernel/boot/bzImage ro etc=/dev/hda1 console=ttyS0,115200 console=tty0
#要加载的kernel映象“bzImage”
#“ro etc=/dev/hda 1
#console=ttyS0,115200 console=tty0”
#作为kernel的参数,与加载Image文件
#无关
initrd/boot/initrd.gz
#要加载的rmdisk的镜像“initrd.gz”
title nas2.00.Secondary OS
#Image的Tiltle,要加载的第一组
#Image的配置项。
root(hd1,0)#/dev/hdb第二个OS的存储介质的第
#一个分区
kernel/boot/bzImage ro etc=/dev/hdb1 console=ttyS0,115200 console=tty0
initrd/boot/initrd.gz
在Boot Loader程序中进行Image文件的完整性检查的步骤,请参阅图4,首先定位内存中的Image文件(步骤401);然后取出Image文件的16个字节的校验码,保存到Verify1,赋值Boot Loader中记录的Image Size的变量FileSize(步骤402);使用MD5校验算法,校验Image文件中剩余的字节,得到Image文件的校验码Verify2(步骤403);然后比较Verify1与Verify2(步骤404);如果不一致,则返回异常处理(步骤405);如果一致,则更新Image文件的大小,FileSize=FileSize-16(步骤406);然后返回正常处理(步骤407)。
一些Image文件不需要记录Image文件的大小(size),如kernel的镜像“bzImage”,但rmdisk的镜像“initrd.gz”必须要记录和更新其大小。
图5为本发明的实施例启动装载(Boot Loader)程序加载文件处理的基本流程图,本发明的实施例改进了一般启动装载(Boot Loader)的程序,增加对Image文件完整性校验和比较的步骤。即将要校验的Image文件的后16个字节取出、保存,和Image剩余的字节的checksum。结合Image文件完整性校验和比较,改进了Image文件异常操作的错误处理,实现自动重新加载另一组Image文件,从而避免宕机的发生以及人工处理的过程。
本发明通过容错功能从另一个(组)Image文件成功启动Linux后,系统内部提供对引导失败的Image修复的功能,如果修复失败系统会远程通知使用者,根据需要这些处理可以是自动处理的过程,这样就完全不需要过多的维护。
在上述实施例中介绍的以Grub程序作为boot loader在对NAS OS Image引导时自动纠错的方法,同样适用于其它的boot loader程序。利用以上的方法和策略,实现对Linux Image文件的自动容错和修正功能,可以减少对系统进行人工维护的开销,对于一些基于Linux的产品如服务器,存储设备等等的可靠性有了很大的改进,可以保证系统的有效运行。
以上所述,仅为本发明其中的较佳实施例,并非用来限定本发明的实施范围;凡依据本发明申请专利范围在不脱离本发明的精神和范围内所作的均等变化与修饰,均应属于本发明专利权利要求书所要求保护的范围内。
Claims (10)
1、一种在Linux操作系统引导过程中实现映象文件自动容错的方法,用于检测Linux操作系统启动过程中的映象文件错误,并自动进行容错处理,其中该方法包括:
配置一组以上的映象文件分别对应存储于一个以上的物理储存介质,并在映象文件中加入校验码;
初始化系统数据,分别定位各个映象文件的位置并指定当前映象文件;
加载该当前映象文件,根据校验码对该映象文件进行完整性检查;
如果未通过完整性检查则按顺序将另一映象文件指定为当前文件重新加载;及
执行该当前映象文件。
2、如权利要求1所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该校验码是将映象文件通过数学算法而生成固定字节数的校验和。
3、如权利要求书1所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该完整性检查的步骤,包括:
定位加载内存中的映象文件;
读取该映象文件中的校验码;
使用与生成校验码相同的数学算法,重新计算该映象文件;及
将该计算结果与读取的校验码进行比较。
4、如权利要求书3所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该比较结果如果一致,则通过该完整性检查。
5、如权利要求书3所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该比较结果如果不一致,则未通过该完整性检查。
6、如权利要求书4所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中通过该完整性检查后,则直接运行该映象文件。
7、如权利要求书3所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该完整性检查的步骤中,还包括记录该映象文件的大小,并在比较计算结果后更新该映象文件的大小的步骤。
8、如权利要求书1所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中在未通过该完整性检查时,还包括对引导失败的映象文件进行修复的步骤。
9、如权利要求书8所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该修复步骤失败时,则远程通知使用者。
10、如权利要求书1所述的在Linux操作系统引导过程中实现映象文件自动容错的方法,其中该校验码是通过MD5数学算法完成16字节的检验和,并写入映象文件的尾部。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200310124401XA CN100476745C (zh) | 2003-12-24 | 2003-12-24 | 在Linux操作系统引导过程中实现映象文件自动容错的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200310124401XA CN100476745C (zh) | 2003-12-24 | 2003-12-24 | 在Linux操作系统引导过程中实现映象文件自动容错的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1632756A CN1632756A (zh) | 2005-06-29 |
CN100476745C true CN100476745C (zh) | 2009-04-08 |
Family
ID=34845004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200310124401XA Expired - Fee Related CN100476745C (zh) | 2003-12-24 | 2003-12-24 | 在Linux操作系统引导过程中实现映象文件自动容错的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100476745C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428157C (zh) * | 2005-10-19 | 2008-10-22 | 联想(北京)有限公司 | 一种可进行完整性检测的计算机系统和方法 |
CN101221508B (zh) * | 2008-01-31 | 2010-09-29 | 杭州华三通信技术有限公司 | 一种设备启动方法和装置 |
CN102043651B (zh) * | 2009-10-22 | 2013-07-03 | 鸿富锦精密工业(深圳)有限公司 | Nand闪存及其数据更新管理方法 |
JP5941273B2 (ja) * | 2011-12-02 | 2016-06-29 | キヤノン株式会社 | 情報処理装置、及びその制御方法 |
CN104035833A (zh) * | 2013-03-07 | 2014-09-10 | 联发科技股份有限公司 | 校验机器可读代码完整性的方法及系统 |
CN103617095A (zh) * | 2013-11-15 | 2014-03-05 | 中国航空无线电电子研究所 | 一种VxWorks映像文件正确性的检查方法 |
CN108446189B (zh) * | 2018-06-12 | 2023-09-12 | 中国科学院上海技术物理研究所 | 一种星载嵌入式软件容错启动系统及方法 |
CN110868337B (zh) * | 2019-11-15 | 2021-05-07 | 腾讯科技(深圳)有限公司 | 容错共识机制测试方法、装置、存储介质和计算机设备 |
CN113778553A (zh) * | 2021-08-27 | 2021-12-10 | 中国航空无线电电子研究所 | 嵌入式航空电子设备的高可靠性启动加载方法 |
-
2003
- 2003-12-24 CN CNB200310124401XA patent/CN100476745C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1632756A (zh) | 2005-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7734945B1 (en) | Automated recovery of unbootable systems | |
US8417992B2 (en) | Method, system and article of manufacture for system recovery | |
US8886995B1 (en) | Fault tolerant state machine for configuring software in a digital computer | |
US6381694B1 (en) | System for automatic recovery from software problems that cause computer failure | |
US7765393B1 (en) | Method and system of embedding a boot loader as system firmware | |
US7509544B2 (en) | Data repair and synchronization method of dual flash read only memory | |
US20040255106A1 (en) | Recovery of operating system configuration data by firmware of computer system | |
US6931522B1 (en) | Method for a computer using the system image on one of the partitions to boot itself to a known state in the event of a failure | |
JP2016164785A (ja) | セキュア・リカバリ装置及び方法 | |
US20070174704A1 (en) | Computer program automatic recovery activation control method and system | |
CN102521081A (zh) | 修复遭破坏的软件 | |
US10824517B2 (en) | Backup and recovery of configuration files in management device | |
CN110413230A (zh) | 一种嵌入式系统构建方法及存储介质 | |
CN108874582A (zh) | 一种系统恢复方法、装置及终端 | |
CN100476745C (zh) | 在Linux操作系统引导过程中实现映象文件自动容错的方法 | |
CN100395713C (zh) | 自动修复基本输入输出系统元件的方法与模块 | |
US8176309B2 (en) | Boot system has BIOS that reads rescue operating system from memory device via input/output chip based on detecting a temperature of a hard disk | |
CN113157303A (zh) | 升级方法、嵌入式系统、终端及计算机存储介质 | |
CN109933374B (zh) | 一种计算机启动方法 | |
US8140475B1 (en) | Dynamic configuration archival and retrieval | |
WO2015184732A1 (zh) | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 | |
US20140156943A1 (en) | Information processing apparatus, information processing method, and program | |
KR101393034B1 (ko) | 시스템 복원 장치 및 방법 | |
KR101844095B1 (ko) | 부트로더 실행 방법 및 장치 | |
CN113297010A (zh) | 基于片上系统的固件恢复方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090408 Termination date: 20101224 |