CN107015878B - 用于计算机的系统修复方法及系统 - Google Patents

用于计算机的系统修复方法及系统 Download PDF

Info

Publication number
CN107015878B
CN107015878B CN201710186102.0A CN201710186102A CN107015878B CN 107015878 B CN107015878 B CN 107015878B CN 201710186102 A CN201710186102 A CN 201710186102A CN 107015878 B CN107015878 B CN 107015878B
Authority
CN
China
Prior art keywords
bios
program code
storage area
code corresponding
module
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.)
Active
Application number
CN201710186102.0A
Other languages
English (en)
Other versions
CN107015878A (zh
Inventor
李�浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN201710186102.0A priority Critical patent/CN107015878B/zh
Publication of CN107015878A publication Critical patent/CN107015878A/zh
Application granted granted Critical
Publication of CN107015878B publication Critical patent/CN107015878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Abstract

本公开提供了一种用于计算机的系统修复方法及系统,所述计算机包括基本输入输出系统BIOS,所述方法包括:对用于存储所述BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;根据得到的读取结果,判断所述BIOS对应的所述程序代码是否完整;以及若所述程序代码不完整,则对所述存储区域中存储的所述BIOS对应的所述程序代码进行修复。

Description

用于计算机的系统修复方法及系统
技术领域
本公开涉及一种用于计算机的系统修复方法和一种用于计算机的系统修复系统。
背景技术
基本输入输出系统(Basic Input Output System,简称为BIOS)是一组固化到计算机内主板上的只读存储器(Read-Only Memory,简称为ROM)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自启动程序等。BIOS作为连接软件程序与硬件设备的桥梁,一旦出错很容易导致计算机无法开机。
发明内容
本公开的一个方面提供了一种用于计算机的系统修复方法,计算机包括基本输入输出系统BIOS,该方法包括:对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;根据得到的读取结果,判断BIOS对应的程序代码是否完整;以及若该程序代码不完整,则对该存储区域中存储的BIOS对应的程序代码进行修复。
可选地,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果,包括对存储区域中的目标区域进行数据读取操作,得到读取结果,其中,目标区域用于存储BIOS对应的程序代码中的开机初始化程序代码;以及根据得到的读取结果,判断BIOS对应的程序代码是否完整,包括根据得到的读取结果,判断开机初始化程序代码是否完整。
可选地,在对存储区域中的目标区域进行数据读取操作之前,还包括判断BIOS启动是否异常,其中,在BIOS启动异常时,对存储区域中的目标区域进行数据读取操作。
可选地,判断BIOS启动是否异常包括判断BIOS是否在预设时间内完成启动,若BIOS在预设时间内完成启动,则确定BIOS启动无异常,否则,确定BIOS启动异常。
可选地,对存储区域中存储的BIOS对应的程序代码进行修复包括:关闭BIOS;以及通过外设接口总线,对存储区域中存储的BIOS对应的程序代码进行重写操作,或者通过外设接口总线,对存储区域中存储的BIOS对应的程序代码中的缺失部分进行写入操作。
可选地,该系统修复方法由基板管理控制器执行。
本公开的另一个方面提供了一种用于计算机的系统修复系统,其中计算机包括基本输入输出系统BIOS,系统修复系统包括:读取模块,用于对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;第一判断模块,用于根据得到的读取结果,判断BIOS对应的程序代码是否完整;以及修复模块,用于在程序代码不完整时,对存储区域中存储的BIOS对应的程序代码进行修复。
可选地,读取模块,还用于对存储区域中的目标区域进行数据读取操作,得到读取结果,其中,目标区域用于存储BIOS对应的程序代码中的开机初始化程序代码;以及第一判断模块,还用于根据得到的读取结果,判断开机初始化程序代码是否完整。
可选地,该系统修复系统还包括第二判断模块,其中:第二判断模块,用于在对存储区域中的目标区域进行数据读取操作之前,判断BIOS启动是否异常;以及读取模块,还用于在BIOS启动异常时,对存储区域中的目标区域进行数据读取操作。
可选地,第二判断模块还用于判断BIOS是否在预设时间内完成启动,若BIOS在预设时间内完成启动,则确定BIOS启动无异常,否则,确定BIOS启动异常。
可选地,修复模块包括:关闭单元,用于关闭BIOS;以及写入单元,用于通过外设接口总线,对存储区域中存储的BIOS对应的程序代码进行重写操作,或者写入单元,用于通过外设接口总线,对存储区域中存储的BIOS对应的程序代码中的缺失部分进行写入操作。
可选地,该系统修复系统包括基板管理控制器。
本公开的另一方面提供了一种用于计算机的系统修复系统,该系统包括一个或多个存储器,用于存储可执行指令;以及一个或多个处理器,用于执行所述可执行指令,以实现如上述的系统修复方法。
本公开的另一方面提供了一种非易失性存储介质,用于存储上述的系统修复方法的程序代码。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1a和图1b示意性示出了根据本公开实施例的用于计算机的系统修复方法的应用场景;
图2示意性示出了根据本公开实施例的用于计算机的系统修复方法的流程图;
图3示意性示出了根据本公开实施例的对程序代码进行修复操作的流程图;
图4示意性示出了根据本公开实施例的判断BIOS启动是否异常操作的流程图;
图5示意性示出了根据本公开实施例的用于计算机的系统修复系统的框图;以及
图6示意性示出了根据本公开的另一实施例的用于计算机的系统修复系统的框图。
具体实施方式
根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
Boot Block是BIOS中一块特定的存储区域,用于存储BIOS系统中最重要的启动信息,一旦BIOS损坏,如果Boot Block区域完整,则BIOS可以进行自动修复。
在相关技术中,在基板管理控制器(Baseboard Management Controller,简称为BMC)中设置看门狗(watch dog),如果BIOS在规定时间内启动完成,则看门狗不会超时提醒,如果看门狗超时提醒3次,则BMC刷新BIOS中的程序代码。
发明人发现,上述方法判断条件不准确,如果BIOS的程序代码完整,但是由于硬件损坏,依然会导致BIOS无法正常启动,从而引起看门狗超时提醒,进而导致BIOS被误刷。
本公开的实施例提供了一种用于计算机的系统修复方法,其中,计算机包括BIOS,该方法包括:对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;根据得到的读取结果,判断BIOS对应的程序代码是否完整;以及若程序代码不完整,则对存储区域中存储的BIOS对应的程序代码进行修复。
图1a和图1b示意性示出了根据本公开的实施例的用于计算机的系统修复方法的应用场景。
如图1a所示,在统一可扩展固件接口(Unified Extensible FirmwareInterface,简称为UEFI)架构中,BIOS的启动包括四个阶段:安全性阶段(Security阶段,简称SEC阶段)S110、EFI前初始化阶段(Pre EFI Initialization,简称PEI阶段)S120、驱动程序执行环境阶段(Driver Execution Environment,简称DXE阶段)S130以及开机设备选择阶段开机设备选择阶段(Boot Dev Select,简称BDS阶段)S140。
SEC阶段S110是平台初始化的第一个阶段,计算机系统加电或重启后进入这个阶段。计算机在这个阶段包括创建一个临时的记忆体,在主记忆体被初始化之前来预先验证CPU、芯片组以及主机板,并且传递握手信息给PEI阶段。
PEI阶段S120是,用以唤醒CPU以及一部分记忆体的初始化阶段。同时,芯片组和主机板也开始初始化。在PEI阶段结束时,核心的芯片组(例如,CPU,PCH,内存等)已经初始化完成。此时BIOS已经有能力检查BIOS ROM本身是否完整,是否要进入自我修复。
在DXE阶段S130,驱动程序执行环境阶段。DXE阶段的主要功能在于沟通EFI驱动程序以及硬件。即,该阶段内所有的记忆体、外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)、通用串行总线(Universal Serial Bus,简称USB)、串行高级技术附件(Serial Advanced Technology Attachment,简称SATA)等都完成初始化,并且完成驱动程序的加载。
在DBS阶段S140使用者可以在开机管理者程式页面选择从哪个侦测到的开机设备来启动。
如图1b所示,在统一的可扩展固件接口(Unified Extensible FirmwareInterface,简称UEFI)架构下,BIOS的程序代码以文件的形式存储在BIOS ROM100中,BIOSROM100包括FV_BB110、FV_MAIN120以及FV_NVRAM130等几个区域。FV_BB为Boot Block存储区域,包含有用于引导的最小指令集,存放着开机初始化时所需要的代码(即上述SEC阶段以及PEI阶段的代码),并为接下来执行FV_MAIN中的代码而做好准备工作。
FV_BB存储区域中的代码可以检测BIOS是否需要自我修复,并且可以通过读取BIOS Image来实现BIOS的自我修复。因此,即使BIOS ROM遭到破坏,只要FV_BB存储区域保持完整,BIOS就可以实现自我修复。
图2示意性示出了根据本公开的实施例的用于计算机的系统修复方法的流程图。
如图2所示,本公开实施例的系统修复方法可以应用于计算机中,所述计算机包括基本输入输出系统BIOS,该方法包括如下操作S210-S230。
操作S210,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果。
操作S220,根据得到的读取结果,判断BIOS对应的程序代码是否完整。
操作S230,若程序代码不完整,则对存储区域中存储的BIOS对应的程序代码进行修复。
本实施例通过从BIOS的存储区域中读取BIOS对应的程序代码,并且对读取得到的程序代码进行校验,判断该程序代码是否完整,若该程序代码完整,则认为BIOS的该存储区域没有损坏,保持现场,若该程序代码不完整,则认为BIOS的该存储区域有损坏现象,需要对该存储区域中存储的BIOS对应的程序代码进行修复,以使BIOS可以正常完成启动。
通过本实施例的系统修复方法,可以主动检测BIOS的存储区域是否被破坏,在检测到BIOS的存储区域被破坏时,实现自动刷新修复,无需用户参与手动操作。并且可以准确判断是否是因为BIOS的存储区域被破坏导致地BIOS启动异常,只有在BIOS的存储区域破坏的情况下,才对BIOS对应的程序代码进行修复,避免由于硬件损坏导致的BIOS启动异常的情况下,程序代码被误刷。
在操作S210中,存储BIOS对应的程序代码的存储区域可以是主板上的一块ROM芯片。BIOS对应的程序代码可以固化在主板上的ROM芯片中。
根据本公开实施例,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,可以是对BIOS对应的程序代码的全部存储区域进行数据读取操作,例如,读取BIOS ROM中的全部程序代码;也可以是对全部存储区域中的目标存储区域进行数据读取操作,例如,读取BIOS ROM中FV_BB存储区域的全部程序代码,或者读取BIOS ROM中的FV_BB和FV_MAIN两个存储区域中的全部程序代码;还可以是对目标存储区域中的特定部分进行数据读取操作,例如,读取BIOS ROM中FV_BB存储区域中的特定的程序代码。
在本公开实施例中,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果,包括对存储区域中的目标区域进行数据读取操作,得到读取结果,其中,目标区域用于存储BIOS对应的程序代码中的开机初始化程序代码。根据本公开实施例,开机初始化程序代码可以包括参见图1a中描述的SEC阶段和PEI阶段中对应的程序代码。SEC阶段和PEI阶段中对应的程序代码通常存储在BIOS ROM中FV_BB存储区域。即,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,例如可以是读取BIOS ROM的FV_BB存储区域中的全部程序代码。
在本公开实施例中,FV_BB存储区域中存储有BIOS启动过程中的SEC阶段和PEI阶段的程序代码,只要FV_BB中的程序代码是完整的,BIOS就有能力进行自我修复。
因此根据本公开的实施例,只对BIOS ROM中的目标区域中存储的程序代码进行读取操作,具有针对性,可以减少读取的数据量,减少操作时间,并且只读取FV_BB存储区域中的程序代码依然可以实现修复BIOS的目的。
在操作S220中,根据得到的读取结果,判断BIOS对应的程序代码是否完整。其中,判断BIOS对应的程序代码是否完整可以包括使用总和检验码来校验总和,来判断数据的完整性和准确性。例如,在计算机领域内,程序代码以二进制形式存储,总和检验码通过将二进制的程序代码相加得到校验总和,判断校验总和是否满足规定的数值(例如,校验总和为0),如果满足,则表示该程序代码完整。在本公开实施例中,判断BIOS对应的程序代码是否完整还可以包括使用公钥、秘钥等方法,本领域技术人员应当理解,凡是可以实现校验一段数据的完整性的技术方法都可以应用于本公开的判断BIOS对应的程序代码是否完整的操作中。
根据本公开实施例,根据得到的读取结果,判断BIOS对应的程序代码是否完整,包括判断开机初始化程序代码是否完整。如果开机初始化程序代码完整,则BIOS有能力实现自我修复。本公开的实施例只针对开机初始化程序代码进行校验,可以减少校验程序和校验时间,并且依然可以实现修复BIOS的目的。
在操作S230中,若程序代码不完整,则对存储区域中存储的BIOS对应的程序代码进行修复。根据本公开实施例,若程序代码不完整,则表示BIOS ROM中的存储区域损坏,可能会导致BIOS无法正常启动,此时,需要对BIOS进行修复,使得修复后的BIOS可以正常启动。
图3示意性示出了根据本公开的实施例的对程序代码进行修复操作的流程图。
如图3所示,操作S230例如可以包括如下操作S231-S232:
操作S231,关闭所述BIOS。
操作S232,通过外设接口总线,对存储区域中存储的BIOS对应的程序代码进行重写操作,或者通过所述外设接口总线,对存储区域中存储的BIOS对应的程序代码中的缺失部分进行写入操作。
根据本公开实施例,当判断程序代码不完整时,首先关闭BIOS,然后对BIOS进行修复。对BIOS进行修复可以包括对存储区域中存储的BIOS对应的程序代码进行重写操作,例如,若读取BIOS ROM中的全部代码,则对全部代码进行重写操作;若读取BIOS ROM中目标区域FV_BB的全部代码,则对FV_BB存储区域内的程序代码进行重写操作。对BIOS进行修复还可以包括对存储区域中存储的BIOS对应的程序代码中的缺失部分进行写入操作,例如,读取BIOS ROM中目标区域FV_BB的全部代码,经过判断,FV_BB中的FV_BB1文件完整,FV_BB2文件不完整,则对FV_BB2文件中的程序代码进行重写操作。
在本公开实施例中,通过对BIOS对应的程序代码进行重写操作,可以修复BIOS,以使BIOS可以正常启动。通过针对BIOS对应的程序中损坏的部分就行重写修复,可以节省时间,减少修复难度。
图4示意性示出了根据本公开的实施例的判断BIOS启动是否异常操作的流程图。
如图4所示,在操作S210之前还包括操作S200。操作S210-S230与上述参考图2和图3描述的方法相同或类似。
操作S200,判断BIOS启动是否异常,其中,在BIOS启动异常时,对存储区域中的目标区域进行数据读取操作。
根据本公开实施例,判断BIOS启动是否异常包括判断BIOS是否在预设时间内完成启动,若BIOS在预设时间内完成启动,则确定BIOS启动无异常,否则,确定BIOS启动异常。例如,可以设置一计时器,计时器可以包括watch dog等具有计时功能的程序。当BIOS开始启动时,计时器开始计时,如果在计时器设定的时间内BIOS完成启动,则关闭计时器。如果在计时器设定的时间内BIOS没有完成启动,则到达设定时间时,计时器超时提醒,告知BIOS启动异常。
在确定BIOS启动异常时,对存储区域中的目标区域进行数据读取,具体可以参见上述图2和图3描述的方法,在此不再赘述。
在确定BIOS启动异常时,再进行对BIOS对应程序代码的读取、判断以及修复等操作,可以节省不必要的操作程序,如果BIOS启动正常,则不需要对BIOS进行修复,即,不需要对BIOS对应的程序代码进行读取和判断。
在本公开实施例中,上述参见图2-图4描述的方法可以由基板管理控制器执行,在确定BIOS启动异常的情况下,读取BIOS ROM中FV_BB存储区域中的程序代码,判断该区域中的程序代码是否完整,若完整,则表示BIOS有能力实现自我修复,若不完整,则对FV_BB存储区域进行重写操作,以使BIOS可以完成启动程序中的SEC阶段以及PEI阶段,使得BIOS可以通过自我修复,实现正常启动。
通过本公开实施例提供的计算机系统修复方法可以在BIOS启动异常时,自动进行检查和修复。并且准确判断BIOS启动异常是否是因为BIOS的程序代码不完整导致的,针对由于程序代码不完整导致的BIOS启动异常进行BIOS的修复,避免误刷现象。在本公开实施例中,在BIOS启动异常时,可以只判断FV_BB存储区域中的程序代码是否完整,并且在不完整的情况下,重写FV_BB存储区域中的程序代码,用时短,并且同样可以实现对BIOS修复的目的。
图5a-5b示意性示出了根据本公开的实施例的用于计算机的系统修复系统500的框图。
如图5a所示,系统修复系统500包括读取模块510、第一判断模块520、修复模块530以及第二判断模块540。该系统修复系统500可以执行上面参考图2-图4描述的方法,以实现计算机系统的系统修复。
读取模块510,用于对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果。根据本公开实施例,读取模块510例如可以执行上文参考图2描述的操作S210。
第一判断模块520,用于根据得到的读取结果,判断BIOS对应的程序代码是否完整。根据本公开实施例,第一判断模块520例如可以执行上文参考图2描述的操作S220。
修复模块530,用于在程序代码不完整时,对存储区域中存储的BIOS对应的程序代码进行修复。根据本公开实施例,修复模块530例如可以执行上文参考图2描述的操作S230以及图3描述的操作S231-S232。
第二判断模块540,用于在对存储区域中的目标区域进行数据读取操作之前,判断BIOS启动是否异常。根据本公开实施例,第二判断模块540例如可以执行上文参考图4描述的操作S200。
其中,如图5b所示,修复模块530包括关闭单元531以及写入单元532。
关闭单元531,用于关闭BIOS。根据本公开实施例,关闭单元531例如可以执行上文参考图3描述操作S231。
写入单元532,用于通过外设接口总线,对存储区域中存储的BIOS对应的程序代码进行重写操作,或者用于通过外设接口总线,对存储区域中存储的BIOS对应的程序代码中的缺失部分进行写入操作。根据本公开实施例,写入单元532例如可以执行上文参考图3描述的操作S232。
具体地,系统修复系统500可以包括基板管理控制器。在系统修复过程中,第二判断模块540,通过判断BIOS是否在预定时间内完成启动来判断BIOS是否启动异常。在确定BIOS启动出现异常的情况下,读取模块510,对用于存储BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果。其中,读取模块510可以只对存储区域中的目标区域进行数据读取操作,例如只读取BIOS ROM中的FV_BB存储区域中的程序代码。第一判断模块520根据得到的读取结果,判断BIOS对应的程序代码是否完整。其中,第一判断模块520可以根据从FV_BB中读取的程序代码,判断该程序代码是否完整。在该程序代码不完整的情况下,修复模块530中的关闭单元531关闭BIOS,写入单元通过外设接口总线,对FV_BB存储区域中的程序代码进行重写。具体地可以参见上面参考图2-图4的描述,这里不再重复。
通过本公开实施例提供的计算机系统修复系统可以在BIOS启动异常时,自动进行检查和修复。并且准确判断BIOS启动异常是否是因为BIOS的程序代码不完整导致的,针对由于程序代码不完整导致的BIOS启动异常进行BIOS的修复,避免误刷现象。在本公开实施例中,在BIOS启动异常时,可以只判断FV_BB存储区域中的程序代码是否完整,并且在不完整的情况下,重写FV_BB存储区域中的程序代码,用时短,并且同样可以实现对BIOS修复的目的。
可以理解的是,读取模块510、第一判断模块520、修复模块530以及第二判断模块540可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块(例如,关闭单元531以及写入单元532)的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,读取模块510、第一判断模块520、修复模块530以及第二判断模块540中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,读取模块510、第一判断模块520、修复模块530以及第二判断模块540中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
图6示意性示出了根据本公开的另一实施例的用于计算机的系统修复系统的框图。
如图6所示,系统修复系统600包括处理器610以及计算机可读存储介质620。该系统修复系统600可以执行上面参考图2-图4描述的方法,以实现用于计算机的系统修复功能。
具体地,处理器610例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器610还可以包括用于缓存用途的板载存储器。处理器610可以是用于执行参考图2~图4描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质620,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质620可以包括计算机程序621,该计算机程序621可以包括代码/计算机可执行指令,其在由处理器610执行时使得处理器610执行例如上面结合图2~图4所描述的方法流程及其任何变形。
计算机程序621可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序621中的代码可以包括一个或多个程序模块,例如包括621A、模块621B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器610执行时,使得处理器610可以执行例如上面结合图2~图4所描述的方法流程及其任何变形。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (10)

1.一种用于计算机的系统修复方法,所述计算机包括基本输入输出系统BIOS,所述方法包括:
在BIOS启动异常时,对用于存储所述BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;
根据得到的读取结果,判断所述BIOS对应的所述程序代码是否完整;以及
若所述程序代码不完整,则对所述存储区域中存储的所述BIOS对应的所述程序代码进行修复,若所述程序代码完整,则保持现场。
2.根据权利要求1所述的方法,其中:
所述对用于存储所述BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果包括对所述存储区域中的目标区域进行数据读取操作,得到读取结果,其中,所述目标区域用于存储所述BIOS对应的所述程序代码中的开机初始化程序代码;以及
所述根据得到的读取结果,判断所述BIOS对应的所述程序代码是否完整包括根据得到的读取结果,判断所述开机初始化程序代码是否完整。
3.根据权利要求2所述的方法,其中,在对所述存储区域中的目标区域进行数据读取操作之前,还包括判断所述BIOS启动是否异常,其中,在BIOS启动异常时,对所述存储区域中的目标区域进行数据读取操作。
4.根据权利要求3所述的方法,其中,所述判断BIOS启动是否异常包括判断所述BIOS是否在预设时间内完成启动,若所述BIOS在预设时间内完成启动,则确定所述BIOS启动无异常,否则,确定所述BIOS启动异常。
5.根据权利要求1所述的方法,其中,所述对所述存储区域中存储的所述BIOS对应的所述程序代码进行修复包括:
关闭所述BIOS;以及
通过外设接口总线,对所述存储区域中存储的所述BIOS对应的所述程序代码进行重写操作,或者通过所述外设接口总线,对所述存储区域中存储的所述BIOS对应的所述程序代码中的缺失部分进行写入操作。
6.一种用于计算机的系统修复系统,所述计算机包括基本输入输出系统BIOS,所述系统修复系统包括:
读取模块,用于在BIOS启动异常时,对用于存储所述BIOS对应的程序代码的存储区域进行数据读取操作,得到读取结果;
第一判断模块,用于根据得到的读取结果,判断所述BIOS对应的所述程序代码是否完整;以及
修复模块,用于在所述程序代码不完整时,对所述存储区域中存储的所述BIOS对应的所述程序代码进行修复,若所述程序代码完整,则保持现场。
7.根据权利要求6所述的系统,其中:
所述读取模块,还用于对所述存储区域中的目标区域进行数据读取操作,得到读取结果,其中,所述目标区域用于存储所述BIOS对应的所述程序代码中的开机初始化程序代码;以及
所述第一判断模块,还用于根据得到的读取结果,判断所述开机初始化程序代码是否完整。
8.根据权利要求7所述的系统,还包括第二判断模块,其中:
所述第二判断模块,用于在对所述存储区域中的目标区域进行数据读取操作之前,判断所述BIOS启动是否异常;以及
所述读取模块,还用于在所述BIOS启动异常时,对所述存储区域中的目标区域进行数据读取操作。
9.根据权利要求8所述的系统,其中,所述第二判断模块还用于判断所述BIOS是否在预设时间内完成启动,若所述BIOS在预设时间内完成启动,则确定所述BIOS启动无异常,否则,确定所述BIOS启动异常。
10.根据权利要求5所述的系统,其中,所述修复模块包括:
关闭单元,用于关闭所述BIOS;以及
写入单元,用于通过外设接口总线,对所述存储区域中存储的所述BIOS对应的所述程序代码进行重写操作,或者写入单元,用于通过所述外设接口总线,对所述存储区域中存储的所述BIOS对应的所述程序代码中的缺失部分进行写入操作。
CN201710186102.0A 2017-03-24 2017-03-24 用于计算机的系统修复方法及系统 Active CN107015878B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710186102.0A CN107015878B (zh) 2017-03-24 2017-03-24 用于计算机的系统修复方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710186102.0A CN107015878B (zh) 2017-03-24 2017-03-24 用于计算机的系统修复方法及系统

Publications (2)

Publication Number Publication Date
CN107015878A CN107015878A (zh) 2017-08-04
CN107015878B true CN107015878B (zh) 2020-05-26

Family

ID=59446051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710186102.0A Active CN107015878B (zh) 2017-03-24 2017-03-24 用于计算机的系统修复方法及系统

Country Status (1)

Country Link
CN (1) CN107015878B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107621940B (zh) * 2017-09-18 2021-05-18 联想(北京)有限公司 一种初始化程序的更新方法及电子设备
CN108958982A (zh) * 2018-07-26 2018-12-07 深圳控道智能科技有限公司 一种bios加固方法和系统
CN109784063A (zh) * 2018-12-30 2019-05-21 联想(北京)有限公司 信息处理方法、装置及电子设备
CN110502367A (zh) * 2019-07-29 2019-11-26 合肥联宝信息技术有限公司 一种控制方法及电子设备
CN111858119A (zh) * 2020-07-13 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种bios故障修复方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1952885A (zh) * 2005-10-19 2007-04-25 联想(北京)有限公司 一种可进行完整性检测的计算机系统和方法
CN103729220A (zh) * 2013-12-25 2014-04-16 合肥联宝信息技术有限公司 一种利用ec rom恢复bios rom的方法及装置
CN104035788A (zh) * 2013-03-04 2014-09-10 联想(北京)有限公司 一种进程信息显示方法及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1952885A (zh) * 2005-10-19 2007-04-25 联想(北京)有限公司 一种可进行完整性检测的计算机系统和方法
CN104035788A (zh) * 2013-03-04 2014-09-10 联想(北京)有限公司 一种进程信息显示方法及电子设备
CN103729220A (zh) * 2013-12-25 2014-04-16 合肥联宝信息技术有限公司 一种利用ec rom恢复bios rom的方法及装置

Also Published As

Publication number Publication date
CN107015878A (zh) 2017-08-04

Similar Documents

Publication Publication Date Title
CN107015878B (zh) 用于计算机的系统修复方法及系统
US7100087B2 (en) Module and method for automatic restoring BIOS device
TWI501253B (zh) 於裝置開機期間處置來自非揮發性記憶體之錯誤
US9542195B1 (en) Motherboards and methods for BIOS failover using a first BIOS chip and a second BIOS chip
US9672112B2 (en) Backing up firmware during initialization of device
US9880908B2 (en) Recovering from compromised system boot code
US9852298B2 (en) Configuring a system
US9703635B2 (en) Method, computer program, and computer for restoring set of variables
US20150199190A1 (en) System and method for updating firmware
JP7022809B2 (ja) コンピュータシステム、および、その安全管理方法、および、コンピュータソフトウェア製品
US8281119B1 (en) Separate normal firmware and developer firmware
US20040158702A1 (en) Redundancy architecture of computer system using a plurality of BIOS programs
US20120239920A1 (en) Approaches for updating bios
US20080040596A1 (en) Embedded system and boot code auto-copy method thereof
WO2016206514A1 (zh) 启动处理方法及装置
US11379330B2 (en) Information handling systems and related methods for testing memory during boot and during operating system (OS) runtime
US20150154091A1 (en) Bios maintenance method
CN105786545B (zh) 基于异构混合内存的断点恢复方法和系统
US20060206764A1 (en) Memory reliability detection system and method
US8719646B2 (en) Non-volatile memory (NVM) reset sequence with built-in read check
US8495353B2 (en) Method and circuit for resetting register
JP2008165729A (ja) マイクロコンピュータ
WO2017143513A1 (zh) 一种启动Boot的方法、CPU及单板
US11250929B2 (en) System for detecting computer startup and method of system
US9971659B1 (en) Memory programming providing corruption protection

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant