CN116340031A - 检测偏差的计算机系统及方法和非暂态计算机可读介质 - Google Patents

检测偏差的计算机系统及方法和非暂态计算机可读介质 Download PDF

Info

Publication number
CN116340031A
CN116340031A CN202211016865.8A CN202211016865A CN116340031A CN 116340031 A CN116340031 A CN 116340031A CN 202211016865 A CN202211016865 A CN 202211016865A CN 116340031 A CN116340031 A CN 116340031A
Authority
CN
China
Prior art keywords
post
routine
sequence
bios
bias
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.)
Pending
Application number
CN202211016865.8A
Other languages
English (en)
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.)
Quanta Computer Inc
Original Assignee
Quanta Computer Inc
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 Quanta Computer Inc filed Critical Quanta Computer Inc
Publication of CN116340031A publication Critical patent/CN116340031A/zh
Pending legal-status Critical Current

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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Abstract

所公开的是一种检测偏差的计算机系统及方法和非暂态计算机可读介质。该系统及方法,用以鉴别、分析及修复计算机系统的开机自我测试(POST)例行程序中的偏差。计算机系统包含基本输入输出系统(BIOS),BIOS包含在启动与移交给操作系统之间执行的POST例行程序。存储器存储黄金映像文件POST编码序列。控制器及BIOS从POST例行程序的执行接收一序列POST编码。该序列POST编码与黄金映像文件POST编码序列作比对。基于该序列POST编码中不符合黄金映像文件POST编码序列的至少一POST编码,鉴别出POST例行程序中的偏差。鉴别出的偏差可在讯息中分析进一步信息。讯息可用以从偏差中恢复。

Description

检测偏差的计算机系统及方法和非暂态计算机可读介质
技术领域
本公开大致涉及计算装置的启动例行程序(routine)。更具体而言,本公开的态样涉及一种鉴别、诊断及修复在启动例行程序的开机自我测试(power-on self-test;POST)例行程序中所遭遇偏差的系统。
背景技术
服务器被大量地运用在高需求应用中,像是基于网络的系统或数据中心。云端运算运用的出现,增加了对于数据中心的需求。数据中心拥有许多服务器,存储数据并执行远端连线的计算机装置使用者所存取的应用。典型的数据中心具有物理的机架(rack)结构,伴随着电力与通信的连接。每一机架可承受多个运算服务器及存储服务器。
数据中心中的服务器俾利许多商业的服务,包含执行应用程序、提供虚拟化服务,及促进网络商务。随着企业加大对于数据中心服务器所提供服务的依赖,正常运行时间(uptime)变得更重要且更有价值。当服务器无法正常运作,生产力会减慢或完全停止,造成商业获利的损失。虽然数据中心管理者可对服务器中的错误所造成的中断采取预防措施,服务器停机时间的问题仍难以完全去除。造成服务器停机时间的主要原因,可包含服务器硬件错误、进行硬件升级、进行软件升级,以及服务器维护时的意外状况。考虑到大量停机时间可能造成的高额损失,数据中心管理通常会为造成停机时间的各种不同可能因素备有处理计划,然而,在恢复服务器时,服务器需要被重新启动。
个别的服务器在启动时,通常以开机自我测试(power-on self-test)例行程序开始运作。在计算机系统(如服务器上的处理器内核)的POST例行程序的期间,处理器内核执行基本输入输出系统(basic input output system;BIOS)以初始化服务器的硬件。在POST例行程序成功完成之后,控制权便由服务器的操作系统所接管。
服务器的启动是复杂的过程。统一可扩展固件接口(Unified ExtensibleFirmware Interface;UEFI)BIOS固件必须在POST例行程序中进行多种步骤,以初始化及启用所有硬件组件,直到服务器平台的操作系统已就绪。这些步骤包含依序执行个别的程序,以初始化硬件组件、启用软件功能、进行服务器安全性活动,及执行平台错误恢复的例行程序。大体而言,在POST例行程序中的每一软件程序通常保有重要的检查点,以叙述软件程序的目的、行为、结果及状态。检查点是以可见的讯息输出,可显示在终端装置的屏幕、特定的LCD面板、LED指示灯,和/或控制台重新定向(console redirection)。管理者也可藉由检查在带内(in-band)(服务器的非易失性存储器)及带外(由基板管理控制器(baseboardmanagement controller;BMC)所存储的系统错误日志)位置的系统错误日志文件,对检查点进行审核。
当服务器在可靠的环境(例如,稳定的供电、凉爽的温度,及合适的湿度)中运行,每次服务器启动时的序列检查点的记录会是相同的,除非使用者有新的固件设定,或者调整过硬件配置。序列检查点中绝大部分的记录变化是正常的运作及预期的行为,像是参考环境参数及逻辑运作的软件程序,因此进行不同的例行程序。然而,在某些情况下,难以预测中断是何时、如何及为何会发生。于是,这种事件终究延长了服务器停机时间,冲击了数据中心所提供的服务。
因此,需要有一种系统,包含基于序列POST编码的审核以鉴别特定偏差的POST例行程序。也需要有一种系统,得以诊断POST例行程序中的偏差。也需要一种系统,对于POST例行程序中的偏差提出恢复行动建议。
发明内容
所公开的一范例,是一种检测开机自我测试(POST)例行程序中的偏差的计算机系统。计算机系统包含基本输入输出系统(BIOS),BIOS包含开机自我测试(POST)例行程序,POST例行程序具有多个阶段在启动至移交给操作系统之间执行。控制器与BIOS通信。存储器耦接至控制器及BIOS。存储器存储黄金映像文件POST编码序列。控制器及BIOS可从POST例行程序接收序列POST编码。序列POST编码是由多个阶段的执行所产生。将该序列POST编码与黄金映像文件POST编码序列作比对。基于该序列POST编码中不符合黄金映像文件POST编码序列的至少一POST编码,鉴别出POST例行程序中的偏差。
范例系统的进一步实作,是控制器为基板管理控制器的实施例。在另一种实作中,计算机系统是服务器。在另一种实作中,计算机系统包含网络接口,且序列POST编码被传输至远端管理服务器。在另一种实作中,偏差是安全性函数阶段的缺陷、安全性函数阶段的损伤,或POST例行程序的不信任状况的检测。在另一种实作中,偏差是POST例行程序中的探索步骤未发现其中一硬件装置、失效的硬件接口,或POST例行程序初始化硬件装置后的硬件速度下降。在另一种实作中,偏差是失效的软件服务、不可用的软件服务,或未被支持的软件服务。在另一种实作中,存储器是存储POST编码的快闪存储器。在另一种实作中,黄金映像文件POST编码序列是通过服务器管理软件经由网络接口传输已更新黄金映像文件POST映像文件至控制器所升级。在另一种实作中,控制器及BIOS可更操作:基于鉴别出的偏差,进行偏差分析;存储包含偏差分析结果的讯息;以及在偏差分析完成后,将计算机系统关机再开机。在另一种实作中,偏差分析包含修复偏差的恢复方法,BIOS及控制器更可在关机再开机后自动地进行恢复方法。
所公开的另一范例,是一种鉴别启动计算机系统时所执行POST例行程序中的偏差的方法。计算机系统包含基本输入输出系统(BIOS)。BIOS包含开机自我测试(POST)例行程序,POST例行程序具有多个阶段在启动至移交给操作系统之间执行。计算机系统包含与BIOS通信的控制器,以及耦接至控制器及BIOS的存储器。黄金映像文件POST编码序列存储在存储器中。BIOS的POST例行程序被执行。从POST例行程序接收序列POST编码。序列POST编码是由多个阶段的执行所产生。该序列POST编码与黄金映像文件POST编码序列作比对。基于该序列POST编码中不符合黄金映像文件文件POST编码序列的至少一POST编码,鉴别出POST例行程序中的偏差。
在范例方法的另一种实作中,控制器为基板管理控制器,运算装置为服务器。在另一种实作中,上述方法还包含将上述比对经由网络接口传输至远端管理服务器。在另一种实作中,偏差是安全性函数阶段的缺陷、安全性函数阶段的损伤,或POST例行程序的不信任状况的检测。在另一种实作中,偏差是POST例行程序中的探索步骤未发现其中一硬件装置、失效的硬件接口,或POST例行程序初始化硬件装置后的硬件速度下降。在另一种实作中,偏差是失效的软件服务、不可用的软件服务,或未被支持的软件服务。在另一种实作中,上述方法还包含基于鉴别出的偏差,进行偏差分析;存储包含偏差分析结果的讯息;以及在偏差分析完成后,将计算机系统关机再开机。在另一种实作中,上述方法还包含经由讯息中的数据修复偏差。
所公开的另一范例,是一种非暂态计算机可读介质,存储有软件指令,当被计算机系统中的处理器执行时,致使处理器执行计算机系统的开机自我测试(POST)例行程序的多个阶段。指令更致使处理器在POST例行程序执行的期间,输出序列POST编码。指令更致使处理器将序列POST编码与黄金映像文件POST编码序列作比对。指令更致使处理器基于序列POST编码中不符合黄金映像文件POST编码序列的至少一POST编码,鉴别出POST例行程序中的偏差。
所公开的另一范例,是一种分析开机自我测试(POST)例行程序中的偏差的计算机系统。计算机系统包含基本输入输出系统(BIOS),BIOS具有开机自我测试(POST)例行程序,POST例行程序具有多个阶段在启动至移交给操作系统之间执行。计算机系统包含与BIOS通信的控制器。控制器及BIOS可操作以POST编码为形式,接收POST例行程序中所鉴别出的偏差。控制器及BIOS基于所鉴别偏差,进行偏差分析。控制器及BIOS在偏差分析完成后,将讯息存储在目的端装置,讯息包含偏差分析的结果。
范例系统的进一步实作,是控制器为基板管理控制器的实施例。在另一种实作中,计算机系统是服务器。在另一种实作中,偏差分析是藉由设定BIOS中的UEFI变量所启用。在另一种实作中,讯息包含将POST从偏差恢复的自动恢复。在另一种实作中是人为恢复,控制器警示管理者,并将计算机系统关机。在另一种实作中,讯息包含人类可读纲目及技术纲目。在另一种实作中,人类可读纲目包含偏差的定义、偏差的原因、恢复的方法,以及风险评估。在另一种实作中,技术纲目包含具有各种长度及内容的元数据,以叙述特定服务例行程序的偏差。在另一种实作中,讯息所指明的恢复例行程序是由控制器或BIOS固件所执行。在另一种实作中,恢复例行程序包含优化硬件组件初始化、清除可疑的数据结构,或重新载入自订的黄金设定。在另一种实作中,偏差分析例行程序是特别针对所鉴别出的硬件或软件组件,基于硬件或软件开发者所提供的文件所编写。在另一种实作中,目的端装置是系统存储器、存储装置,或控制器可存取的快闪存储器。
以上发明内容并非意图代表本公开的每个实施例或每个观点。反之,前述的发明内容仅提供在此列举的某些新颖的观念及特征的范例。以上特征及优点,以及本公开的其他特征及优点,当关联于搭配的附图及附加的请求项时,从以下用以实施本发明的代表性实施例及模式的详细叙述,可立即了解。
附图说明
本公开将可从以下示范的实施例的叙述搭配附带的附图更佳地理解。
图1是根据本公开的某些态样的一种计算机系统的方块图,计算机系统具有执行范例POST例行程序的组件,范例POST例行程序包含用以鉴别、诊断及修复POST例行程序中的偏差的模块。
图2是根据本公开的某些态样的程序图,展示范例POST例行程序中的不同步骤及对应的POST编码。
图3是根据本公开的某些态样的程序图,展示来自POST例行程序的范例模块的诊断。
图4A-4C是根据本公开的某些态样以鉴别、诊断及修复POST例行程序的范例模块的函数的流程图。
图5是根据本公开的某些态样的POST例行程序中的安全启动服务的编码序列,POST例行程序包含范例模块的诊断函数的传递状态服务例行程序。
图6是根据本公开的某些态样以收集图5中的函数呼叫例行程序的函数服务例行程序的状态的流程图。
图7是根据本公开的某些态样以将图5中的函数呼叫例行程序的函数呼叫服务例行程序的讯息公开的流程图。
图8是根据本公开的某些态样的可能恢复机制的表格,可能恢复机制是基于可由范例模块的恢复函数所输出的错误诊断。
本公开可接受各式各样的修改及替代的形式。某些代表性的实施例,已被附图中的范例所显示,并将在此被详细地叙述。然而,应被理解的是,本发明并非意图限定于所公开的特定形式。反之,本公开涵盖所有的修改、均等物,以及落在如附加的权利要求所定义的本发明的范围与精神之内的替代方案。
【符号说明】
100:远端系统
102:服务站
104:网络
106:服务器
108:技术员
110:基板管理控器(BMC)
112:网络接口卡或网络接口控制器
120:基本输入输出系统(BIOS)
122:快闪存储器
124:黄金文件
126:系统错误日志(SEL)
130:中央处理单元
132:硬件组件
134:软件程序
140:操作系统(OS)
200:程序图
210:安全性阶段
212:可扩展固件接口初始化环境前置(PEI)阶段
214:驱动程序执行环境(DXE)阶段
216:开机装置选择(BDS)阶段
218:短暂系统载入(TSL)阶段
220:预检验者
222:Ucode修补
224:安全性例行程序
230:超路径互连(UPI)/接口至接口总体存储器接口(XGMI)拓朴探索程序
232:开始存储器参考编码程序
234:初始平台端口程序
240:驱动程序
242:周边组件互连(PCI)扫描及资源分配程序
244:建立启动及运行时间服务程序
246:发布先进配置与电力接口(ACPI)及系统管理BIOS(SMBIOS)表格程序
250:启动调度器程序
252:启用安全启动程序
254:载入启动载入器程序
260:短暂操作系统启动载入器程序
262:操作系统移交程序
270:POST编码
272:第一偏差
274:第二偏差
300:程序图
310:一系列讯息
312:第一讯息
314:第二讯息
402-434:步骤
436-466:步骤
470-498:步骤
500:码段
510:收集状态例行程序
512:公开讯息例行程序
520:讯息
522:人类可读纲目
524:技术纲目
530:传递状态例行程序
610-614:步骤
620-644:步骤
710-714:步骤
720-728:步骤
800:表格
810,820:栏
具体实施方式
本发明可以许多不同的形式所实施。代表性的实施例被附图所显示,并将在此被详细地叙述。本公开为本发明的原则的范例或图解,且并非意图将本公开的广泛的观点限制于绘式的实施例。在此基础上,例如在摘要、发明内容及实施方式等段落中被公开,但并未明确地在请求项中列举的元件及限制,不应被单独地、集体地、暗示地、推论地或其他方式地并入至请求项中。为了本详细叙述的目的,除非被具体地否认,否则单数形包含复数形,反之亦然;且“包含”一词意指“无限制地包含”。此外,表近似的词汇,例如“约”、“几乎”、“大体上”、“大概”及类似的词汇,能在此被用来意指“在”、“近”、“近于”、“3-5%的范围内”或“可接受的制造公差内”,或者其任何的逻辑组合。
在此公开的范例包含一种固件模块,可在UEFI BIOS固件及BMC固件中执行,以在计算机装置中帮助鉴别及应对电POST例行程序中的偏差。范例模块在服务器每次启动时,藉由对输出POST编码与黄金记录POST例行程序的POST编码进行比对,以鉴别出POST例行程序所输出的序列检查点的异样。例行程序可判断出服务器上可能降低效能、延长停机时间及进行非安全函数的潜在异常及有害的启动序列。检查来自POST例行程序的序列检查点的异样,需要追溯POST例行程序的执行路径,并提供必要的数据结构给操作系统(OS)。例行程序通过序列POST编码输出安全函数的状态,及主机板硬件初始化的结果。例行程序包含新颖的模块,以判断POST例行程序中的序列检查点的偏差、判断每一分歧的原因、估计分岐的风险,然后建议合适的人为或自动恢复机制。
图1展示远端系统100,远端系统100得以管理远端装置,像是数据中心中的服务器。远端系统100包含数据中心操作者可存取的远端服务器管理及服务站102,以及网络104,以及远端计算机系统,像是服务器106。远端服务器管理及服务站102允许数据中心操作者存取管理接口,管理接口允许操作者进行服务器106的远端诊断。以下将说明,服务站102亦从服务器106接收作业数据(operational data)。其他人员,像是技术员108,可基于服务站102所提供的时间表进行人为介入,像是替换服务器106上出错的硬件组件。
服务器106包含基板管理控制器(baseboard management controller;BMC)110。BMC 110包含耦接至网络104的网络接口卡或网络接口控制器112。BMC 110耦接至启动固件,像是统一可扩展固件接口(Unified Extensible Firmware Interface;UEFI)基本输入输出系统(basic input output;BIOS)固件120。BMC 110使用快闪存储器122以存储关于服务器106的相关作业数据,以及BMC 110所执行的其他固件。在本范例中,快闪存储器122存储黄金文件124及系统错误日志(system error log;SEL)126。在本范例中,黄金文件124可由BMC从服务站102下载而得。以下将说明,黄金文件124包含源自执行POST例行程序的预期POST编码序列。服务器106包含硬件组件130及132,硬件组件130及132可进行像是存储、运算及切换等功能。举例来说,硬件组件130可以是中央处理单元(CPU)。其他硬件组件132可以是其他处理器、存储器装置(例如双列存储器模块(dual inline memory modules;DIMMs)、序列先进技术附接(serial advanced technology attachment;SATA)装置,及类似的装置)、快速周边组件互连(peripheral component interconnect express;PCIe)装置…等。应理解的是,典型的服务器上可以有许多硬件组件。
UEFI BIOS固件120通过POST例行程序,优化服务器106的硬件组件(像是硬件组件130及132)的初始化。BMC 110也可进行服务器106的硬件组件(像是硬件组件130及132)的硬件诊断。BMC 110也可监控服务器106的硬件组件(像是硬件组件130及132)的健康状态。POST例行程序也可与POST软件程序134进行互动,以启用除错讯息,并从这种程序收集所有的状态及数据结构信息。一旦UEFI BIOS固件120的POST例行程序已完成,操作系统(OS)140即开始服务器106的运作。
在本范例中,UEFI BIOS固件120包含POST例行程序中的范例模块,以回报POST例行程序所输出的序列检查点中的异样。POST例行程序中的范例模块鉴别POST例行程序的序列检查点相较于所存储的黄金记录的检查点的偏差。鉴别、分析偏差,以及从偏差中恢复,使得服务器106更有弹性及效率。于是,范例模块提供对于异样的分析,以人类可读的元数据格式(例如JavaScript物件表示法(JavaScript object notation;JSON)的Redfish表现层状态转换(representational state transfer;REST)应用程序接口(applicationprogramming interface;API)格式)转发给BMC 110,然后可由服务站102执行的服务器管理软件所收集。管理者/IT工程师可提供应对偏差的策略定义。举例来说,策略可指示服务器106立即进行自动恢复程序,或者等待技术员108排定时间的人为介入。
大体而言,在启动服务器106与移交给OS 140之间记录UEFI BIOS固件120输出的POST编码,是非常有用的软件轨迹追溯方法。软件开发者为POST编码使用独特的美国标准信息交换码(American Standard Code for Information Interchange;ASCII)编码,是出于各种执行的目的。ASCII编码的POST编码是嵌入于重要的执行点,像是固件(如UEFI BIOS固件120)的开始、结束与分歧。UEFI BIOS固件120将产出的POS编码重新导向可存取的目的端。POST编码从最初输出编码至最后输出编码,依序被记录为服务器106的UEFI BIOS固件启动序列的历史。
图2是展示POST例行程序从初始启动到将控制权移交给操作系统140的不同序列阶段的程序图200。于此,第一栏210代表安全性阶段。第二栏212代表前期可扩展固件接口初始化环境(pre-extensible framework interface initialization environment;pre-EFI;PEI)阶段。第三栏214代表驱动程序执行环境(driver execution environment;DXE)阶段。第四栏216代表开机装置选择(boot device selection;BDS)阶段。第五栏218代表短暂系统载入(transient system load;TSL)阶段。
安全性阶段210是由预检验者(pre-verifier)220所发起。预检验者220套用Ucode修补(Ucode patch)222,并开始硅基(silicon-based)安全性例行程序224。PEI阶段212包含超路径互连(ultra path interconnect;UPI)/接口至接口总体存储器接口(socket-to-socket global memory interface;XGMI)拓朴探索(topology discovery)程序230、开始存储器参考编码(start memory reference code)程序232,及初始平台端口(initialplatform porting)程序234。
一组驱动程序240,像是装置驱动程序、总线驱动程序或服务驱动程序,实作DXE阶段214。每一驱动程序持续执行,直到DXE阶段214结束。此阶段包含周边组件互连(peripheral component interconnect;PCI)扫描及资源分配程序242、建立启动及运行时间服务(runtime service)程序244,以及发布先进配置与电力接口(advancedconfiguration and power interface;ACPI)及系统管理BIOS(system management BIOS;SMBIOS)表格程序246。
开机装置选择阶段216包含启动调度器(dispatcher)程序250、启用安全启动程序252,以及载入启动载入器(loader)程序254。短暂系统载入(TSL)阶段218包含短暂操作系统启动载入器程序260,及操作系统移交程序262。在短暂系统载入阶段218结束时,控制权移交给OS启动载入器,像是Linux GRUB,且操作系统140启动并开始。
当阶段210、212、214、216及218的程序的每一个被发起且完成,POST例行程序输出一组序列POST编码270。在本范例中,UEFI BIOS固件映像文件120具有完整的POST编码表格,以叙述每一编码的功能定义。于是,每一编码的编码定义可协助管理者或开发者了解POST例行程序的每一步骤的执行。安全性阶段210的一正常序列的POST编码为0x00-03,PEI阶段212的一正常序列的POST编码为0x10-13,DXE阶段214的一正常序列的POST编码为0x20-23,开机装置选择阶段216的一正常序列的POST编码为0xA0-A3,TSL阶段218的一正常序列的POST编码为0xB0-B3。
若其中一程序遭遇偏差,替代的POST编码被输出,且在POST编码序列中。在本范例中,第一偏差272将初始平台端口程序234的POST编码0x12替换为POST编码0xFI,指示平台移植中的错误。于是,POST编码0x12是部分的服务例行程序“初始平台端口”,进行特定的硬件初始化,像是设置输出端口设定,以及写入与读写测试是否成功。若读写测试不正确,将发送出去的是POST编码0xF1,而非正常的POST编码0x12。第二偏差274将启用安全启动程序252的正常POST编码A1替换为POST编码FF,指示该程序的错误。POST编码0xA1指示信任平台模块(trusted platform module;TPM)的硬件初始化以进行启用安全函数,且控制器的编写及读取状态是成功的。当读取状态不正确,将发送出POST编码0xFF,而非正常的POST编码0xA1。在本范例中,这些偏差皆会影响将控制权移交给操作系统140的能力,因为操作系统140可能出于特定端口或控制器故障的因素而无法运作。
范例POST例行程序中的范例模块具有三个主要函数,以协助确保有效率的POST例行程序,即便是在POST例行程序中有偏差的状况下。这三个函数包含偏差鉴别、偏差分析,以及偏差恢复。从序列POST编码鉴别出有害偏差后,偏差分析函数被自动地调用。有害的偏差可包含关于服务器的安全性函数被停用或减少、硬件通信界面故障或降级、软件协议或服务无效或不支持,诸如此类的状况。
于是,偏差鉴别函数将UEFI BIOS固件120在POST例行程序的期间所输出具有POST序列编码的记录,与黄金文件映像文件124的POST序列编码作比对。偏差分析函数使可理解的讯息从序列检查点中的任何异样所输出。所输出的讯息包含涉及偏差的人类可读纲目(schema)及技术纲目。偏差分析函数亦对可疑的硬件组件进行诊断,并从服务器106收集额外的信息。偏差恢复函数进行不同的恢复步骤以减轻偏差,像是优化硬件组件初始化、清除非易失性存储器中的可疑数据结构,以及重新载入BIOS固件自订的黄金设定。
图3是指示POST例行程序中的范例模块所提供的信息的程序图300。该模块将输出POST编码序列270,与图1中的黄金文件映像文件124的POST序列作比对。如上所述,偏差鉴别函数判断出由初始平台端口234及启用安全启动程序252所输出,与黄金映像文件的正常的POST序列不同的编码。
范例模块进行异样分析,输出一系列讯息310。在本范例中,偏差分析函数输出的讯息包含人类可读纲目及技术纲目。人类可读纲目包含POST编码偏差的定义、偏差的原因、偏差是否可恢复、相应的恢复方法,以及风险评估。举例来说,基于偏差分析,风险评估可以是1分到5分之间的分数。在本范例中,风险评估分数是从一表格所决定。在本范例中,当硬件功能故障,或软件功能失效而无法立即重新启用时,给予1分的风险分数。当安全函数未经允许而失效,但仍可重新启用时,给予2分的风险分数。当硬件功能降级,但可采用重试机制(像是降速或链结宽度减少)时,给予3分的风险分数。当软件功能非经允许而被停用,但可重新启用功能时,给予4分的风险分数。当软件数据结构或布局不正确,但可采用重试机制(像是数据缓冲器溢位)时,给予5分的风险分数。
如图3所示,范例模块输出的第一讯息312包含人类可读形式的信息,涉及初始平台端口234中的偏差。第二讯息314包含人类可读形式的信息,涉及启用安全启动程序252中的偏差。
在本范例中,偏差鉴别函数将对应于UEFI BIOS固件120的黄金映像文件的POST编码,与实际的POST编码作比对。为了鉴别出UEFI BIOS固件120的POST编码的偏差,代表服务器106的可用配置的序列POST编码的黄金文件(像是图1中的黄金文件124)被存储在非易失性存储器,像是BMC110的快闪存储器122。黄金文件124的内容仅呈献于初始化序列的极端重要部分的期间所执行重要的序列POST编码。举例来说,0xA0、0xA1、0xA2是开机装置选择阶段216的程序所输出的必要的序列POST编码。
管理者启用的“机架服务器正确POST编码维护”函数,将启动期间UEFI BIOS固件120所输出的每一POST编码重新导向存储在可存取的目的端(像是快闪存储器122或其他BMC存储器)。于是,远端的服务器(像是管理站102)可存取POST编码输出。在本范例中,BMC110执行POST例行程序的模块,以比对服务器106的POST例行程序是否输出与POST编码的黄金文件124的内容相符的POST编码的序列。若POST编码的比对显示出与预期不同的POST编码,而藉此检测到有害的偏差,BMC 110会启用UEFI BIOS固件120及BMC 110中的“偏差分析”及“偏差恢复”介入服务例行程序。
图4A-4C是展示范例模块所进行的例行程序的三个阶段的流程图。这三个阶段包含偏差鉴别、偏差分析,及偏差恢复函数。图4A展示整体程序中,由图1中的UEFI BIOS 120及BMC 110所进行的偏差鉴别函数的程序。在本范例中,UEFI BIOS 120在步骤402将POST例行程序开始记录至BMC 110的系统错误日志(SEL)126。于是,记录下初始POST编码(0xE0)。然后,UEFI BIOS 120在步骤404初始化处理器、存储器,以及主机板上的其他组件。然后,UEFI BIOS 120在步骤406初始化输入/输出硬件。然后,UEFI BIOS 120在步骤408安装启动服务。然后,UEFI BIOS 120在步骤410安装运行时间服务。POST步骤402、404、406、408、410的每一个,触发将POST编码270发送给BMC 110,以指示各种步骤的开始与完成。
然后,UEFI BIOS 120在步骤412启用安全启动。在本范例中,发生一偏差,该偏差反映于POST编码中,像是图2中的POST编码序列270中的POST编码274。在安全启动之后,UEFI BIOS 120在步骤414通过POST编码(0xE1),将POST结束记录至BMC 110的SEL。然后,UEFI BIOS 120在步骤416判断是否应从BMC 110启用POST编码及偏差分析的结果。若未发现偏差,在步骤418,POST例行程序结束,移交给OS 140。若有发现偏差,像是安全启动程序所产生的POST编码274,则在步骤420发起BIOS偏差分析。
举例来说,某些硬件偏差可能发生,导致特定POST编码被输出于POST编码序列中。这种硬件偏差的发生,可能归因于从POST例行程序中的探索步骤并未发现硬件装置、初始化后硬件接口失效,或者初始化后硬件装置的硬件速度下降。在这种情况中,偏差将导致错误或警示编码被输出于POST编码序列中。POST例行程序中的偏差的另一种范例,可以是基于安全性类型的偏差,像是可能因为不存在信任根(Root of Trust)而导致安全性函数的失效。在这种情况中,偏差将导致错误或警示编码被输出于POST编码序列中。另一安全性偏差可能是检测到不信任的状况,像是载入未经签署的UEFI驱动程序。这种偏差可由不完整的POST序列所指示,因为未经签署的驱动程序不会有POST编码的输出。另一种范例偏差是基于软件,像是源于安装步骤的未被支持的软件协议,或是源于初始化步骤的不可用的数据结构。在这种情况中,偏差导致错误或警示编码被输出于POST编码序列中。
在图4中的偏差鉴别函数进行的期间,BMC 110在步骤422判断允许进行服务例行程序的POST编码维护是否被管理者所启用。若POST编码维护并未启用,BMC 110不作进一步的移动。若POST编码维护已启用,BMC 110在步骤424接收UEFI BIOS 120的POST例行程序所输出的POST编码270,并将POST编码270存储至存储器(像是系统存储器或快闪存储器122)中的POST编码日志文件。接收每一POST编码后,BMC 110在步骤426判断接收到的POST编码是否指示POST例行程序的结束。若接收到的POST编码并非指示POST例行程序的结束,BMC110回到步骤424,以继续接收及存储POST编码。若接收到的POST编码指示POST例行程序的结束,BMC 110在步骤428从快闪存储器122载入POST编码黄金文件124。然后,BMC 110在步骤430将POST编码日志文件与来自POST编码黄金文件的POST编码序列作比对。在步骤432,BMC 110判断是否发现有害的偏差。若未发现有害的偏差,BMC 110结束例行程序。若有找出有害的偏差,BMC 110在步骤434开始BMC偏差分析及BMC偏差恢复例行程序。BMC 110也将通知UEFI BIOS 120关于发现有害的偏差。
由于POST例行程序中的初始化程序的软件算法可能以新的POST编码新增、删除或修改步骤,黄金映像文件POST编码序列的定义可通过运行在服务站102上的管理软件所升级。当服务器106有新的UEFI BIOS固件释出,这种管理软件将新的黄金映像文件发送至BMC110。黄金POST编码序列的升级,避免源自旧的黄金POST编码文件的偏差的非正确的指示。服务器管理软件也可使服务器BMC的数据库中旧版的黄金POST编码文件失效。在本范例中,数据库具有多对BIOS映像文件及黄金文件,并可由服务站102所管理。当管理者决定升级服务器106的固件版本,管理者将升级对应的黄金文件。此程序可藉由通过升级协议(像是Redfish固件升级协议)发送包含固件映像文件、黄金文件及脚本文件的新固件包所达成。
替代地,偏差可以是已知的、已接受的妥协方案。举例来说,POST编码偏差可能是源于管理者已接受的问题,像是使用低成本的双列存储器模块,具有频率降低的问题,因而造成POST编码相较于黄金文件POST编码的偏差。管理者可能选择维持该模块不变,因而导致持续的POST编码偏差。
一旦检测到有害的偏差,BMC 110开始执行UEFI BIOS固件120及BMC110中的范例模块的“偏差分析”的部分。在本范例中,BMC 110请求UEFI BIOS固件120启用UEFI变量(“Deviation_Analysis”),允许POST例行程序的可疑的软件程序将涉及偏差的讯息,发送至可存取的存储器目的端。由于这种讯息是由UEFI BIOS固件120的编译器(compiler)及链接器(linker)所内建,并且仅在特定的UEFI偏差分析变量被启用时才有作用,输出的讯息并不会基于未来启动中的序列POST编码中的偏差的状态而改变。UEFI BIOS固件120将询问BMC 110是否要在移交给操作系统140之前进行“偏差分析”例行程序。一旦UEFI BIOS固件120及BMC 110之间已从偏差分析确认特定情况,另一UEFI变量会被启用。于是,BMC 110不移交给操作系统140,而是将服务器关机再开机,以进行偏差分析。
图4B展示范例模块的偏差分析函数。在步骤434,BMC 110基于对偏差的鉴别,开始偏差分析。在步骤436,BMC 110请求UEFI BIOS 120设定UEFI变量“偏差分析”。然后,BMC110在步骤438检查UEFI BIOS 120是否已授予权限。若权限尚未授予,BMC 110继续在步骤438检查UEFI BIOS 120是否授予权限。若权限已授予,BMC在步骤440将服务器关机再开机。
响应于来自BMC的请求,UEFI BIOS 120在步骤442设定UEFI变量“偏差分析”,以发起偏差分析。然后,UEFI BIOS 120在步骤444授权BMC 110开始偏差分析函数。然后,UEFIBIOS 120在步骤446等待BMC将服务器关机再开机。一旦服务器106开始由BMC 110在步骤440所发起的关机再开机,POST例行程序开始,且UEFI BIOS 120在步骤448将偏差分析的发生记录到快闪存储器122中的SEL 126。然后,UEFI BIOS 120在步骤450公开从BMC接收到的偏差分析中的额外讯息。由于整个UEFI BIOS初始化序列重新运行,UEFI BIOS 120在关机再开机之后公开额外讯息。由于UEFI变量“偏差分析”被启用,UEFI BIOS POST例行程序将收集到更有用的硬件组件健康状态、软件数据结构、软件重试计数,以及恢复机制数据。POST例行程序将上述数据转译为带有人类可读数据及机器数据的额外讯息,传送至物理的目的端(physical destination),像是BMC 110可存取的快闪存储器122。
然后,UEFI BIOS 120在步骤452清除UEFI变量“偏差分析”。然后,在步骤454,UEFIBIOS 120在自动恢复的案例中等待BMC 110开始偏差恢复,在人为介入的案例中等待服务器106关机。
在步骤456,BMC 110监控服务器106,及判断发起关机再开机后POST例行程序是否已开始。若POST例行程序尚未开始,BMC 110继续在步骤456监控POST例行程序是否已开始。若POST例行程序已开始,BMC 110在步骤458从服务器收集关于偏差分析的数据。对于鉴别出潜在偏差的硬件及软件而言,收集偏差分析所需数据的例行程序是明确的。偏差分析例行程序可由UEFI BIOS固件的开发者基于服务器106的组件的硬件或软件供应商所提供的说明书及建议所编写。
在步骤460,BMC 110检查偏差分析,以判断POST序列是否可恢复以替任何或全部的所鉴别偏差修复POST例行程序。在本范例中,管理者可选择分开地为每一偏差进行恢复,或者同时恢复所有偏差。若POST序列无法从偏差恢复,BMC 110在步骤462通过网络104将警报或警示发送给服务站102上的管理软件。然后,由于需要人为介入,BMC 110在步骤464将服务器关机。如上所述,服务站102的软件可安排对服务器106进行技术检查及修复的时间,和/或提供管理者决定其他修复移动的能力。若基于偏差分析,偏差可被处理,且因此POST序列可自动恢复,则BMC 110在步骤466开始偏差恢复程序。
服务子例行程序(在本范例中称为“传递状态(DeliverStatus)”)进行内建的分析,并可包含在母层的UEFI BIOS固件120的任何极重要的初始化服务例行程序中。在本范例中,传递状态子例行程序被加入UEFI BIOS固件120的安全启动服务例行程序的硬件装置检测服务例行程序。传递状态服务例行程序仅在UEFI变量“Deviation_Analysis”在图4B中的步骤442被设为真(true)时,才起作用。于是,当UEFI BIOS固件120在步骤450执行公开更多讯息步骤时,传递状态服务例行程序被执行。传递状态服务例行程序具有两个目的。第一,传递状态服务例行程序藉由运行诊断例行程序,收集服务器的硬件装置健康状态。第二,传递状态例行程序判断可使用的软件讯息公开,然后将讯息存储至可存取的存储器目的端,像是主机存储器区域,或是BMC 110可存取的存储装置的分区(例如快闪存储器122)。
偏差分析信息是存储在传递状态例行程序所输出的软件讯息中。每一讯息包含带有人类可读纲目的一般标头(generic header),以及带有涉及偏差的技术纲目的复杂负载(complex payload)。在本范例模块中,一般标头使用具有人类可读数据且可被范例模块的偏差恢复函数轻易采用的一般纲目,技术纲目是藉由使用具有各种长度及内容的自订元数据(custom metadata),以依运行顺序叙述特定服务例行程序的确切状况。藉此,技术纲目提供服务工程师数据(service engineer data)以进行偏差原因的深度分析。
图5是图4B中的公开讯息步骤450中的偏差分析中,由UEFI BIOS固件120所执行的POST例行程序的软件服务例行程序“SecureBoot_Start()”中所运行的“DeliverStatus()”服务例行程序的范例的码段500。在本范例中,安全启动由接收到POST编码0xA0所触发。安全启动码段500存取传递状态服务例行程序的两个强制服务例行程序:收集状态例行程序510及公开讯息例行程序512。服务例行程序510及512是内建于序列POST编码偏差分析的范例“DeliverStatus”例行程序530。在本范例中,当UEFI变量“偏差分析”为真,例行程序根据名为“Collect_Status_Of_Function_Call”的子例行程序,基于特定的函数呼叫,以收集装置健康状态。函数呼叫是基于具有被源于黄金文件的POST编码序列所支持的POST编码偏差鉴别的特定服务例行程序所写入。举例来说,对特定硬件组件的函数呼叫,可支持读取关联于POST编码的硬件组件的健康状态寄存器。所收集的健康状态被存储在特定的存储器位置。在本范例中,特定的函数呼叫子例行程序导致所收集的健康状态数据通过执行服务例行程序“Expose_Message_of_Function_Call”,以可读的格式存储,像是JSON格式。
安全启动的起始点是由POST例行程序输出POST编码0xA0所指示。传递状态例行程序530仅在硬件检测例行程序判断出POST例行程序所输出的POST编码与黄金文件POST编码序列中对应的POST编码存在偏差时,才有作用。传递状态例行程序530载入UEFI变量“Deviation_Analysis”,以及硬件装置检测的地址。这使例行程序返回,以进行对于偏差POST编码而言明确的函数呼叫,以及传递状态数据。在UEFI变量“Deviation_Analysis”设为真的情况下,传递状态例行程序530再次执行函数呼叫,然后位偏差讯息建立数据结构。
举例来说,讯息520可产生并存储至物理的目的端,像是主机存储器、存储装置,或BMC快闪。讯息520包含人类可读纲目522及技术纲目524。在本范例中,人类可读纲目522是JOSN格式,且包含偏差的定义、偏差的原因、是否可能恢复、提议的修复方法,以及反映偏差的严重性的风险因素。人类可读纲目中的信息是由依附于特定固件或软件组件的特定函数呼叫所输出。在本范例中,技术纲目524包含来自装置的特定存储器分配范围的寄存器倾印(register dump)、资源分配数据、额外的序列讯息、功能设定、配置设定,以及服务例行程序所建立的数据结构。
如上所述,服务例行程序510及512收集硬件装置健康状态,及公开软件函数呼叫的讯息。服务例行程序并不干涉原始行为的POST运行顺序,或修改任何UEFI参数。对于硬件装置健康状态“Collect_Status_Of_FunctionCall”510的收集,是用以收集硬件装置健康状态上的相关技术信息、硬件装置的系统资源分配,以及软件数据结构。其他服务例行程序“Expose_Message_Of_FunctionCall”623是用以将包含收集状态服务例行程序510所收集数据的讯息,公开或存储至可存取的目的端。举例来说,图5中的硬件装置检测服务例行程序极重要的服务例行程序,因此加入传递状态例行程序,以确保偏差分析于POST例行程序的期间进行。
传递状态子例行程序可加入到任何极重要且运行于不同执行路径上的UEFI BIOS固件服务例行程序,像是图5中的安全启动服务例行程序的硬件装置检测服务。替代地,传递状态子例行程序可加入到调用DIMM装置检测子例行程序的平台存储器初始化服务例行程序。DIMM的状态检测可触发替代的POST路径。若检测子例行程序未发现DIMM装置,会导致回报较少的平台存储器大小。因此,需要大量存储器的初始化例行程序会改变,导致替代的POST路径。传递状态例行程序可将装置健康状态作为POST编码的偏差的结果传递。
图6是关于传递状态例行程序的函数呼叫服务的收集状态例行程序510的流程图。传递状态例行程序是图5中的安全启动例行程序的部分。在正常的POST执行路径的期间,“SecureBoot_Start”例行程序进行一次硬件装置检测服务例行程序。在偏差分析的周期中,函数呼叫服务的收集状态例行程序510再次执行POST诊断执行路径中的硬件装置检测服务例行程序。地址被传递,所以装置检测服务例行程序可存取函数呼叫例行程序。于是,函数呼叫服务的收集状态例行程序510首先在步骤610,从母层的传递状态例行程序的输入参数取得函数呼叫例行程序的地址。然后,例行程序在步骤612初始化数据缓冲器。然后,例行程序在步骤614再次执行函数呼叫。
在步骤620,收集状态例行程序离开至函数呼叫例行程序,函数呼叫例行程序审核偏差是否发生的参数。基于该参数,例行程序在步骤622判断函数呼叫是否需要再执行以诊断分析,并藉此收集额外的诊断数据。若不需要再执行,例行程序在步骤624遵从正常的POSR执行路径。然后,函数呼叫例行程序在步骤626将函数呼叫的状态返回正常,并在步骤628继续POST路径。
若函数呼叫例行程序需要再执行,例行程序在步骤630开始诊断执行路径。在步骤632,例行程序从输入参数获取数据缓冲器的地址。然后,例行程序在步骤634执行硬件诊断,根据产生偏差的特定硬件或软件检查健康寄存器的状态。若基于分析,偏差是可恢复的,则例行程序在步骤636设定可恢复的标志(flag)。然后,例行程序在步骤638读取硬件寄存器,以及抓取关联于硬件的资源分配数据。然后,例行程序在步骤640将偏差的原因、风险因素、偏差是否可恢复、推荐的恢复方法,以及从寄存器及其他数据来源所收集到的其他内容,写入至数据缓冲器。然后,例行程序在步骤642将偏差的原因、风险因素、偏差是否可恢复、推荐的恢复方法等数据,以人类可读的格式转换为人类可读纲目。然后,例行程序在步骤644将其他所选取数据转换为技术纲目。
图7是函数呼叫服务的公开讯息例行程序512的流程图。在步骤710,公开讯息例行程序512首先从收集状态例行程序510所设定的输入参数获取数据缓冲器的地址。然后,例行程序在步骤712鉴别讯息输出的目的端。在步骤714,藉由判断目的端将讯息存储,以再次执行硬件的诊断例行程序。然后,例行程序在步骤720将目的端设为物理存储,或在步骤722将目的端设为快闪存储器122,或在步骤724将目的端设为物理存储器,像是系统存储器。然后,例行程序在步骤728经由传输协议,将数据缓冲器传输至指定的目的端。
在图4中的诊断例行程序中,BMC 110在图5所示讯息520中搜寻人类可读纲目522的内容,讯息520是从运行公开讯息服务例行程序512的UEFI BIOS固件120所接收。BMC 110可在步骤460从人类可读纲目中的数据,鉴别有害的分析是否可恢复。基于此数据,BMC 110藉以决定BMC 110是否应开始范例模块的“偏差恢复”函数,或者藉由将警报讯息发送给服务器管理软件而冻结服务器。
偏差恢复机制是图5中的UEFI BIOS固件特定函数呼叫服务例行程序510及支持的硬件装置的完整性(integrity)方法。举例来说,UEFI BIOS固件120的开发者配对合适的恢复方法以指定函数呼叫。所指定函数呼叫具有已安装的“传递信息”服务例行程序500。一旦恢复方法执行完毕,管理者/IT工程师观察恢复机制是否逆转了偏差且回到正常运作的POST例行程序,藉此将正确的POST编码输出至POST编码序列中。在本范例中,恢复方法是为固件工程师所开发的各种硬件组件制定的设计。类似的函数呼叫可能配对到由POST例行程序所发起的不同的软件恢复方法。
图8是不同的硬件及软件组件的某些范例恢复方法的表格800,这些硬件及软件组件可由不同的函数呼叫所恢复。图8包含栏810,列出服务器106的可发现的硬件或软件的不同错误。另一栏820列出可由服务器106所运行的服务器管理软件所执行的恢复机制。
偏差恢复的进行首先参考图4中的偏差分析程序所决定的自动恢复或人为恢复的策略。自动的策略设定允许服务器106上的UEFI BIOS固件120及BMC 110自动地逆转POST例行程序上所鉴别出的偏差的效应。这可能涉及图8中的表格所展示可由固件开发者所设定的移动。人为的策略设定允许既定时间表安排的人为介入,像是警示技术员替换或更新硬件组件,或重新启动软件。策略设定可通过远端管理站(像是图1中的服务站102)上的服务器管理软件所设置。策略设定被发送给BMC 110,以供POST例行程序中的范例模块参考。
自动偏差恢复函数包含BMC 110藉由使用内建于UEFI BIOS固件120的恢复机制或BMC 110所进行的恢复机制开始偏差恢复程序。自动恢复机制可允许服务器106修正POST序列,但不一定能彻底地去除所有偏差。因此,技术员可能需要在讯息中的技术纲目允许人为检查,以及为完整的服务器诊断的人为介入排定时间。
如图4C所示,偏差恢复是BMC 110在步骤466所发起。BMC 470在步骤470首先藉由传递状态例行程序500所输出的讯息,判断恢复是人为的或是自动的。若恢复是人为的,BMC110在步骤472基于管理者所安排的服务器维护时间表,允许将恢复程序排定在所选时间。若恢复是自动的,BMC在步骤474判断恢复是否由BMC 110所进行。若恢复是由BMC 110所进行,BMC 110在步骤476根据特定的硬件或软件进行恢复程序。举例来说,BMC110可重置,以及启用或停用物理的硬件接口。BMC 110可开机及关机,以迫使硬件逻辑回到稳定的状态。BMC 110可使用非易失性快速存储器(Non-Volatile Memory Express;NVMe)管理接口重置NVMe装置。
若恢复并非由BMC所进行,或者一旦BMC完成恢复程序,例行程序在步骤478判断恢复是否由UEFI BIOS固件120所进行。若恢复并非由UEFI BIOS固件120所进行,例行程序在步骤480将服务器关机再开机。若恢复是由UEFI BIOS固件120所进行,BMC 110在步骤482请求UEFI BIOS设定UEFI变量“Deviation_Recovery”。在步骤484,BMC 110监控是否接收到UEFI BIOS 120的授权。若尚未接收到授权,BMC 110继续在步骤482请求UEFI BIOS设定UEFI偏差恢复变量。若BMC 110接收到UEFI BIOS 120的授权,BMC 110在步骤480将服务器关机再开机。
当UEFI BIOS 120在步骤482接收到BMC 110的请求,UEFI BIOS 120在步骤486设定UEFI变量“Deviation_Recovery”。然后,UEFI BIOS 120在步骤488授权BMC 110开始偏差恢复。然后,UEFI BIOS 120在步骤490停止,并等待BMC将服务器关机再开机。
一旦开始关机再开机,UEFI BIOS固件120在步骤492将偏差恢复记录至快闪存储器122所存储的SEL 126。然后,UEFI BIOS固件120在步骤494进行恢复机制。举例来说,BIOS固件可迫使积体总线电路(inter-integrated circuit;I2C)主机控制器将数据/时钟信号拉低,以迫使从属装置(slave device)重置其本身至原始的闲置状态。另一范例,BIOS固件将支持热插拔的装置开机及关机。在恢复机制完成后,UEFI BIOS 120在步骤496清除UEFI变量“Deviation_Recovery”。然后,UEFI BIOS固件120在步骤498重新启动服务器。
图6-7中的流程图是代表图5中的传递状态例行程序所进行的不同服务例行程序的范例机器可读指令。在本范例中,机器可读指令包括由(a)处理器;(b)控制器;和/或(c)一或多个其他合适的处理装置所执行的算法。算法可实施于像是快闪存储器、CD-ROM、软盘、硬盘、数字影音(多功能)光盘(DVD)或其他存储器装置之类的有形介质所存储的软件中。然而,本领域技术人员将易于理解,整个算法和/或其部分可替代地由处理器之外的装置所执行,和/或以已知的方式(例如可由特定应用集成电路(application specificintegrated circuit;ASIC)、可编程逻辑装置(programmable logic device;PLD)、现场可编程逻辑装置(filed programmable logic device;FPLD)、现场可编程逻辑阵列(filedprogrammable gate array;FPGA)、离散逻辑(discrete logic)装置…等所实作),实施于固件或专用硬件中。举例来说,接口的任何或所有的组件可由软件、硬件和/或固件所实作。并且,流程图所代表的某些或所有的机器可读指令,可以人工实作。此外,虽然范例算法是参考图6-7所绘示的流程图而叙述,本领域技术人员将易于理解,可替代地使用许多其他方法以实作范例机器可读指令。举例来说,区块的顺序可改变,和/或某些所述区块可改变、删减或合并。
如本申请中所使用的“组件”、“模块”、“系统”或类似的词汇,通常指与计算机相关的实体,可以是硬件(例如电路)、硬件与软件的组合、软件,或者与运作机器相关、具有一种或更多种特定功能的实体。举例而言,元件可以是但不限于在处理器(例如数字信号处理器)上执行的程序、处理器、物件、可执行文件、线程(thread of execution)、程序,和/或计算机。作为示例,在控制器上执行的应用,以及控制器本身,皆可为元件。一个或更多个元件可常驻于程序和/或线程之内,且一个元件可被局限在一台计算机上和/或分散在两台或更多台计算机之间。此外,“装置”可出自于特殊设计的硬件的形式;藉由执行其上使硬件能执行特定功能的软件所特制出的通用硬件;存储在计算机可读介质上的软件;或者其组合。
在此所使用的术语仅以叙述特定的实施例为目的,而并非意图限制本发明。如在此所使用的,单数形“一”及“该”意图亦包含复数形,除非文意明显另有所指。此外,倘若“包含”、“具有”、“带有”一词或者其变形,被使用在实施方式和/或权利要求中,这类词汇意图被包含在类似于“包括”一词的方式中。
除非另有定义,在此所使用的所有词汇(包含技术性及科学性的词汇),与本领域技术人员一般所理解的,具有相同的含意。此外,像是被定义在一般所使用的字典中的词汇,应被解读为具有与它们在相关技术的文意中一致的含意,且除非在此被明确地如此定义,否则该等词汇不会被解读为理想化或过度正式的概念。
虽然本发明的各种实施例已被叙述如上,应被理解的是,该等实施例仅被呈现来作为范例,而非限制。即使本发明已参考一种或更多种实施方式所绘示及叙述,当阅读及理解本说明书及附加的附图时,均等的替换及修改将可被其他本领域技术人员想到或知晓。此外,虽然本发明的特定的特征可仅被数个实施例的其中之一所公开,这种特征可与其他实施例的一个或更多个其他特征进行组合,而此其他特征对于任何给定的或特定的应用可能是期望的或有利的。因此,本发明的广度及范围不应受限于任何以上叙述的实施例。反之,本发明的范围应根据权利要求及其均等物所定义。

Claims (10)

1.一种检测偏差的计算机系统,包括:
基本输入输出系统(BIOS),包含开机自我测试(POST)例行程序,该POST例行程序具有多个阶段在启动至移交给操作系统之间执行;
控制器,与该BIOS通信;以及
存储器,耦接至该控制器及该BIOS,该存储器存储黄金映像文件POST编码序列,其中该控制器及该BIOS可操作:
从该POST例行程序接收序列POST编码,该序列POST编码是由多个阶段的执行所产生;
将该序列POST编码与该黄金映像文件POST编码序列作比对;以及
基于该序列POST编码中不符合该黄金映像文件POST编码序列的至少一POST编码,鉴别出该POST例行程序中的偏差。
2.如权利要求1所述的系统,其中该偏差是以下其中一个:
安全性函数阶段的缺陷;
安全性函数阶段的损伤;以及
该POST例行程序的不信任状况的检测。
3.如权利要求1所述的系统,其中该偏差是以下其中一个:
该POST例行程序中的探索步骤未发现多个硬件装置中的硬件装置;
失效的硬件接口;以及
该POST例行程序初始化硬件装置后的硬件速度下降。
4.如权利要求1所述的系统,其中该偏差是以下其中一个:
失效的软件服务;
不可用的软件服务;以及
未被支持的软件服务。
5.如权利要求1所述的系统,其中该控制器及该BIOS更可操作以:
基于鉴别出的该偏差,进行偏差分析;
存储讯息,该讯息包含该偏差分析的结果;以及
在该偏差分析完成后,将该计算机系统关机再开机;
其中该偏差分析包含修复该偏差的恢复方法,及其中该BIOS及该控制器更可在关机再开机后自动地进行该恢复方法。
6.一种检测偏差的方法,其中该方法是在启动计算机系统时对开机自我测试(POST)例行程序执行;其中该计算机系统包含基本输入输出系统(BIOS)、控制器及存储器,该BIOS包含该开机自我测试(POST)例行程序,该POST例行程序具有多个阶段在启动至移交给操作系统之间执行;该控制器与该BIOS通信;及该耦接至该控制器及该BIOS,该方法包括:
将黄金映像文件POST编码序列存储在该存储器中;
执行该BIOS的该POST例行程序;
从该POST例行程序接收序列POST编码,该序列POST编码是由多个阶段的执行所产生;
由该控制器将该序列POST编码与该黄金映像文件POST编码序列作比对;以及
基于该序列POST编码中不符合该黄金映像文件POST编码序列的至少一POST编码,鉴别出该POST例行程序中的偏差。
7.如权利要求6所述的方法,其中该偏差是以下其中一个:
安全性函数阶段的缺陷;
安全性函数阶段的损伤;以及
该POST例行程序的不信任状况的检测。
8.如权利要求6所述的方法,其中该偏差是以下其中一个:
该POST例行程序中的探索步骤未发现硬件装置;
失效的硬件接口;以及
该POST例行程序初始化硬件装置后的硬件速度下降。
9.如权利要求6所述的方法,其中该偏差是以下其中一个:
失效的软件服务;
不可用的软件服务;以及
未被支持的软件服务。
10.一种非暂态计算机可读介质,存储有软件指令,当被计算机系统中的处理器所执行时,致使该处理器进行以下操作:
执行该计算机系统的开机自我测试(POST)例行程序的多个阶段;
在该POST例行程序执行的期间,输出序列POST编码;
将该序列POST编码与黄金映像文件POST编码序列作比对;以及
基于该序列POST编码中不符合该黄金映像文件POST编码序列的至少一POST编码,鉴别出该POST例行程序中的偏差。
CN202211016865.8A 2021-12-23 2022-08-24 检测偏差的计算机系统及方法和非暂态计算机可读介质 Pending CN116340031A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163265982P 2021-12-23 2021-12-23
US63/265,982 2021-12-23
US17/651,534 2022-02-17
US17/651,534 US11620199B1 (en) 2021-12-23 2022-02-17 Method and system for detection of post routine deviation for a network device

Publications (1)

Publication Number Publication Date
CN116340031A true CN116340031A (zh) 2023-06-27

Family

ID=85775700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211016865.8A Pending CN116340031A (zh) 2021-12-23 2022-08-24 检测偏差的计算机系统及方法和非暂态计算机可读介质

Country Status (3)

Country Link
US (1) US11620199B1 (zh)
JP (1) JP7389877B2 (zh)
CN (1) CN116340031A (zh)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379342A (en) * 1993-01-07 1995-01-03 International Business Machines Corp. Method and apparatus for providing enhanced data verification in a computer system
US8516237B2 (en) * 2010-01-12 2013-08-20 Oracle America, Inc. Method and system for providing information to a subsequent operating system
CN202177894U (zh) * 2011-07-14 2012-03-28 鸿富锦精密工业(深圳)有限公司 主板故障诊断卡
JP2013206046A (ja) 2012-03-28 2013-10-07 Nec Corp 情報処理装置、起動時診断方法、及びプログラム
JP2014021577A (ja) 2012-07-13 2014-02-03 Nec Computertechno Ltd 故障予測装置、故障予測システム、故障予測方法、及び、故障予測プログラム
US9081964B2 (en) * 2012-12-27 2015-07-14 General Electric Company Firmware upgrade error detection and automatic rollback
US9092404B2 (en) * 2013-01-09 2015-07-28 Dell Products, Lp System and method to remotely recover from a system halt during system initialization
US10977367B1 (en) 2018-02-06 2021-04-13 Facebook, Inc. Detecting malicious firmware modification
JP2021077263A (ja) 2019-11-13 2021-05-20 レノボ・シンガポール・プライベート・リミテッド 解析システム、情報処理装置、電子機器、及び解析方法
US11126518B1 (en) 2020-03-16 2021-09-21 Quanta Computer Inc. Method and system for optimal boot path for a network device
JP7426269B2 (ja) 2020-03-27 2024-02-01 株式会社コンテック 情報処理装置および情報処理システム
TWI801730B (zh) * 2020-04-07 2023-05-11 神雲科技股份有限公司 具系統設定資料同步功能的伺服器
CN112231162B (zh) * 2020-10-23 2022-03-15 英业达科技有限公司 开机测试系统及开机测试方法
US11429723B2 (en) * 2020-12-07 2022-08-30 Dell Products L.P. Multi-domain boot and runtime status code drift detection

Also Published As

Publication number Publication date
JP2023094534A (ja) 2023-07-05
TW202326435A (zh) 2023-07-01
US11620199B1 (en) 2023-04-04
JP7389877B2 (ja) 2023-11-30

Similar Documents

Publication Publication Date Title
CN113489597B (zh) 用于网络装置的最佳启动路径的方法和系统
CN106598635B (zh) 基板管理控制器的恢复方法及基板管理控制器
US10055296B2 (en) System and method for selective BIOS restoration
US7861119B1 (en) Updating a firmware image using a firmware debugger application
US6502208B1 (en) Method and system for check stop error handling
US9747192B2 (en) Automated operating system installation on multiple drives
KR101143679B1 (ko) 자동 펌웨어 복원
WO2018095107A1 (zh) 一种bios程序的异常处理方法及装置
US10496495B2 (en) On demand remote diagnostics for hardware component failure and disk drive data recovery using embedded storage media
WO2021057795A1 (zh) 系统启动方法、装置、节点设备及计算机可读存储介质
KR20090120541A (ko) 운영체제(os) 자동복구기능을 갖는 임베디드 시스템 및운영체제 자동복구 방법
US20170132102A1 (en) Computer readable non-transitory recording medium storing pseudo failure generation program, generation method, and generation apparatus
US10824517B2 (en) Backup and recovery of configuration files in management device
CN109032636A (zh) 一种基于加密认证bmc更新uefi固件的方法
US8032791B2 (en) Diagnosis of and response to failure at reset in a data processing system
TW202238383A (zh) 電腦系統、電腦伺服器及其啟動方法
TWI840907B (zh) 偵測偏差的電腦系統及方法,及非暫態電腦可讀取媒體
CN116340031A (zh) 检测偏差的计算机系统及方法和非暂态计算机可读介质
US11334419B1 (en) Information handling system fault analysis with remote remediation file system
US11354109B1 (en) Firmware updates using updated firmware files in a dedicated firmware volume
Sakthikumar et al. White Paper A Tour beyond BIOS Implementing the ACPI Platform Error Interface with the Unified Extensible Firmware Interface
US10216525B1 (en) Virtual disk carousel
JP7275922B2 (ja) 情報処理装置、異常検出方法及びプログラム
TWI777664B (zh) 嵌入式系統的開機方法
US20240152428A1 (en) Updating firmware based on firmware stability index

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