TWI840907B - 偵測偏差的電腦系統及方法,及非暫態電腦可讀取媒體 - Google Patents

偵測偏差的電腦系統及方法,及非暫態電腦可讀取媒體 Download PDF

Info

Publication number
TWI840907B
TWI840907B TW111129599A TW111129599A TWI840907B TW I840907 B TWI840907 B TW I840907B TW 111129599 A TW111129599 A TW 111129599A TW 111129599 A TW111129599 A TW 111129599A TW I840907 B TWI840907 B TW I840907B
Authority
TW
Taiwan
Prior art keywords
post
routine
deviation
sequence
bios
Prior art date
Application number
TW111129599A
Other languages
English (en)
Other versions
TW202326435A (zh
Inventor
錢威宇
Original Assignee
廣達電腦股份有限公司
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
Priority claimed from US17/651,534 external-priority patent/US11620199B1/en
Application filed by 廣達電腦股份有限公司 filed Critical 廣達電腦股份有限公司
Publication of TW202326435A publication Critical patent/TW202326435A/zh
Application granted granted Critical
Publication of TWI840907B publication Critical patent/TWI840907B/zh

Links

Images

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 Extensible Firmware Interface;UEFI)BIOS韌體必須在POST例行程序中進行多種步驟,以初始化及啟用所有硬體組件,直到伺服器平台的作業系統已就緒。這些步驟包含依序執行個別的程序,以初始化硬體組件、啟用軟體功能、進行伺服器安全性活動,及執行平台錯誤復原的例行程序。大體而言,於POST例行程序中的每一軟體程式通常保有重要的檢查點,以敘述軟體程式之目 的、行為、結果及狀態。檢查點是以可見的訊息輸出,可顯示於終端裝置的螢幕、特定的LCD面板、LED指示燈,及/或控制台重新定向(console redirection)。管理者亦可藉由檢查在帶內(in-band)(伺服器之非揮發性記憶體)及帶外(由基板管理控制器(baseboard management 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韌體所執行。在另一種實作中,復原例行程序包含優化硬體組件初始化、清除可疑的資料結構,或重新載入自訂的黃金設定。在另一種實作中,偏差分析例行程序是特別針對所鑑別出的硬體或軟體組件,基於硬體或軟體開發者所提供的文件所編寫。在另一種實作中,目的端裝置是系統記憶體、儲存裝置,或控制器可存取的快閃記憶體。
以上發明內容並非意圖代表本揭露的每個實施例或每個觀點。反之,前述的發明內容僅提供在此列舉的某些新穎的觀念及特徵之範例。以上特徵及優點,以及本揭露的其他特徵及優點,當關聯於搭配的圖式及附加的請求項時,從以下用以實施本發明的代表性實施例及模式的詳細敘述,可立即瞭解。
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:欄
本揭露將可從以下示範的實施例之敘述搭配附帶的圖式更佳地理解。
第1圖是根據本揭露的某些態樣的一種電腦系統之方塊圖,電腦系統具有執行範例POST例行程序的組件,範例POST例行程序包含用 以鑑別、診斷及修復POST例行程序中的偏差的模組。
第2圖是根據本揭露之某些態樣的程序圖,展示範例POST例行程序中的不同步驟及對應的POST編碼。
第3圖是根據本揭露之某些態樣的程序圖,展示來自POST例行程序之範例模組的診斷。
第4A-4C圖是根據本揭露之某些態樣以鑑別、診斷及修復POST例行程序之範例模組之函式的流程圖。
第5圖是根據本揭露之某些態樣的POST例行程序中的安全啟動服務之編碼序列,POST例行程序包含範例模組之診斷函式的傳遞狀態服務例行程序。
第6圖是根據本揭露之某些態樣以收集第5圖中的函式呼叫例行程序之函式服務例行程序之狀態的流程圖。
第7圖是根據本揭露之某些態樣以將第5圖中的函式呼叫例行程序之函式呼叫服務例行程序的訊息揭露的流程圖。
第8圖是根據本揭露之某些態樣的可能復原機制之表格,可能復原機制是基於可由範例模組之復原函式所輸出的錯誤診斷。
本揭露可接受各式各樣的修改及替代的形式。某些代表性的實施例,已被圖式中的範例所顯示,並將在此被詳細地敘述。然而,應被理解的是,本發明並非意圖限定於所揭露的特定形式。反之,本揭露涵蓋所有的修改、均等物,以及落在如附加的請求項所定義的本發明之範圍與精神之內的替代方案。
本發明可以許多不同的形式所實施。代表性的實施例被圖式所顯示,並將在此被詳細地敘述。本揭露為本發明的原則之範例或圖解,且並非意圖將本揭露之廣泛的觀點限制於繪式的實施例。在此基礎上,例如在摘要、發明內容及實施方式等段落中被揭露,但並未明確地在請求項中列舉的元件及限制,不應被單獨地、集體地、暗示地、推論地或其他方式地併入至請求項中。為了本詳細敘述之目的,除非被具體地否認,否則單數形包含複數形,反之亦然;且「包含」一詞意指「無限制地包含」。此外,表近似的詞彙,例如「約」、「幾乎」、「大體上」、「大概」及類似的詞彙,能在此被用來意指「在」、「近」、「近於」、「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)應用程式介面(application programming 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,及初始平台埠(initial platform porting)程序234。
一組驅動程式240,像是裝置驅動程式、匯流排驅動程式或服務驅動程式,實作DXE階段214。每一驅動程式持續執行,直到DXE階段214結束。此階段包含週邊組件互連(peripheral component interconnect;PCI)掃描及資源分配程序242、建立啟動及運行時間服務(runtime service)程序244,以及發布先進組態與電力介面(advanced configuration 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編碼輸出。在本範例中,BMC 110執行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例行程序的結束,BMC 110回到步驟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韌體釋出,這種管理軟體將新的黃金映像檔發送至BMC 110。黃金POST編碼序列的升級,避免源自舊的黃金POST編碼檔案的偏差之非正確的指示。伺服器管理軟體亦可使伺服器BMC之資料庫中舊版的黃金POST編碼檔案失效。在本範例中,資料庫具有多對BIOS映像檔及黃金映像檔,並可由服務站102所管理。當管理者決定升級伺服器106之韌體版本,管理者將升級對應的黃金映像檔。此程序可藉由透過升級協定(像是Redfish韌體升級協定)發送包含韌體映像檔、黃金映像檔及腳本檔案的新韌體包所達成。
替代地,偏差可以是已知的、已接受的妥協方案。舉例來說,POST編碼偏差可能是源於管理者已接受的問題,像是使用低成本的雙列記憶體模組,具有頻率降低的問題,因而造成POST編碼相較於黃金映像檔POST編碼的偏差。管理者可能選擇維持該模組不變,因而導致持續的POST編碼偏差。
一旦偵測到有害的偏差,BMC 110開始執行UEFI BIOS韌體120及BMC 110中的範例模組之「偏差分析」的部分。在本範例中,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變數「偏差分析」。然後,BMC 110於步驟438檢查UEFI BIOS 120是否已授予權限。若權限尚未授予,BMC 110繼續於步驟438檢查UEFI BIOS 120是否授予權限。若權限已授予,BMC於步驟440將伺服器關機再開機。
響應於來自BMC的請求,UEFI BIOS 120於步驟442設定UEFI變數「偏差分析」,以發起偏差分析。然後,UEFI BIOS 120於步驟444授權BMC 110開始偏差分析函式。然後,UEFI BIOS 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,UEFI BIOS 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所輸出的訊息,判斷復原是人為的或是自動的。若復原是人為的,BMC 110於步驟472基於管理者所安排的伺服器維護時間表,允許將復原程序排定在所選時間。若復原是自動的,BMC於步驟474判斷復原是否由BMC 110所進行。若復原是由BMC 110所進行,BMC 110於步驟476根據特定的硬體或軟體進行復原程序。舉例來說,BMC 110可重置,以及啟用或停用實體的硬體介面。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 specific integrated circuit;ASIC)、可程式化邏輯裝置(programmable logic device;PLD)、場域可程式化邏輯裝置(filed programmable logic device;FPLD)、場域可程式化邏輯陣列(filed programmable gate array;FPGA)、離散邏輯(discrete logic)裝置...等所實作),實施於韌體或專用硬體中。舉例來說,介面之任何或所有的組件可由軟體、硬體及/或韌體所實作。並且,流程圖所代表的某些或所有的機器可讀指令,可以人工實作。此外,雖然範例演算法是參考第6-7圖所繪示的流程圖而敘述,本領域具有通常知識者將易於理解,可替代地使用許多其他方法以實作範例機器可讀指令。舉例來說,區塊的順序可改變,及/或某些所述區塊可改變、刪減或合併。
如本申請中所使用的「組件」、「模組」、「系統」或類似的詞彙,通常係指與電腦相關的實體,可以是硬體(例如電路)、硬體與軟體之組合、軟體,或者與運作機器相關、具有一種或更多種特定功能的實體。舉例而言,元件可以是但不限於在處理器(例如數位信號處理器)上執行的程序、處理器、物件、可執行檔、執行緒(thread of execution)、程式,及/或電腦。作為示例,在控制器上執行的應用,以及控制器本身,皆可為元件。一個或更多個元件可常駐於程序及/或執行緒之內,且一個元件可被侷限在一台電腦上及/或分散在兩台或更多台電腦之間。此外,「裝置」可出自於特殊設計的硬體之形式;藉由執行其上使硬體能執行特定功能的軟 體所特製出的通用硬體;儲存在電腦可讀取媒體上的軟體;或者其組合。
在此所使用的術語僅以敘述特定的實施例為目的,而並非意圖限制本發明。如在此所使用的,單數形「一」及「該」意圖亦包含複數形,除非文意明顯另有所指。此外,倘若「包含」、「具有」、「帶有」一詞或者其變形,被使用在實施方式及/或請求項中,這類詞彙意圖被包含在類似於「包括」一詞的方式中。
除非另有定義,在此所使用的所有詞彙(包含技術性及科學性的詞彙),與本技術領域之普通技術之人一般所理解的,具有相同的含意。此外,像是被定義在一般所使用的字典中的詞彙,應被解讀為具有與它們在相關技術的文意中一致的含意,且除非在此被明確地如此定義,否則該等詞彙不會被解讀為理想化或過度正式的概念。
雖然本發明之各種實施例已被敘述如上,應被理解的是,該等實施例僅被呈現來作為範例,而非限制。即使本發明已參考一種或更多種實施方式所繪示及敘述,當閱讀及理解本說明書及附加的圖式時,均等的替換及修改將可被其他熟習此項技術者想到或知曉。此外,雖然本發明之特定的特徵可僅被數個實施例的其中之一所揭露,這種特徵可與其他實施例的一個或更多個其他特徵進行組合,而此其他特徵對於任何給定的或特定的應用可能是期望的或有利的。因此,本發明之廣度及範圍不應受限於任何以上敘述的實施例。反之,本發明之範圍應根據以下的請求項及其均等物所 定義。
100:遠端系統
102:服務站
104:網路
106:伺服器
108:技術員
110:基板管理控器(BMC)
112:網路介面卡或網路介面控制器
120:基本輸入輸出系統(BIOS)
122:快閃記憶體
124:黃金映像檔
126:系統錯誤日誌(SEL)
130:中央處理單元
132:硬體組件
134:軟體程序
140:作業系統(OS)

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例行程序中的一偏差。
TW111129599A 2021-12-23 2022-08-05 偵測偏差的電腦系統及方法,及非暫態電腦可讀取媒體 TWI840907B (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 (2)

Publication Number Publication Date
TW202326435A TW202326435A (zh) 2023-07-01
TWI840907B true TWI840907B (zh) 2024-05-01

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004642A1 (en) 2016-06-30 2018-01-04 International Business Machines Corporation Using test workload run facts and problem discovery data as input for business analytics to determine test effectiveness

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004642A1 (en) 2016-06-30 2018-01-04 International Business Machines Corporation Using test workload run facts and problem discovery data as input for business analytics to determine test effectiveness

Similar Documents

Publication Publication Date Title
US10055296B2 (en) System and method for selective BIOS restoration
CN106681751B (zh) 统一固件管理系统和管理方法以及计算机可读取介质
TWI754317B (zh) 用於網路裝置之最佳啟動路徑之方法和系統
US8843785B2 (en) Collecting debug data in a secure chip implementation
US9158628B2 (en) Bios failover update with service processor having direct serial peripheral interface (SPI) access
US9857998B2 (en) Backup storage of vital debug information
US6502208B1 (en) Method and system for check stop error handling
US7861119B1 (en) Updating a firmware image using a firmware debugger application
US8041936B2 (en) Persisting value relevant to debugging of computer system during reset of computer system
KR101143679B1 (ko) 자동 펌웨어 복원
WO2018095107A1 (zh) 一种bios程序的异常处理方法及装置
JP2010086181A (ja) 仮想計算機システム及びその管理方法、プログラム並びに記録媒体
WO2016206514A1 (zh) 启动处理方法及装置
US10275330B2 (en) Computer readable non-transitory recording medium storing pseudo failure generation program, generation method, and generation apparatus
US8032791B2 (en) Diagnosis of and response to failure at reset in a data processing system
US20230118160A1 (en) Apparatus, Device, Method, and Computer Program for Monitoring a Processing Device from a Trusted Domain
US20170052841A1 (en) Management apparatus, computer and non-transitory computer-readable recording medium having management program recorded therein
TWI840907B (zh) 偵測偏差的電腦系統及方法,及非暫態電腦可讀取媒體
JP7389877B2 (ja) ネットワークの最適なブートパスの方法及びシステム
Sakthikumar et al. White Paper A Tour beyond BIOS Implementing the ACPI Platform Error Interface with the Unified Extensible Firmware Interface
US11354109B1 (en) Firmware updates using updated firmware files in a dedicated firmware volume
TWI715005B (zh) 用於監控基板管理控制器之常駐程序的方法
JP6024742B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
Gupta Noise reduction in solid state drive (SSD) system validation
JP2016076152A (ja) エラー検出システム、エラー検出方法およびエラー検出プログラム