一種固件恢復(fù)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及服務(wù)器技術(shù)領(lǐng)域,尤其涉及一種固件恢復(fù)方法及裝置。
【背景技術(shù)】
[0002]固件是設(shè)備得以運(yùn)行的最底層的程序代碼。服務(wù)器中的固件由于存在漏洞或新增功能需要不斷升級(jí),當(dāng)固件升級(jí)失敗時(shí),服務(wù)器將有很大概率無(wú)法啟動(dòng),且維修難度極大,影響正常使用。
[0003]現(xiàn)有技術(shù)方案將固件保存在ROM (Read-Only Memory,只讀存儲(chǔ)器)中,并采用兩片ROM備份的方式,在主ROM中固件升級(jí)失敗的情況下,切換到備份ROM運(yùn)行,以避免升級(jí)失敗導(dǎo)致系統(tǒng)無(wú)法啟動(dòng)。但是,當(dāng)服務(wù)器中存在大量需要備份的固件時(shí),該技術(shù)方案將增加服務(wù)器的成本,且無(wú)法解決固件升級(jí)成功但由于版本不兼容而導(dǎo)致的無(wú)法啟動(dòng)。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本申請(qǐng)?zhí)峁┮环N固件恢復(fù)方法及裝置。
[0005]具體地,本申請(qǐng)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
[0006]本申請(qǐng)?zhí)峁┮环N固件恢復(fù)方法,應(yīng)用于服務(wù)器中的基板管理控制器BMC中央處理器CPU上,所述服務(wù)器包含主CPU、所述BMC CPU以及多個(gè)模塊,所述多個(gè)模塊與所述BMC(PU連接,每一個(gè)模塊中包含各自運(yùn)行所需的固件,該方法包括:
[0007]當(dāng)所述主CPU啟動(dòng)失敗時(shí),對(duì)所述每一個(gè)模塊進(jìn)行如下處理:
[0008]確定模塊中當(dāng)前版本固件是否可用;
[0009]當(dāng)所述當(dāng)前版本固件不可用時(shí),從存儲(chǔ)設(shè)備中獲取對(duì)應(yīng)模塊成功升級(jí)過(guò)的版本固件;
[0010]根據(jù)所述成功升級(jí)過(guò)的版本固件對(duì)所述對(duì)應(yīng)模塊進(jìn)行固件恢復(fù)。
[0011]本申請(qǐng)?zhí)峁┮环N固件恢復(fù)裝置,應(yīng)用于服務(wù)器中的基板管理控制器BMC中央處理器CPU上,所述服務(wù)器包含主CPU、所述BMC CPU以及多個(gè)模塊,所述多個(gè)模塊與所述BMCCPU連接,每一個(gè)模塊中包含各自運(yùn)行所需的固件,該裝置包括:
[0012]確定單元,用于當(dāng)所述主CPU啟動(dòng)失敗時(shí),確定每一個(gè)模塊中當(dāng)前版本固件是否可用;
[0013]獲取單元,用于當(dāng)所述當(dāng)前版本固件不可用時(shí),從存儲(chǔ)設(shè)備中獲取對(duì)應(yīng)模塊成功升級(jí)過(guò)的版本固件;
[0014]恢復(fù)單元,用于根據(jù)所述成功升級(jí)過(guò)的版本固件對(duì)所述對(duì)應(yīng)模塊進(jìn)行固件恢復(fù)。
[0015]由以上描述可以看出,本申請(qǐng)采用獨(dú)立于主系統(tǒng)的BMC系統(tǒng)進(jìn)行固件恢復(fù),在確定由于固件升級(jí)導(dǎo)致的主CPU啟動(dòng)失敗時(shí),可以從存儲(chǔ)設(shè)備中獲取對(duì)應(yīng)模塊已成功升級(jí)過(guò)的任一版本固件進(jìn)行固件恢復(fù)。通過(guò)本申請(qǐng)可有效降低主CPU無(wú)法啟動(dòng)的風(fēng)險(xiǎn),且可以檢測(cè)出由于版本不兼容導(dǎo)致的系統(tǒng)無(wú)法啟動(dòng)。
【附圖說(shuō)明】
[0016]圖1是本申請(qǐng)一示例性實(shí)施例示出的服務(wù)器架構(gòu)示意圖;
[0017]圖2是本申請(qǐng)一示例性實(shí)施例示出的一種固件恢復(fù)方法流程圖;
[0018]圖3是本申請(qǐng)一示例性實(shí)施例示出的一種固件恢復(fù)裝置所在設(shè)備的基礎(chǔ)硬件結(jié)構(gòu)示意圖;
[0019]圖4是本申請(qǐng)一示例性實(shí)施例示出的一種固件恢復(fù)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
[0021]在本申請(qǐng)使用的術(shù)語(yǔ)是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請(qǐng)。在本申請(qǐng)和所附權(quán)利要求書(shū)中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
[0022]應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語(yǔ)第一、第二、第三等來(lái)描述各種信息,但這些信息不應(yīng)限于這些術(shù)語(yǔ)。這些術(shù)語(yǔ)僅用來(lái)將同一類型的信息彼此區(qū)分開(kāi)。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
[0023]服務(wù)器中通常包含HOST (主)CPU (Central Processing Unit,中央處理器)和BMC (Baseboard Management Controller,基板管理控制器)CPU,其中,主CPU用于業(yè)務(wù)處理,BMC CPU用于服務(wù)器狀態(tài)監(jiān)控、帶外管理以及固件升級(jí)等。當(dāng)服務(wù)器中的固件升級(jí)出錯(cuò)時(shí),例如,升級(jí)過(guò)程中服務(wù)器掉電,則服務(wù)器將無(wú)法正常啟動(dòng)。
[0024]為了避免上述問(wèn)題,現(xiàn)有技術(shù)方案采用ROM備份的方式,在服務(wù)器中增加一片ROM進(jìn)行固件備份,當(dāng)主ROM升級(jí)出錯(cuò)時(shí),切換到備份R0M,利用備份ROM中的固件啟動(dòng)服務(wù)器;或者直接為服務(wù)器選擇一片大容量R0M,從該ROM劃分出引導(dǎo)區(qū)、主用區(qū)以及備用區(qū),正常情況下引導(dǎo)區(qū)先運(yùn)行,引導(dǎo)CPU工作在主用區(qū),當(dāng)主用區(qū)升級(jí)出錯(cuò)時(shí),切換到備用區(qū)啟動(dòng)服務(wù)器。上述技術(shù)方案在一定程度上降低了服務(wù)器不能啟動(dòng)的概率,但同時(shí)也增加了服務(wù)器的成本,且無(wú)法解決固件升級(jí)成功但由于版本不兼容而導(dǎo)致的無(wú)法啟動(dòng)。
[0025]針對(duì)現(xiàn)有技術(shù)方案存在的問(wèn)題,本申請(qǐng)?zhí)岢鲆环N固件恢復(fù)方法,該方法采用獨(dú)立于主系統(tǒng)的BMC系統(tǒng)進(jìn)行固件恢復(fù),在確定由于固件升級(jí)導(dǎo)致的主CPU啟動(dòng)失敗時(shí),可以從存儲(chǔ)設(shè)備中獲取對(duì)應(yīng)模塊已成功升級(jí)過(guò)的任一版本固件進(jìn)行固件恢復(fù)。
[0026]參見(jiàn)圖1,為本申請(qǐng)實(shí)施例示出的服務(wù)器架構(gòu)示意圖,該示意圖僅示出了服務(wù)器中的主要模塊。HOST CPU用于業(yè)務(wù)處理;PCH(Platform Controller Hub,南橋)用于擴(kuò)展CPU的外設(shè)接口;BMC CPU用于服務(wù)器狀態(tài)監(jiān)控、帶外管理以及固件升級(jí)等;BMC ROM用于存儲(chǔ)BMC系統(tǒng)的程序;ME (Management Engine,管理引擎)用于初始化和管理整個(gè)系統(tǒng);B1S (Basic Input Output System,基本輸入輸出系統(tǒng))用于保存系統(tǒng)設(shè)置以及系統(tǒng)自啟動(dòng)程序等;LOGIC(邏輯)為一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路;存儲(chǔ)設(shè)備用于保存服務(wù)器日志等信息。其中,ME、B1S以及LOGIC模塊中分別保存各自模塊運(yùn)行所需固件。
[0027]參見(jiàn)圖2,為本申請(qǐng)固件恢復(fù)方法的一個(gè)實(shí)施例流程圖,該實(shí)施例對(duì)固件恢復(fù)過(guò)程進(jìn)行描述。
[0028]步驟201,當(dāng)所述主CPU啟動(dòng)失敗時(shí),確定模塊中當(dāng)前版本固件是否可用。
[0029]參見(jiàn)圖1,本申請(qǐng)實(shí)施例中需要進(jìn)行固件升級(jí)以及恢復(fù)的模塊(ME、B10S以及LOGIC模塊)都連接在BMC CPU上,以便BMC CPU對(duì)相應(yīng)模塊進(jìn)行操作。以下描述中所提及模塊均指包含固件的模塊。
[0030]當(dāng)主CPU啟動(dòng)失敗時(shí),BMCCPU查詢與其相連的各個(gè)模塊中當(dāng)前版本固件是否可用,以確定是否由于固件升級(jí)導(dǎo)致主CPU無(wú)法啟動(dòng)。BMC CPU對(duì)每一個(gè)模塊均進(jìn)行如下操作:
[0031]獲取模塊中當(dāng)前版本固件的固件信息,對(duì)獲取的固件信息進(jìn)行校驗(yàn),根據(jù)校驗(yàn)結(jié)果進(jìn)行如下處理。
[0032]當(dāng)校驗(yàn)的固件信息不正確時(shí),說(shuō)明該模塊在上一次固件升級(jí)時(shí)可能出錯(cuò),導(dǎo)致寫(xiě)入到模塊中的固件不正確,或者,在運(yùn)行過(guò)程中該固件損壞,此時(shí),確認(rèn)該模塊中當(dāng)前版本固件不可用。
[0033]