基于UEFI的固件镜像恢复方法及系统
技术领域
本发明涉及一种固件恢复技术领域,是一种基于UEFI的固件镜像恢复方法及系统。
背景技术
固件是计算机系统中的重要基础软件,固化存储于主板硬件的芯片中。计算机的主板、显卡、网卡、硬盘中都有固件,虽然作用不同,但是本质上都是使能和驱动硬件。
通常,烧写在主板的FLASH芯片中的固件镜像包含三大部分:安全验证模块、变量数据模块、配置启动模块。其中安全验证模块主要是对处理器、内存和主板进行安全验证;变量数据模块主要保存固件配置过程中要交互使用的数据;配置启动模块主要存储初始化硬件、加载各类驱动和启动系统所需的代码,即固件的代码区。当固件的配置启动模块遭到破坏后,整个固件在配置的过程中将配置失败,导致显示器无法点亮、键盘无法使用、无法读取文件系统等问题。目前多采用更换FLASH芯片的方式来恢复主板固件的功能,即由客户将产品送到指定维修点,由售后人员重新更换FLASH芯片,烧写正确可用的固件,或客户联系整机厂商,由整机厂商邮寄一块含有正确可用的固件的FLASH芯片,由客户自行更换FLASH芯片;上述方式的优点在于可以降低固件恢复的复杂度,缺点在于更换FLASH芯片的过程需要客户等待,无法实现固件的快速恢复,其等待的时间越长,给客户造成的损失越大。
发明
本发明提供了一种基于UEFI的固件镜像恢复方法及系统,克服了上述现有技术之不足,其能有效解决现有直接更换FLASH芯片的固件恢复方法存在的无法自我恢复的问题。
本发明的技术方案之一是通过以下措施来实现的:一种基于UEFI的固件镜像恢复方法,用于固件,固件包括备用固件配置启动区域、原固件配置启动区域和固件更新区域,方法包括:
获得原固件配置启动区域的固件数据被损坏信息;
将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域;
对原固件配置启动区域中的全部固件数据进行解压及验证,响应于验证不通过,则调用固件更新区域;
调用固件更新区域,判断调用是否成功,响应于调用成功,则以交互的方式完成固件更新,响应于调用不成功,则无法实现恢复,进行宕机操作。
下面是对上述发明技术方案的进一步优化或/和改进:
上述判断调用是否成功,响应于调用成功,则以交互的方式完成固件更新,包括:
安装固件更新所需设备的驱动,其中设备包括键盘、显卡、存储有完整固件的快速存储设备;
通过已安装驱动的设备获取完整的固件;
显示固件选择及固件更新状态的窗口,等待固件选择命令;
根据固件选择命令,更新相应固件。
上述对原固件配置启动区域中的全部固件数据进行解压及验证,包括:
对原固件配置启动区域中的全部固件数据进行解压;
验证解压后的固件数据,判断是否验证成功;
响应于否,则调用固件更新区域;
响应于是,则执行原固件配置启动区域中的全部固件数据,完成固件配置。
上述获得原固件配置启动区域的固件数据被损坏信息,包括:
对原固件配置启动区域中的全部固件数据进行解压;
验证解压后的固件数据,判断是否验证成功;
响应于否,则获得原固件配置启动区域的固件数据被损坏信息,并将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域;
响应于是,则执行原固件配置启动区域中的全部固件数据,完成固件配置。
上述调用固件更新区域,响应于调用不成功,则无法实现恢复,进行宕机操作。
本发明的技术方案之二是通过以下措施来实现的:一种基于UEFI的固件镜像恢复系统,包括:
固件安全验证单元,对主板关键硬件进行验证初始化,对固件配置进行引导,其中对固件配置进行引导包括解压验证原固件配置启动区域中的所有固件数据、将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域,调用固件更新区域;
在原固件配置启动区域内形成的原固件配置启动单元,提供固件配置;
在备用固件配置启动区域内形成的备用固件配置启动单元,为原固件配置启动单元的备用单元,在原固件配置启动单元的固件数据被损坏信息后,提供复制服务;
在固件更新区域内形成的最小固件更新单元,提供以交互的方式完成固件更新服务。
下面是对上述发明技术方案的进一步优化或/和改进:
上述最小固件更新模块包括:
PCI设备扫描模块,扫描与桥片通过PCI总线相连的设备;
设备驱动模块,为扫描到的设备提供驱动安装服务;
文件系统加载读取模块,通过已安装驱动的设备获取完整固件,显示固件选择及固件更新状态的窗口;
FLASH芯片擦写模块,根据固件选择命令,向FLASH芯片中指定位置擦写固件,完成相应固件配置。
上述固件配置启动模块包括:
基础驱动模块,存储硬件的驱动模块;
基础功能模块,存储基础功能对应的功能模块,其中基础功能为所有固件中都要具备的基本功能;
核心功能模块,存储特定功能对应的功能模块;
定制化功能模块,存储非通用功能对应的功能模块。
上述备用固件配置启动区域的结构与原固件配置启动区域的结构相同。
本发明根据固件遭到破坏的位置不同,破坏程度的不同,制定了不同的固件自我恢复策略,即先通过备用固件配置启动区域对主板进行配置的所有功能模块数据完成固件配置,若依然无法修复,则提供一个指定规则的固件更新方式,以交互的方式完成固件更新,固件更新依然无法修复,才进行更换FLASH芯片,由此提升了固件的健壮性,提升了固件在被攻击状态下的存活率,降低了传统的固件受到破坏后必须要更换FLASH芯片的几率,降低了因为固件损坏更换FLASH芯片而投入的时间、人力和物资成本。
附图说明
附图1为本发明实施例的流程图。
附图2为本发明实施例中调用固件更新区域以交互的方式完成固件更新的流程图。
附图3为本发明实施例中对原固件配置启动区域中的全部固件数据进行解压及验证的流程图。
附图4为本发明实施例中获得原固件配置启动区域的固件数据被损坏信息的流程图。
附图5为本发明实施例的结构框图。
具体实施方式
本发明不受下述实施例的限制,可根据本发明的技术方案与实际情况来确定具体的实施方式。
下面结合实施例及附图对本发明作进一步描述:
如附图1所示,本发明实施例公开了基于UEFI的固件镜像恢复方法,用于固件,固件包括备用固件配置启动区域、原固件配置启动区域和固件更新区域,所述方法包括:
S1,获得原固件配置启动区域的固件数据被损坏信息;
S2,将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域;
S3,对原固件配置启动区域中的全部固件数据进行解压及验证,响应于验证不通过,则调用固件更新区域;
S4,调用固件更新区域,判断调用是否成功,响应于调用成功,则以交互的方式完成固件更新,响应于调用不成功,则无法实现恢复,进行宕机操作。
上述技术方案中原固件配置启动区域、备用固件配置启动区域、固件更新区域均可以是FLASH芯片中的三个独立存储区域,均包括在FLASH芯片存储的固件之中。其中,原固件配置启动区域在整个固件之中占比最大的一个区域,其存储的固件数据为固件对主板完成配置的所有功能模块,即固件的代码,由于其所占区域较大,当固件被修改破坏时,原固件配置启动区域被修改破坏的几率最大;备用固件配置启动区域为原固件配置启动区域的备用区域,与原固件配置启动区域完全相同;固件更新区域在原固件配置启动区域、备用固件配置启动区域均被破坏的情况下运行,即固件配置无法启动时,通过更新固件来恢复固件。
上述技术方案步骤S4中调用固件更新区域不成功,则进行宕机操作,即只能更换FLASH芯片完成固件恢复。
本发明提供了一种基于UEFI的固件镜像恢复方法,根据固件遭到破坏的位置不同,破坏程度的不同,制定了不同的固件自我恢复策略,即先通过备用固件配置启动区域对主板进行配置的所有功能模块数据完成固件配置,若依然无法修复,则提供一个指定规则的固件更新方式,以交互的方式完成固件更新,固件更新依然无法修复,才进行更换FLASH芯片,由此提升了固件的健壮性,提升了固件在被攻击状态下的存活率,降低了传统的固件受到破坏后必须要更换FLASH芯片的几率,降低了因为固件损坏更换FLASH芯片而投入的时间、人力和物资成本。
下面是对上述发明技术方案的进一步优化或/和改进:
如附图2所示,在上一实施例中调用固件更新区域,判断调用是否成功,根据判断结果进行相应操作,本实施中的基于UEFI的固件镜像恢复方法,判断调用是否成功,响应于调用成功,则以交互的方式完成固件更新还可以进一步包括:
S41,安装固件更新所需设备的驱动,其中设备包括键盘、显卡、存储有完整固件的快速存储设备;
S42,通过已安装驱动的设备获取完整的固件;
S43,显示固件选择及固件更新状态的窗口,等待固件选择命令;
S44,根据固件选择命令,更新相应固件。
上述技术方案步骤S41中,安装固件更新所需设备的驱动,设备包括键盘、显卡、快速存储设备等,其中快速存储设备包括U盘等设备;设备均需通过PCI总线与桥接芯片相连,故在安装固件更新所需设备的驱动前,需先扫描与PCI总线连接的设备,再安装已连接设备的驱动。
上述技术方案步骤S43中,等待固件选择命令即为等待接收用户在固件选择窗口选定的固件。
上述技术方案步骤S44中,固件选择命令即为用户选定的固件,根据用户选定的固件在FLASH芯片中对应的位置处擦写该固件。
如附图3所示,在上一实施例中将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域,后对原固件配置启动区域中的全部固件数据进行解压及验证,本实施中的基于UEFI的固件镜像恢复方法,对原固件配置启动区域中的全部固件数据进行解压及验证还可以进行一步包括:
S31,对原固件配置启动区域中的全部固件数据进行解压;
S32,验证解压后的固件数据,判断是否验证成功;
S33,响应于否,则调用固件更新区域;
S34,响应于是,则执行原固件配置启动区域中的全部固件数据,完成固件配置。
上述技术方案步骤S31中,原固件配置启动区域中的全部固件数据为在备用固件配置启动区域中复制的全部固件数据,固件数据为固件对主板完成配置的所有功能模块,即固件的代码;验证解压后的固件数据包括通过安全策略对备用固件配置启动区域中的功能模块进行安全验证、对备用固件配置启动区域中的功能模块完整性进行验证。
上述技术方案步骤S34中,响应于是,则运行备用固件配置启动区域中的所有功能模块,在完成固件配置工作后启动操作系统。其中,运行备用固件配置启动区域中的所有功能模块即为执行备用固件配置启动区域中的固件代码,在配置的过程中向用户提供配置固件功能,例如,用户可见可操作的用户配置界面、用户交互式配置窗口SHELL命令行功能。
如附图4所示,在上一实施例中获得原固件配置启动区域的固件数据被损坏信息,本实施中的基于UEFI的固件镜像恢复方法,获得原固件配置启动区域的固件数据被损坏信息还可以进一步包括:
S11,对原固件配置启动区域中的全部固件数据进行解压;
S12,验证解压后的固件数据,判断是否验证成功;
S13,响应于否,则获得原固件配置启动区域的固件数据被损坏信息,并将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域;
S14,响应于是,则执行原固件配置启动区域中的全部固件数据,完成固件配置。
上述技术方案步骤S21至S22的过程与步骤S31至S32的过程相同,不在赘述。
如附图5所示,相应的,本发明实施例还公开了基于UEFI的固件镜像恢复系统,包括固件安全验证单元、原固件配置启动单元、备用固件配置启动单元、最小固件更新单元;
固件安全验证单元,对主板关键硬件进行验证初始化,对固件配置进行引导,其中对固件配置进行引导包括解压验证原固件配置启动区域中的所有固件数据、将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域,调用固件更新区域;
在原固件配置启动区域内形成的原固件配置启动单元,提供固件配置;
在备用固件配置启动区域内形成的备用固件配置启动单元,为原固件配置启动单元的备用单元,在原固件配置启动单元的固件数据被损坏信息后,提供复制服务;
在固件更新区域内形成的最小固件更新单元,提供以交互的方式完成固件更新服务。
本实施例运行环境包括操作系统、基于UEFI规范的固件、计算机硬件,其中计算机硬件为可以运行基于UEFI规范的固件的计算机硬件平台即可,操作系统只要是固件支持即可,在固件能够正常运行时则操作系统启动。
上述技术方案中固件安全验证单元、原固件配置启动单元、备用固件配置启动、单元最小固件更新模块均单独存储在FLASH芯片中的固件之中。
上述技术方案中,固件安全验证单元包含在FLASH芯片中存储的固件之中,但其所占的存储空间较小,当固件数据遭到修改破坏时,其被命中的几率相对来较,若固件安全验证单元遭到破坏,则只能通过更换FLASH芯片恢复固件。固件安全验证单元主要用于实现主板关键硬件的验证初始化、固件的安全验证和固件配置引导;例如:解压验证原固件配置启动区域中的所有固件数据;将备用固件配置启动区域中的全部固件数据复制至原固件配置启动区域,对其进行解压;调用固件更新区域,以交互的方式完成固件更新。
上述技术方案中,原固件配置启动单元包括固件对主板完成配置的所有功能模块,提供固件配置。备用固件配置启动区域的结构与原固件配置启动区域的结构相同。
下面是对上述发明技术方案的进一步优化或/和改进:
如附图5所示,在上一实施例中基于UEFI的固件镜像恢复系统包括固件安全验证单元、原固件配置启动单元、备用固件配置启动单元、最小固件更新单元,本实施中的基于UEFI的固件镜像恢复系统,最小固件更新单元还可以进一步包括:
PCI设备扫描模块,扫描与桥片通过PCI总线相连的设备;
设备驱动模块,为扫描到的设备提供驱动安装服务;
文件系统加载读取模块,通过已安装驱动的设备获取完整固件,显示固件选择及固件更新状态的窗口;
FLASH芯片擦写模块,根据固件选择命令,向FLASH芯片中指定位置擦写固件,完成相应固件配置。
上述技术方案中,PCI设备扫描模块扫描与桥接芯片通过PCI总线相连的设备,例如,扫描有没有通过PCI总线与桥接芯片相连的显卡、键盘、快速存储设备。
上述技术方案中,设备驱动模块为最小固件更新单元提供设备驱动注册安装服务,其设备为调用PCI设备扫描模块扫描获得的与PCI总线连接的设备。
上述技术方案中,文件系统加载读取模块用于加载文件系统,该文件系统用于获取U盘等快速存储设备中存储的的完整可用的固件,同时向用户提供一个精简的选择固件和提示固件更新状态信息的可视窗口。
上述技术方案中,FLASH芯片擦写模块接收文件系统传输的用户选定的固件,并控制向FLASH芯片中指定位置处擦写该固件,FLASH芯片擦写模块不可以擦写受保护的固件安全验证模块所在的存储区,以便于因意外导致本次更新失败后,再次重启时依然可以选择更新。
如附图5所示,在上一实施例中基于UEFI的固件镜像恢复系统包括固件安全验证单元、原固件配置启动单元、备用固件配置启动单元、最小固件更新单元,本实施中的基于UEFI的固件镜像恢复系统,固件配置启动模块包括:
基础驱动模块,存储硬件的驱动模块;
基础功能模块,存储基础功能对应的功能模块,其中基础功能为所有固件中都要具备的基本功能;
核心功能模块,存储特定功能对应的功能模块;
定制化功能模块,存储非通用功能对应的功能模块。
上述技术方案中,基础驱动模块包括所有基础硬件驱动模块,例如主板上已有的硬件设备、产品支持的硬件设备对应的驱动模块;其中主板上已有的硬件设备包括键盘驱动模块、显卡驱动模块、声卡驱动模块等。
上述技术方案中,基础功能模块包括所有固件中都要具备的基础功能模块,基础功能模块包括配置界面功能模块、SHELL命令行模块、文件系统模块、操作系统加载启动模块等。
上述技术方案中,核心功能模块包括所有特定功能构成的模块,所有特定功能构成的模块包括固件层面的用户登录验证模块、硬盘验证模块、设备端口管控模块等。
上述技术方案中,定制化功能模块包括由一些用户定制的非通用的功能模块,非通用的功能模块包括用户指定的某种特殊的开机验证登录模块等。
以上技术特征构成了本发明的最佳实施例,其具有较强的适应性和最佳实施效果,可根据实际需要增减非必要的技术特征,来满足不同情况的需求。