欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

自動(dòng)模塊化且安全的引導(dǎo)固件更新的制作方法

文檔序號(hào):6337647閱讀:308來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):自動(dòng)模塊化且安全的引導(dǎo)固件更新的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及維護(hù)計(jì)算機(jī)系統(tǒng)中的BIOS和引導(dǎo)固件代碼。
背景技術(shù)
最初為IBM PC兼容計(jì)算機(jī)開(kāi)發(fā)的基本輸入/輸出系統(tǒng)(BIOS),也稱(chēng)為系統(tǒng)BIOS, 是定義固件接口的實(shí)際標(biāo)準(zhǔn)。BIOS是引導(dǎo)固件,設(shè)計(jì)為由PC在上電時(shí)運(yùn)行的第一個(gè)代 碼。BIOS的初始化功能是識(shí)別、測(cè)試并初始化系統(tǒng)設(shè)備,例如視頻顯示卡、硬盤(pán)、軟盤(pán)和其 它硬件。這將機(jī)器準(zhǔn)備為已知狀態(tài),因此存儲(chǔ)在兼容介質(zhì)中的軟件(例如操作系統(tǒng))可 被加載、執(zhí)行并控制PC。該過(guò)程被稱(chēng)為引導(dǎo)(booting)或啟動(dòng)(booting up),即自引導(dǎo) (bootstrapping)的簡(jiǎn)稱(chēng)。BIOS程序提供基本輸入/輸出功能的小型庫(kù),該庫(kù)可被調(diào)用以操作并控制外圍設(shè) 備,例如鍵盤(pán)、文本顯示功能等。系統(tǒng)上電時(shí),BIOS檢查系統(tǒng)配置設(shè)置并將程序加載到存儲(chǔ) 器中,該程序作為硬件組件和操作系統(tǒng)之間的轉(zhuǎn)換器。例如,當(dāng)用戶(hù)按下鍵盤(pán)上的某個(gè)鍵 時(shí),信號(hào)被發(fā)送到鍵盤(pán)中斷處理程序,中斷處理程序告知處理器這是什么并將其傳輸?shù)讲?作系統(tǒng)。BIOS是為IBM PC所開(kāi)發(fā)的,當(dāng)時(shí)處理器是以16位處理器模式起作用的并且可尋 址的存儲(chǔ)器被限于IM字節(jié),而且代碼反映了 IBM PC AT硬件依賴(lài)性。隨后開(kāi)發(fā)的用于32 位處理器的操作系統(tǒng)開(kāi)始包括設(shè)備驅(qū)動(dòng)程序以處理1/0,而不依賴(lài)于調(diào)用BIOS提供的16位 的運(yùn)行時(shí)接口。這些設(shè)備驅(qū)動(dòng)程序通常由平臺(tái)固件提供并在加載操作系統(tǒng)之前的BIOS初 始化期間加載到存儲(chǔ)器。可擴(kuò)展固件接口(EFI)是定義操作系統(tǒng)和平臺(tái)固件之間的軟件接 口的規(guī)范。EFI定義了 引導(dǎo)服務(wù),包括對(duì)各種設(shè)備、總線(xiàn)、塊和文件服務(wù)的文本和圖形控制 臺(tái)支持;以及運(yùn)行時(shí)服務(wù),例如日期、時(shí)間和NVRAM服務(wù)。更多有關(guān)EFI規(guī)范的信息可參考 URL developer-intel-com/technology/efi/main_specification. htm(其中此處描述的 URL省略了 http://’前綴且將‘.,字符代替為‘_’字符以避免文檔內(nèi)出現(xiàn)活躍的超鏈接)。


圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置成實(shí)現(xiàn)自動(dòng)模塊化引導(dǎo)固件更新的系統(tǒng)的 框圖。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)自動(dòng)模塊化引導(dǎo)固件更新的圖1的系統(tǒng)的
更多細(xì)節(jié)。圖3是示出根據(jù)本發(fā)明一個(gè)實(shí)施例在引導(dǎo)固件模塊化更新管理器和企業(yè)引導(dǎo)固 件模塊化更新服務(wù)之間的交互以執(zhí)行自動(dòng)模塊化弓I導(dǎo)固件更新的流程圖。
圖4示出了本發(fā)明實(shí)施例的組件操作期間的引導(dǎo)序列的各個(gè)階段。圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例在引導(dǎo)系統(tǒng)時(shí)執(zhí)行模塊化引導(dǎo)固件更新的方法的 流程圖。圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的在已執(zhí)行自動(dòng)模塊化引導(dǎo)固件更新之后引導(dǎo)系 統(tǒng)的流程圖。圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于實(shí)現(xiàn)引導(dǎo)固件模塊化更新管理器的虛 擬機(jī)環(huán)境。
具體實(shí)施例方式本發(fā)明的實(shí)施例可提供用于執(zhí)行模塊化引導(dǎo)固件更新的方法、裝置、系統(tǒng)和計(jì)算 機(jī)程序產(chǎn)品。在常規(guī)情況下,通過(guò)提供BIOS/引導(dǎo)固件代碼模塊的整體鏡像并請(qǐng)求本地用 戶(hù)重啟系統(tǒng)以安裝BIOS/引導(dǎo)固件更新來(lái)執(zhí)行BIOS和平臺(tái)固件更新。在一個(gè)實(shí)施例中,一種方法包括接收經(jīng)更新的引導(dǎo)固件代碼模塊以代替用于系 統(tǒng)的多個(gè)引導(dǎo)固件代碼模塊中的一個(gè)引導(dǎo)固件代碼模塊,并且當(dāng)系統(tǒng)被引導(dǎo)時(shí),自動(dòng)使得 加載該經(jīng)更新的引導(dǎo)固件代碼模塊而非上述的那一個(gè)引導(dǎo)固件代碼模塊。當(dāng)系統(tǒng)被引導(dǎo) 時(shí),經(jīng)更新的引導(dǎo)固件代碼模塊僅代替上述的那一個(gè)引導(dǎo)固件代碼模塊而非用于該系統(tǒng)的 所有引導(dǎo)固件代碼模塊。自動(dòng)使得加載經(jīng)更新的引導(dǎo)固件代碼模塊可在無(wú)系統(tǒng)用戶(hù)的動(dòng)作的情況下執(zhí)行。 在一個(gè)實(shí)施例中,該方法進(jìn)一步包括將該經(jīng)更新的引導(dǎo)固件代碼模塊寫(xiě)入固件卷的更新分 區(qū),其中當(dāng)系統(tǒng)被引導(dǎo)時(shí),固件卷的更新分區(qū)和該固件卷中包含這些引導(dǎo)固件代碼模塊的 其他分區(qū)被一并讀取。該方法可包括在將該經(jīng)更新的引導(dǎo)固件模塊寫(xiě)入固件卷的更新分區(qū) 之前認(rèn)證該經(jīng)更新的引導(dǎo)固件模塊的完整性。在一個(gè)實(shí)施例中,經(jīng)更新的引導(dǎo)固件模塊是由服務(wù)器通過(guò)耦合到微處理器的帶外 通信信道提供的。該方法可進(jìn)一步包括在接收該經(jīng)更新的引導(dǎo)固件模塊之前認(rèn)證該服務(wù)器 的完整性。如果在加載該經(jīng)更新的引導(dǎo)固件模塊期間出現(xiàn)問(wèn)題,則該方法可包括使得加載 該一個(gè)原始引導(dǎo)固件模塊。在一個(gè)實(shí)施例中,該方法進(jìn)一步包括在系統(tǒng)被引導(dǎo)之后向從其 接收該經(jīng)更新的引導(dǎo)固件模塊的服務(wù)器提供該經(jīng)更新的引導(dǎo)固件模塊的安裝狀態(tài)。本發(fā)明是對(duì)傳統(tǒng)的BIOS/平臺(tái)固件整體鏡像更新過(guò)程的改進(jìn),并允許BIOS和平臺(tái) 固件的模塊化更新和安全更新。本發(fā)明使得能對(duì)特定的BIOS/平臺(tái)固件代碼模塊/驅(qū)動(dòng)程 序或應(yīng)用程序執(zhí)行更新。隨著平臺(tái)固件逐步復(fù)雜化并提供重要的功能(例如安全特征),企 業(yè)管理服務(wù)器現(xiàn)在能夠立即糾正和提供BIOS和平臺(tái)固件的缺陷,而無(wú)需原始設(shè)備制造商 提供該系統(tǒng)的閃存的整個(gè)BIOS/平臺(tái)固件區(qū)域的新的整體鏡像。本發(fā)明說(shuō)明書(shū)中引述的“一個(gè)實(shí)施例”或“實(shí)施例”是指結(jié)合該實(shí)施例描述的特定 的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因此,貫穿說(shuō)明書(shū)各處出現(xiàn)的短 語(yǔ)“在一個(gè)實(shí)施例中”,“根據(jù)一個(gè)實(shí)施例”或類(lèi)似表達(dá)并不一定全部指同一實(shí)施例。出于說(shuō)明起見(jiàn),闡述了特定的配置和細(xì)節(jié)以提供對(duì)本發(fā)明的透徹理解。但是,本領(lǐng) 域普通技術(shù)人員將明白,本發(fā)明的實(shí)施例可在沒(méi)有此處給出的特定細(xì)節(jié)的情況下實(shí)現(xiàn)。而 且,公知的特征可被忽略或簡(jiǎn)化以免使本發(fā)明含糊。說(shuō)明書(shū)中可給出各種示例。這些僅僅 是本發(fā)明特定實(shí)施例的說(shuō)明。本發(fā)明的范圍并不限定于給出的示例。
在一個(gè)實(shí)施例中,模塊化引導(dǎo)固件更新服務(wù)在安全分區(qū)中提供,安全分區(qū)提供了 隔離且受控的環(huán)境,用于從企業(yè)平臺(tái)管理服務(wù)接收引導(dǎo)固件代碼模塊更新。該安全分區(qū)確 保對(duì)系統(tǒng)的引導(dǎo)固件代碼的更新被驗(yàn)證為起源于得到授權(quán)的源。該隔離且安全的引導(dǎo)固件 模塊化更新服務(wù)環(huán)境可包括多種不同類(lèi)型的分區(qū),包括完整獨(dú)立的硬件分區(qū)(例如,使用 英特爾⑥公司的管理引擎(“ME”),活動(dòng)管理技術(shù)“AMT”),平臺(tái)資源層(“PRL”)和/或其 他相當(dāng)?shù)幕蝾?lèi)似的技術(shù))和/或虛擬化分區(qū)(例如英特爾 公司的虛擬化技術(shù)(“VT”)方 案中的虛擬機(jī))。本領(lǐng)域普通技術(shù)人員應(yīng)明白,虛擬化主機(jī)也可用于實(shí)現(xiàn)ME、AMT和PRL技 術(shù)(以下參見(jiàn)圖7進(jìn)一步詳述)。圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置成實(shí)現(xiàn)模塊化引導(dǎo)固件更新的系統(tǒng)的框圖。 對(duì)應(yīng)于主機(jī)計(jì)算機(jī)系統(tǒng)的平臺(tái)100包括處理器110,該處理器通過(guò)桌面管理接口(DMI)Ill 連接到芯片組120。處理器110向平臺(tái)100提供處理能力,并且可以是單核或多核處理器, 且平臺(tái)100中可包括一個(gè)以上處理器。處理器110可通過(guò)一個(gè)或多個(gè)系統(tǒng)總線(xiàn)、通信路徑 或介質(zhì)(未示出)連接到平臺(tái)100的其它組件。芯片組120包括管理引擎(ME) 130,其可以實(shí)現(xiàn)為獨(dú)立于主機(jī)處理器110操作的嵌 入式微處理器,用于管理平臺(tái)100的配置和操作。在一個(gè)實(shí)施例中,處理器110在主機(jī)操作 系統(tǒng)(未示出)的指導(dǎo)下操作,而管理引擎(ME) 130提供主機(jī)操作系統(tǒng)無(wú)法訪問(wèn)的安全且 隔離的環(huán)境。在一個(gè)實(shí)施例中,管理引擎(ME) 130認(rèn)證用戶(hù),控制對(duì)外圍設(shè)備的訪問(wèn),管理 用于保護(hù)平臺(tái)100的存儲(chǔ)設(shè)備上存儲(chǔ)的數(shù)據(jù)的加密密鑰,并提供通過(guò)網(wǎng)絡(luò)控制器160至企 業(yè)服務(wù)170的接口。使用企業(yè)服務(wù)170,管理引擎(ME)130維持各平臺(tái)(例如平臺(tái)100)的 配置和管理與企業(yè)范圍策略的一致性,根據(jù)本發(fā)明的一個(gè)實(shí)施例,這包括提供用于引導(dǎo)固 件模塊化更新的服務(wù)。引導(dǎo)固件模塊化更新管理器可以實(shí)現(xiàn)為由管理引擎(ME 130)執(zhí)行 的固件。ME 130和企業(yè)服務(wù)170之間的通信經(jīng)由帶外(OOB)通信信道171發(fā)生。在一個(gè) 實(shí)施例中,帶外通信信道171是主機(jī)系統(tǒng)上的管理引擎(ME) 130和管理主機(jī)系統(tǒng)的企業(yè)服 務(wù)170之間的安全通信信道。在芯片組120和管理引擎(ME) 130的制造期間,用于確保平 臺(tái)100和企業(yè)服務(wù)170之間安全通信的加密/解密密鑰可存儲(chǔ)在圖1的閃存190中。在圖1所示實(shí)施例中,管理引擎(ME) 130通過(guò)管理引擎控制器接口(MECI) 131耦 合到微控制器140。在一個(gè)實(shí)施例中,微控制器140是通用控制器,其執(zhí)行存儲(chǔ)命令解碼和 其它加速操作。在所示實(shí)施例中,管理引擎(ME) 130控制微處理器140的行為,而微處理器 140又控制存儲(chǔ)控制器150的行為。微控制器140包括用于存儲(chǔ)控制器150的驅(qū)動(dòng)程序和 與任何盤(pán)加密功能相關(guān)的邏輯。存儲(chǔ)控制器150是存儲(chǔ)設(shè)備(例如存儲(chǔ)設(shè)備15 的控制 器,并使微處理器140和ME 130能夠訪問(wèn)存儲(chǔ)設(shè)備152上所存儲(chǔ)的數(shù)據(jù)。平臺(tái)100進(jìn)一步包括存儲(chǔ)器設(shè)備,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)112、芯片組 120內(nèi)的靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM) 122、和閃存190,以及可通過(guò)存儲(chǔ)控制器150訪問(wèn)的存 儲(chǔ)設(shè)備152。這些存儲(chǔ)器設(shè)備可包括隨機(jī)存取存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)。出于本 公開(kāi)起見(jiàn),術(shù)語(yǔ)“ROM”通常用于指非易失性存儲(chǔ)器設(shè)備,例如可擦可編程ROM(EPROM)、電可 擦可編程ROM(EEPROM)、快閃ROM、閃存等。存儲(chǔ)設(shè)備152可包括海量存儲(chǔ)設(shè)備,例如集成驅(qū) 動(dòng)電子(IDE)硬驅(qū)動(dòng)器,和/或其它設(shè)備或介質(zhì),例如軟盤(pán)、光盤(pán)、磁帶、閃存、記憶棒、數(shù)字 視頻盤(pán)、生物學(xué)存儲(chǔ)等。
芯片組120可通過(guò)閃存接口 191訪問(wèn)閃存190。存儲(chǔ)設(shè)備152上和/或存儲(chǔ)器設(shè) 備DRAM 112, SRAM 122、以及閃存190中存儲(chǔ)的數(shù)據(jù)可被加密。閃存190包括用于初始化平臺(tái)100的固件。該初始化固件包括用于識(shí)別并初始化 系統(tǒng)組件硬件(例如視頻顯示卡和硬盤(pán))和包括管理引擎(ME) 130在內(nèi)的一些其它硬件設(shè) 備的基本輸入/輸出系統(tǒng)¢10 固件192。BIOS固件192準(zhǔn)備平臺(tái)100的系統(tǒng)組件硬件 以在已知的低能力狀態(tài)中操作,因此存儲(chǔ)在各個(gè)介質(zhì)上的其它軟件程序(包括操作系統(tǒng)) 可被加載、執(zhí)行并控制平臺(tái)100。BIOS固件192包括BIOS/ΜΕ通信模塊193,其在引導(dǎo)過(guò)程 期間啟動(dòng)管理引擎(ME) 130的初始配置。在一個(gè)實(shí)施例中,管理引擎(ME) 130向BI0S/ME 通信模塊193注冊(cè)以剛好在為平臺(tái)100加載操作系統(tǒng)之前接收通知。該通知使管理引擎 (ME) 130能夠執(zhí)行為加載操作系統(tǒng)作準(zhǔn)備的特定指令。閃存190還包括用于配置網(wǎng)絡(luò)控制器160的網(wǎng)絡(luò)控制器固件195、和用于配置芯片 組120的芯片組固件196。閃存190還包括數(shù)據(jù)區(qū)198。在一個(gè)實(shí)施例中,數(shù)據(jù)區(qū)198被加 密并僅能被管理引擎(ME) 130讀取。ME 130用于提供BIOS/引導(dǎo)固件模塊化更新管理服務(wù) 的信息可存儲(chǔ)在閃存190的數(shù)據(jù)區(qū)198中或存儲(chǔ)在存儲(chǔ)設(shè)備152上。傳統(tǒng)地,用于初始化平臺(tái)、啟動(dòng)BIOS和準(zhǔn)備該系統(tǒng)以加載操作系統(tǒng)的所有固件已 被提供作為整體鏡像,其被加載到非易失性存儲(chǔ)器(例如閃存190)中。例如,閃存190可 被制造商制備成包括整個(gè)BIOS固件192的整體鏡像。如果僅需要更新BIOS固件192的一 個(gè)代碼模塊以糾正引導(dǎo)固件的問(wèn)題,則BIOS固件192的整個(gè)整體鏡像均需要被下載到閃存 190。處理器110還可通信地耦合到附加組件,例如視頻控制器、小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)、網(wǎng)絡(luò)控制器、通用串行總線(xiàn)(USB)控制器、輸入設(shè)備(例如鍵盤(pán)和鼠標(biāo))等。平臺(tái) 100還可包括一個(gè)或多個(gè)橋或中樞,例如存儲(chǔ)器控制器中樞、輸入/輸出(1/0)控制器中樞、 PCI根橋等,以通信地耦合各種系統(tǒng)組件。此處使用的術(shù)語(yǔ)“總線(xiàn)”可用于表示共享通信路 徑以及點(diǎn)對(duì)點(diǎn)路徑。某些組件例如網(wǎng)絡(luò)控制器160可以實(shí)現(xiàn)為具有接口的適配器卡(例如PCI連接 器),以與總線(xiàn)通信。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)設(shè)備可以使用組件例如可編程或不可編 程邏輯設(shè)備或陣列、專(zhuān)用集成電路(ASIC)、嵌入式計(jì)算機(jī)、智能卡等實(shí)現(xiàn)為嵌入式控制器。此處使用的術(shù)語(yǔ)“處理系統(tǒng)”和“數(shù)據(jù)處理系統(tǒng)”旨在廣泛地包括單機(jī)、或通信地 耦合的一起操作的多個(gè)機(jī)器或設(shè)備的系統(tǒng)。示例處理系統(tǒng)包括但不限于分布式計(jì)算系統(tǒng)、 超級(jí)計(jì)算機(jī)、高性能計(jì)算系統(tǒng)、計(jì)算機(jī)集群、大型計(jì)算機(jī)、迷你計(jì)算機(jī)、客戶(hù)端-服務(wù)器系 統(tǒng)、個(gè)人電腦、工作站、服務(wù)器、便攜式計(jì)算機(jī)、膝上電腦、平板計(jì)算機(jī)、電話(huà)、個(gè)人數(shù)字助理 (PDA)、手持設(shè)備、娛樂(lè)設(shè)備(例如音頻和/或視頻設(shè)備)、以及其它用于處理或傳輸信息的 設(shè)備。平臺(tái)100可至少部分地由來(lái)自常規(guī)輸入設(shè)備(例如鍵盤(pán),鼠標(biāo)等)的輸入和/或 由從其它機(jī)器、生物測(cè)定反饋或其它輸入源或信號(hào)接收到的命令所控制。平臺(tái)100可使用 例如通過(guò)網(wǎng)絡(luò)接口控制器(NIC) 160、調(diào)制解調(diào)器、或其它通信端口或耦合與一個(gè)或多個(gè)遠(yuǎn) 程數(shù)據(jù)處理系統(tǒng)(未示出)的一個(gè)或多個(gè)連接。平臺(tái)100可通過(guò)物理和/或邏輯網(wǎng)絡(luò),例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、內(nèi)聯(lián)網(wǎng)、 互聯(lián)網(wǎng)等,與其它處理系統(tǒng)(未示出)互連。涉及網(wǎng)絡(luò)的通信可使用各種有線(xiàn)和/或無(wú)線(xiàn)短程或長(zhǎng)程載波和協(xié)議,包括射頻(RF)、衛(wèi)星、微波、電氣電子工程師協(xié)會(huì)(IEEE)802. 11、 藍(lán)牙、光纖、紅外、電纜、激光等。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)自動(dòng)模塊化引導(dǎo)固件更新的圖1的管理引 擎(ME) 130和企業(yè)服務(wù)170的更多細(xì)節(jié)。ME 130包括用于在平臺(tái)100上執(zhí)行自動(dòng)引導(dǎo)固件 模塊化更新的邏輯,并且經(jīng)由帶外通信信道171與企業(yè)服務(wù)170的引導(dǎo)固件模塊化更新服 務(wù)270通信。在芯片組120內(nèi),示出在圖1的芯片組固件196已被加載之后的管理引擎130。管 理引擎130包括ME內(nèi)核210和ME公用服務(wù)220,ME內(nèi)核210向管理引擎130提供基本操 作能力,ME公用服務(wù)220提供基本服務(wù),例如網(wǎng)絡(luò)通信、安全、密碼和定時(shí)器服務(wù)。管理引 擎130還包括帶外(OOB)通信模塊230。OOB通信模塊230通過(guò)網(wǎng)絡(luò)控制器160促進(jìn)平臺(tái) 100的組件與企業(yè)服務(wù)170的相應(yīng)組件的通信。管理引擎230還包括引導(dǎo)固件模塊化更新 管理器M0,其管理引導(dǎo)固件模塊化更新過(guò)程并將隨后詳細(xì)說(shuō)明。管理引擎(ME) 130還包括管理模塊250、安全模塊255和入侵檢測(cè)模塊沈0。這些 模塊與企業(yè)服務(wù)170聯(lián)合使用以維護(hù)平臺(tái)(例如平臺(tái)100)的配置和管理與企業(yè)范圍策略 的一致性。OOB服務(wù)器通信模塊230通過(guò)網(wǎng)絡(luò)控制器160促進(jìn)管理模塊250、安全模塊255 和入侵檢測(cè)模塊沈0與企業(yè)服務(wù)170的相應(yīng)模塊(未示出)的通信。根據(jù)本發(fā)明的一個(gè)實(shí)施例,引導(dǎo)固件模塊化更新管理器240與引導(dǎo)固件模塊化更 新服務(wù)270聯(lián)合操作以啟動(dòng)自動(dòng)模塊化引導(dǎo)固件更新。OOB通信模塊230通過(guò)網(wǎng)絡(luò)控制器 160促進(jìn)模塊化引導(dǎo)固件更新管理器240與引導(dǎo)固件模塊化更新服務(wù)270之間的通信。在 一個(gè)實(shí)施例中,帶外通信信道171用于向平臺(tái)100傳輸經(jīng)更新的引導(dǎo)固件代碼模塊。在所 示實(shí)施例中,企業(yè)服務(wù)170具有企業(yè)數(shù)據(jù)儲(chǔ)存庫(kù)172以存儲(chǔ)信息,例如安裝在主機(jī)系統(tǒng)上的 引導(dǎo)固件代碼模塊的版本、加密密鑰、和引導(dǎo)固件模塊化更新服務(wù)270使用的其它數(shù)據(jù)。引 導(dǎo)固件模塊化更新管理器240和引導(dǎo)固件模塊化更新服務(wù)270的操作將參照?qǐng)D3更詳細(xì)地 說(shuō)明。圖3是示出根據(jù)本發(fā)明一個(gè)實(shí)施例在引導(dǎo)固件模塊化更新管理器和企業(yè)引導(dǎo)固 件模塊化更新服務(wù)之間的交互以執(zhí)行自動(dòng)模塊化弓I導(dǎo)固件更新的流程圖。圖1和圖2的企業(yè)服務(wù)170作用于維護(hù)平臺(tái)(例如平臺(tái)100)的配置和管理與企 業(yè)范圍策略的一致性。在企業(yè)服務(wù)170和平臺(tái)100通過(guò)OOB通信信道171進(jìn)行通信期間, 引導(dǎo)固件模塊化更新管理器240與引導(dǎo)固件模塊化更新服務(wù)270可就平臺(tái)100上的引導(dǎo)固 件代碼模塊進(jìn)行通信。在動(dòng)作3. 1,引導(dǎo)固件模塊化更新管理器240向引導(dǎo)固件模塊化更新服務(wù)270核實(shí) 是否有引導(dǎo)固件更新。在動(dòng)作3. 2,如果已更新涉及平臺(tái)100的引導(dǎo)固件代碼模塊,引導(dǎo)固 件模塊化更新服務(wù)270向引導(dǎo)固件模塊化更新管理器240發(fā)送引導(dǎo)固件更新請(qǐng)求連同經(jīng)更 新的代碼模塊/驅(qū)動(dòng)程序。雖然圖3示出通信始于引導(dǎo)固件模塊化更新管理器M0,但引導(dǎo) 固件模塊化更新管理器240與引導(dǎo)固件模塊化更新服務(wù)270之間的通信由引導(dǎo)固件模塊化 更新服務(wù)270在服務(wù)器端發(fā)起也落在本發(fā)明的范圍內(nèi)。在動(dòng)作3. 3,引導(dǎo)固件模塊化更新管理器240檢查經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序 的完整性,包括驗(yàn)證更新請(qǐng)求是可信的以及確認(rèn)發(fā)送者的身份是引導(dǎo)固件模塊化更新服務(wù) 270。在一個(gè)實(shí)施例中,引導(dǎo)固件模塊化更新管理器240驗(yàn)證引導(dǎo)固件更新的完整性是通過(guò)從經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序內(nèi)容計(jì)算簽名并將計(jì)算出的簽名與由引導(dǎo)固件模塊化更 新服務(wù)270在伴隨著經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序的受完整性保護(hù)(加密)的清單中提供 的簽名作比較來(lái)實(shí)現(xiàn)的。該基于代碼模塊/驅(qū)動(dòng)程序的簽名的比較確認(rèn)經(jīng)更新的模塊/驅(qū) 動(dòng)程序在從引導(dǎo)固件模塊化更新服務(wù)270傳輸期間沒(méi)有受到篡改。經(jīng)更新的代碼模塊/驅(qū) 動(dòng)程序通過(guò)加密被進(jìn)一步保護(hù),且引導(dǎo)固件模塊化更新管理器240獲得解密密鑰以解密經(jīng) 更新的代碼模塊/驅(qū)動(dòng)程序。在一個(gè)實(shí)施例中,加密/解密密鑰在芯片組120和管理引擎 (ME) 130的制造期間被存儲(chǔ)在圖1的閃存190的數(shù)據(jù)區(qū)198中,并由引導(dǎo)固件模塊化更新管 理器240從閃存190獲取。如果在動(dòng)作3. 3中確認(rèn)了經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序的完整性,則在動(dòng)作3. 4 中,引導(dǎo)固件模塊化更新管理器240用該經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序來(lái)更新固件卷。在 一個(gè)實(shí)施例中,經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序被放入該固件卷的單獨(dú)的專(zhuān)用分區(qū)中以促進(jìn) 模塊化更新,而原始引導(dǎo)固件代碼模塊的整體鏡像駐留在該固件卷的不同分區(qū)中。引導(dǎo)固 件模塊化更新管理器240管理對(duì)固件卷的分區(qū),且只有引導(dǎo)固件模塊化更新管理器240能 夠?qū)碳淼哪K化更新分區(qū)進(jìn)行寫(xiě)訪問(wèn)。固件卷的模塊化更新分區(qū)還存儲(chǔ)經(jīng)更新的代碼 模塊/驅(qū)動(dòng)程序的標(biāo)識(shí)符,其使得經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序能用于代替原始代碼模塊 /驅(qū)動(dòng)程序。在動(dòng)作3. 5,引導(dǎo)固件模塊化更新管理器240通知引導(dǎo)固件模塊化更新服務(wù)270 關(guān)于引導(dǎo)固件更新請(qǐng)求的狀態(tài)。一旦經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序已被加載到固件經(jīng)的模 塊化更新分區(qū)中,其將在系統(tǒng)引導(dǎo)時(shí)自動(dòng)被加載。在動(dòng)作3. 6,引導(dǎo)固件模塊化更新管理器 240可以請(qǐng)求系統(tǒng)重啟,以激活經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序。系統(tǒng)引導(dǎo)序列隨后參考圖4 更詳細(xì)地說(shuō)明。在由于動(dòng)作3. 6而執(zhí)行的系統(tǒng)引導(dǎo)序列期間,引導(dǎo)固件模塊化更新調(diào)度器 被調(diào)用以確保經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序替換原始代碼模塊/驅(qū)動(dòng)程序。由引導(dǎo)固件模 塊化更新調(diào)度器在引導(dǎo)序列期間執(zhí)行的動(dòng)作隨后參考圖5和6進(jìn)行進(jìn)一步說(shuō)明。引導(dǎo)序列期間,如動(dòng)作3. 7所示,引導(dǎo)固件模塊化更新管理器240可獲得能在消息 中傳達(dá)給引導(dǎo)固件模塊化更新服務(wù)270的信息。例如,驅(qū)動(dòng)程序調(diào)度器(隨后參考圖4和 6說(shuō)明)可通知引導(dǎo)固件模塊化更新管理器240關(guān)于經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序的處理 何時(shí)開(kāi)始。在動(dòng)作3. 8,在各個(gè)引導(dǎo)固件代碼模塊已被加載到存儲(chǔ)器中之后,BIOS 310嘗試 用經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序進(jìn)行引導(dǎo)。如果BIOS 310引導(dǎo)失敗,則可用來(lái)自在駐留有 原始整體鏡像的固件卷分區(qū)中所存儲(chǔ)的原始引導(dǎo)固件代碼模塊鏡像的代碼模塊/驅(qū)動(dòng)程 序的原始版本進(jìn)行再次引導(dǎo)BIOS 310的另一次嘗試。在動(dòng)作3. 9,引導(dǎo)固件更新管理器240從驅(qū)動(dòng)程序調(diào)度器接收關(guān)于代碼模塊/驅(qū)動(dòng) 程序更新的狀態(tài)的信息。例如,即使經(jīng)更新的引導(dǎo)固件代碼模塊可能已被加載到存儲(chǔ)器中, 但它可能無(wú)法正確執(zhí)行。在動(dòng)作3. 10,引導(dǎo)固件更新管理器240發(fā)送確認(rèn)消息給引導(dǎo)固件 模塊化更新服務(wù)270,該確認(rèn)消息帶有在動(dòng)作3. 2中引導(dǎo)固件模塊化更新服務(wù)270所請(qǐng)求的 引導(dǎo)固件更新的狀態(tài)。在系統(tǒng)引導(dǎo)序列期間,從上電開(kāi)始,發(fā)生一系列硬件初始化階段,直到操作系統(tǒng)被 加載并承擔(dān)系統(tǒng)的控制。此處,根據(jù)在URLwww-intel-com/technology/framework處可獲 得的Intel Platform Innovation Framework for EFI (Extensible Firmware Interface) Architecture Specification (version 0. 9, September 16,2003)(英特爾 EFI (可擴(kuò)展固件接口 )架構(gòu)平臺(tái)創(chuàng)新框架規(guī)范(0.9版,2003年9月16日))進(jìn)行說(shuō)明。該框架引導(dǎo)序 列將一般性地參考圖4進(jìn)行說(shuō)明以提供本發(fā)明隨后討論的上下文。本發(fā)明并不限制于所述 特定框架下的操作。參照?qǐng)D4,示出了本發(fā)明一個(gè)實(shí)施例的組件操作期間的引導(dǎo)序列的各個(gè)階段。該 框架引導(dǎo)序列開(kāi)始于安全階段410,其在系統(tǒng)上電時(shí)執(zhí)行。預(yù)驗(yàn)證器411在安全階段410 期間執(zhí)行以認(rèn)證BIOS。在現(xiàn)有系統(tǒng)中,預(yù)驗(yàn)證器411和安全階段410提供核心測(cè)量可信根 (CRTM),也就是用于認(rèn)證BIOS代碼的足夠代碼,并且在平臺(tái)支持的情況下,開(kāi)始可信平臺(tái) 模塊(TPM)。關(guān)于 TPM 的更多信息可參見(jiàn) URL www-trustedcomputinggroup-org。在安全階段410完成時(shí),預(yù)EFI初始化(PEI)階段420初始化處理器421、芯片組 423和主板425。PEI階段420初始化并描述包含用于后續(xù)階段的代碼的最小量的系統(tǒng)RAM 和固件卷。在PEI階段420期間,準(zhǔn)備在驅(qū)動(dòng)程序執(zhí)行環(huán)境(DXE)階段430中安全地啟動(dòng) EFI驅(qū)動(dòng)程序調(diào)度器432和內(nèi)部服務(wù)434。在DXE階段430,EFI驅(qū)動(dòng)程序調(diào)度器432作用 于加載設(shè)備、總線(xiàn)和服務(wù)驅(qū)動(dòng)程序436,以構(gòu)建能支持引導(dǎo)管理器引導(dǎo)操作系統(tǒng)的環(huán)境。參 考本發(fā)明,在DXE階段430中使用了 EFI驅(qū)動(dòng)程序調(diào)度器的修改版本,此處稱(chēng)為引導(dǎo)固件模 塊化更新調(diào)度器。在DXE階段430后,引導(dǎo)設(shè)備選擇(BDQ階段440加載引導(dǎo)管理器442。 在BDS階段440后,發(fā)生臨時(shí)系統(tǒng)加載(TSL)階段450,在此階段期間引導(dǎo)操作系統(tǒng)。引導(dǎo) 管理器442啟動(dòng)臨時(shí)OS引導(dǎo)加載器456,其創(chuàng)建能夠運(yùn)行無(wú)OS的應(yīng)用程序452的臨時(shí)OS 環(huán)境454。引導(dǎo)管理器442還啟動(dòng)最終OS引導(dǎo)管理器458,其引導(dǎo)操作系統(tǒng)。在運(yùn)行時(shí)階 段460期間,系統(tǒng)創(chuàng)建能夠運(yùn)行有OS的應(yīng)用程序462的最終OS環(huán)境464。在運(yùn)行時(shí)階段 460期間,該系統(tǒng)在操作系統(tǒng)的控制下操作。在OS運(yùn)行時(shí)(RT階段460)期間有系統(tǒng)故障 時(shí),固件PEI階段420和DXE階段430流可在后生命階段470中被重構(gòu),以允許無(wú)OS的恢 復(fù)活動(dòng)。在引導(dǎo)固件模塊化更新調(diào)度器(這是圖4的EFI驅(qū)動(dòng)程序調(diào)度器432的修改版 本)的控制下,在驅(qū)動(dòng)程序執(zhí)行環(huán)境(DXE)階段430期間發(fā)生加載根據(jù)本發(fā)明的經(jīng)更新的 引導(dǎo)固件代碼模塊/驅(qū)動(dòng)程序,以促進(jìn)根據(jù)本發(fā)明實(shí)施例的模塊化引導(dǎo)固件更新。引導(dǎo)固 件模塊化更新調(diào)度器的操作參考圖5和圖6進(jìn)一步詳細(xì)說(shuō)明。圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例在引導(dǎo)系統(tǒng)時(shí)執(zhí)行模塊化引導(dǎo)固件更新的方法的 流程圖。在“在引導(dǎo)期間,BIOS模塊化更新調(diào)度器檢查用于經(jīng)更新的驅(qū)動(dòng)程序的模塊化 BIOS更新固件卷分區(qū)”步驟510中,引導(dǎo)固件模塊化更新調(diào)度器檢查固件卷中用于經(jīng)更新 的代碼模塊/驅(qū)動(dòng)程序的模塊化更新分區(qū)??刂齐S后進(jìn)行到“引導(dǎo)固件模塊化更新調(diào)度器 從BIOS模塊化更新固件卷分區(qū)加載經(jīng)更新的驅(qū)動(dòng)程序”步驟520,其中引導(dǎo)固件模塊化更 新調(diào)度器將經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序加載到存儲(chǔ)器中,而不是來(lái)自在固件卷的不同分 區(qū)中所存儲(chǔ)的整體BIOS鏡像的原始代碼模塊/驅(qū)動(dòng)程序??刂齐S后進(jìn)行到“引導(dǎo)BIOS”步 驟530,其中在圖4的DXE階段430的結(jié)束處引導(dǎo)BIOS??刂齐S后進(jìn)行到“經(jīng)更新的驅(qū)動(dòng) 程序失?。?”判斷點(diǎn)430,在此判斷在BIOS引導(dǎo)期間,經(jīng)更新的驅(qū)動(dòng)程序是否失敗。若經(jīng)更 新的驅(qū)動(dòng)程序失敗,則控制進(jìn)行到“從原始固件卷分區(qū)加載原始驅(qū)動(dòng)程序”步驟M0,其中從 存儲(chǔ)在固件卷的原始分區(qū)中的整體BIOS鏡像加載原始代碼模塊/驅(qū)動(dòng)程序??刂齐S后進(jìn) 行到“繼續(xù)引導(dǎo)0S”步驟550,其中引導(dǎo)序列繼續(xù)引導(dǎo)操作系統(tǒng)。當(dāng)引導(dǎo)序列繼續(xù)進(jìn)行時(shí), 控制進(jìn)行到“向服務(wù)器提供引導(dǎo)固件模塊化更新的狀態(tài)”步驟560,其中如參照?qǐng)D3描述的,BIOS模塊化更新管理器240向引導(dǎo)固件模塊化更新服務(wù)270提供狀態(tài)更新??刂齐S后進(jìn)行 到“服務(wù)器響應(yīng)引導(dǎo)固件模塊化更新的狀態(tài)”步驟570,其中引導(dǎo)固件模塊化更新服務(wù)270 可響應(yīng)接收到的關(guān)于模塊化引導(dǎo)固件更新的狀態(tài)消息。例如,如果模塊化引導(dǎo)固件更新故 障,引導(dǎo)固件模塊化更新服務(wù)270可在后續(xù)更新請(qǐng)求中提供經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序 的另一版本。圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的在已執(zhí)行自動(dòng)模塊化引導(dǎo)固件更新之后引導(dǎo)系 統(tǒng)的流程圖。圖6的流程圖示出了 DXE階段630和BDS階段640期間發(fā)生的活動(dòng),其對(duì)應(yīng) 于圖4的DXE階段430和BDS階段440。在執(zhí)行DXE階段630之前,已執(zhí)行了類(lèi)似于圖4的 SEC階段410的安全階段和類(lèi)似于圖4的PEI階段420的PEI階段。先前的PEI階段將已 初始化了交接塊列表604,其是包含從引導(dǎo)序列中發(fā)生處理器、芯片組和主存儲(chǔ)器的初始化 的先前階段傳遞而來(lái)的信息的數(shù)據(jù)結(jié)構(gòu)。交接塊列表604將包含關(guān)于在系統(tǒng)的初始化期間 發(fā)現(xiàn)的固件卷的信息,包括在固件卷硬件620中發(fā)現(xiàn)的固件卷。例如,在引導(dǎo)圖1所示的系 統(tǒng)時(shí)的PEI階段期間,將發(fā)現(xiàn)包含用于BIOS固件192和芯片組固件196的分區(qū)的固件卷。 所發(fā)現(xiàn)的每個(gè)單獨(dú)固件卷可分別具有其自己的由PEI階段提供的交接塊。交接塊列表604 詳述包含固件文件的固件卷的位置并包括每個(gè)固件卷的基地址和長(zhǎng)度。DXE初始程序加載 (IPL)初始化模塊可使用交接塊列表604來(lái)發(fā)現(xiàn)DXE基礎(chǔ)固件文件的位置。先前的PEI階段還將發(fā)現(xiàn)并啟動(dòng)DXE基礎(chǔ)代碼606。DXE基礎(chǔ)代碼606產(chǎn)生一組 引導(dǎo)服務(wù)、運(yùn)行時(shí)服務(wù)和DXE服務(wù)。DXE基礎(chǔ)代碼606使用交接塊列表604來(lái)發(fā)現(xiàn)要執(zhí)行的 驅(qū)動(dòng)程序。DXE基礎(chǔ)代碼606被設(shè)計(jì)為完全便攜的而無(wú)處理器、芯片組或平臺(tái)依賴(lài)性。DXE 基礎(chǔ)代碼606僅其初始狀態(tài)依賴(lài)交接塊列表604。這種單一依賴(lài)性意味著DXE基礎(chǔ)代碼606 不依賴(lài)于來(lái)自先前階段的任何服務(wù),因此一旦交接塊列表604被傳遞到DXE基礎(chǔ)代碼606, 所有先前階段都可被卸載。DXE基礎(chǔ)代碼606包括非硬編碼地址。因此,DXE基礎(chǔ)代碼606 可被加載到物理存儲(chǔ)器中的任何位置,并且無(wú)論物理存儲(chǔ)器或固件卷位于處理器物理地址 空間中何處,DXE基礎(chǔ)代碼606均能正確地起作用。DXE基礎(chǔ)代碼606不包括任何因處理器 而異的、因芯片組而異的或因平臺(tái)而異的信息。相反,DXE基礎(chǔ)代碼606是通過(guò)一組體系結(jié) 構(gòu)協(xié)議接口從系統(tǒng)硬件中抽象出來(lái)的。這些體系結(jié)構(gòu)協(xié)議接口由被DXE調(diào)度器(此處表示 為引導(dǎo)固件模塊化更新調(diào)度器610)調(diào)用的一組DXE驅(qū)動(dòng)程序產(chǎn)生。DXE基礎(chǔ)代碼606產(chǎn)生EFI系統(tǒng)表及其相關(guān)聯(lián)的一組EFI引導(dǎo)服務(wù)和EFI運(yùn)行時(shí) 服務(wù)。DXE基礎(chǔ)代碼606還包括引導(dǎo)固件模塊化更新調(diào)度器610。在啟動(dòng)DXE基礎(chǔ)代碼606 后,控制被傳到DXE調(diào)度器(在該情形中是引導(dǎo)固件模塊化更新調(diào)度器610),其負(fù)責(zé)加載和 調(diào)用在交接塊(例如交接塊列表604)中描述的固件卷中發(fā)現(xiàn)的DXE驅(qū)動(dòng)程序。固件卷硬件620是包含固件代碼和/或數(shù)據(jù)的永久物理儲(chǔ)存庫(kù)。固件卷硬件通常 是閃存組件(例如圖1的閃存190),但也可是某種其它類(lèi)型的永久存儲(chǔ)。單個(gè)物理固件設(shè) 備可被分為更小片以構(gòu)造多個(gè)邏輯固件設(shè)備。類(lèi)似地,多個(gè)物理固件設(shè)備可被聚集成一個(gè) 較大的邏輯固件設(shè)備。邏輯固件設(shè)備被稱(chēng)為固件卷。在EFI框架內(nèi),固件卷是數(shù)據(jù)和/或 代碼的基本存儲(chǔ)庫(kù)。每個(gè)固件卷被組織成文件系統(tǒng)。這樣,文件是EFI框架固件的基本存 儲(chǔ)單元。如果從安全(SEC)或預(yù)EFI初始化(PEI)階段或較早地在驅(qū)動(dòng)程序執(zhí)行環(huán) 境(DXE)階段訪問(wèn)固件卷內(nèi)包含的文件,則固件卷可以是映射的存儲(chǔ)器并符合框架
11固件文件系統(tǒng)(FFS)格式,該格式在 URLwww-intel-com/technology/framework 處 可獲得的 Intel Platform InnovationFramework for EFI Firmware File System Specification(英特固件文件系統(tǒng)平臺(tái)創(chuàng)新框架規(guī)范)中定義。SEC、PEI和DXE 階段隨后按需要解析FFS和框架固件鏡像格式。引導(dǎo)固件模塊化更新調(diào)度器610在交接塊列表604中描述的固件卷中搜索驅(qū)動(dòng)程 序。固件卷可具有稱(chēng)為先驗(yàn)文件的相關(guān)聯(lián)文件,其包括應(yīng)當(dāng)被首先加載和執(zhí)行的DXE驅(qū)動(dòng) 程序的列表。一旦來(lái)自先驗(yàn)文件的DXE驅(qū)動(dòng)程序已被加載和執(zhí)行,固件卷中的剩余DXE驅(qū) 動(dòng)程序內(nèi)的依賴(lài)性表達(dá)可被評(píng)估以確定其被加載和執(zhí)行的順序。在一個(gè)實(shí)施例中,在先驗(yàn)文件中的DXE驅(qū)動(dòng)程序和所有其依存性表達(dá)評(píng)估為真的 DXE驅(qū)動(dòng)程序被加載和執(zhí)行后,控制從引導(dǎo)固件模塊化更新調(diào)度器610傳到BDS 642。BDS 642負(fù)責(zé)在BDS階段640建立控制臺(tái)設(shè)備并嘗試引導(dǎo)操作系統(tǒng)。當(dāng)控制臺(tái)設(shè)備被創(chuàng)建且對(duì) 引導(dǎo)設(shè)備的訪問(wèn)被創(chuàng)建時(shí),可發(fā)現(xiàn)其它的固件卷。若BDS 642無(wú)法啟動(dòng)控制臺(tái)設(shè)備或訪問(wèn) 引導(dǎo)設(shè)備,則其再次調(diào)用引導(dǎo)固件模塊化更新調(diào)度器610。該調(diào)用使引導(dǎo)固件模塊化更新 調(diào)度器610從自引導(dǎo)固件模塊化更新調(diào)度器610上次被調(diào)用起已發(fā)現(xiàn)的固件卷加載和執(zhí)行 DXE驅(qū)動(dòng)程序632。一旦引導(dǎo)固件模塊化更新調(diào)度器已加載并執(zhí)行它能進(jìn)行的所有DXE驅(qū) 動(dòng)程序632,控制再次返回BDS 642以繼續(xù)OS引導(dǎo)過(guò)程。EFI固件卷協(xié)議允許在DXE階段期間運(yùn)行的程序訪問(wèn)固件卷,包括沒(méi)有存儲(chǔ)器映 射的固件卷和沒(méi)有實(shí)現(xiàn)FFS的固件卷。在所示實(shí)施例中,BIOS/模塊化更新調(diào)度器610使 用固件卷協(xié)議驅(qū)動(dòng)程序6 利用包含在EFI固件卷協(xié)議內(nèi)的文件抽象來(lái)訪問(wèn)固件卷。在所示的實(shí)施例中,固件卷協(xié)議由固件卷協(xié)議驅(qū)動(dòng)程序6 產(chǎn)生,固件卷協(xié)議驅(qū) 動(dòng)程序6 用作文件系統(tǒng)驅(qū)動(dòng)程序并使用固件卷塊協(xié)議驅(qū)動(dòng)程序6M實(shí)現(xiàn)的EFI固件卷 塊協(xié)議來(lái)訪問(wèn)固件卷硬件620。固件卷塊協(xié)議驅(qū)動(dòng)程序624向固件卷硬件620提供塊級(jí) 訪問(wèn)。雖然驅(qū)動(dòng)程序6M和626(示為實(shí)現(xiàn)EFI固件卷塊協(xié)議)提供固件卷硬件620的 抽象,在固件卷塊驅(qū)動(dòng)程序之下的任意數(shù)量的抽象可被用于滿(mǎn)足平臺(tái)需求。EFI固件卷塊 協(xié)議提供字節(jié)級(jí)讀/寫(xiě)功能和塊級(jí)擦除功能。EFI固件卷塊協(xié)議進(jìn)一步揭露設(shè)備硬性特 性,例如可被要求保護(hù)固件免受不期望的覆蓋和/或擦除。文件系統(tǒng)驅(qū)動(dòng)程序(例如固件 卷協(xié)議驅(qū)動(dòng)程序626)可被層疊在在固件卷塊協(xié)議驅(qū)動(dòng)程序之上,以實(shí)現(xiàn)對(duì)固件卷的文件 級(jí)訪問(wèn)。固件卷協(xié)議抽象文件系統(tǒng),該文件系統(tǒng)用于格式化固件卷和可能存在的設(shè)備硬 性特性。更多信息(包括關(guān)于固件卷協(xié)議的信息)參見(jiàn)URLwww-intel-com/technology/ framework處可獲得的Jntel PIatform Innovation Framework for EFI Firmware Volume Specification (英特固件卷平臺(tái)創(chuàng)新框架規(guī)范)。弓丨導(dǎo)固件模塊化更新調(diào)度器610在預(yù)引導(dǎo)期間操作以調(diào)度驅(qū)動(dòng)程序進(jìn)行執(zhí)行。在 一個(gè)實(shí)施例中,引導(dǎo)固件模塊化更新調(diào)度器610提供調(diào)度服務(wù)以從固件卷加載并執(zhí)行DXE 驅(qū)動(dòng)程序;提供調(diào)度服務(wù)以清除關(guān)于存儲(chǔ)在固件卷中的組件的按需調(diào)度(SOR)標(biāo)志;提供 信任服務(wù)以將固件卷中存儲(chǔ)的文件的狀態(tài)從不信任狀態(tài)改變?yōu)樾湃螤顟B(tài);以及提供處理固 件卷服務(wù)以創(chuàng)建用于系統(tǒng)存儲(chǔ)器中存在的固件卷的固件卷句柄。在一個(gè)實(shí)施例中,引導(dǎo)固 件模塊化更新調(diào)度器查找所有可用固件卷并創(chuàng)建將基于版本信息來(lái)加載的驅(qū)動(dòng)程序/代 碼模塊的列表。如上所述,引導(dǎo)固件模塊化更新調(diào)度器610首先查找用于經(jīng)更新的驅(qū)動(dòng)程 序的FV分區(qū)622以尋找經(jīng)更新的驅(qū)動(dòng)程序,隨后查找固件卷中用于原始驅(qū)動(dòng)程序的單獨(dú)分區(qū)。待更新的引導(dǎo)固件代碼模塊將具有定義需要在預(yù)引導(dǎo)期間加載的最新EFI驅(qū)動(dòng)程序/ 模塊的版本字符串。此處描述的引導(dǎo)固件模塊化更新機(jī)制使各個(gè)引導(dǎo)固件代碼模塊能夠被更新,而不 需要下載并更新整個(gè)引導(dǎo)固件整體鏡像。此處描述的技術(shù)提供了具有對(duì)經(jīng)更新的模塊/驅(qū) 動(dòng)程序的完整性檢查的安全性,并提供了更加用戶(hù)友好的更新過(guò)程,因?yàn)橛脩?hù)不需要重啟 其系統(tǒng)以接收模塊化引導(dǎo)固件更新。此處描述的技術(shù)還是容錯(cuò)的,因此如果新的經(jīng)更新的代碼模塊/驅(qū)動(dòng)程序出現(xiàn)故 障,則將使用原始代碼驅(qū)動(dòng)創(chuàng)新/模塊來(lái)引導(dǎo)系統(tǒng),系統(tǒng)將如所嘗試的更新之前那樣繼續(xù) 起作用。關(guān)于出故障的模塊的反饋可被提供給服務(wù)器,因此可在后續(xù)更新請(qǐng)求中提供糾正 后的代碼模塊/驅(qū)動(dòng)程序。圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于實(shí)現(xiàn)引導(dǎo)固件模塊化更新管理器的虛 擬機(jī)環(huán)境。若平臺(tái)700被虛擬化,其可僅包括單個(gè)處理器,但是主機(jī)上的虛擬機(jī)監(jiān)視器 ("VMM 730”)可呈現(xiàn)主機(jī)的多個(gè)抽象和/或視圖,因此主機(jī)的底層硬件將表現(xiàn)為一個(gè)或多 個(gè)獨(dú)立操作的虛擬機(jī)(“VM”)。VMM 730可實(shí)現(xiàn)在軟件(例如實(shí)現(xiàn)為主機(jī)操作系統(tǒng)的獨(dú)立 程序和/或組件)、硬件、固件和/或其任意組合中。VMM 730管理主機(jī)上的資源分配并按 需執(zhí)行上下文切換以根據(jù)循環(huán)方式或其它預(yù)定義方案在不同的VM之間循環(huán)。對(duì)于本領(lǐng)域 普通技術(shù)人員將明顯的是,雖然只示出了一個(gè)處理器(“處理器705”),本發(fā)明的實(shí)施例不 限于此,且也可在虛擬化環(huán)境中利用多個(gè)處理器。雖然只示出了兩個(gè)VM分區(qū)(“VM710”和“VM720”,下文統(tǒng)稱(chēng)為“VM”),但這些VM 僅僅是說(shuō)明性的,且其它虛擬機(jī)也可被添加到主機(jī)。VM 710和VM720可分別用作自包含平 臺(tái),運(yùn)行其自己的“客戶(hù)操作系統(tǒng)”(即,由VMM 730主存的操作系統(tǒng),示為“客戶(hù)OS 711”和 “客戶(hù)OS 721”,且在下文中統(tǒng)稱(chēng)為“客戶(hù)OS”)和其它軟件(示為“客戶(hù)軟件712”和“客戶(hù) 軟件722”,且在下文中統(tǒng)稱(chēng)為“客戶(hù)軟件”)。每個(gè)客戶(hù)OS和/或客戶(hù)軟件就像在專(zhuān)用計(jì)算機(jī)而非虛擬機(jī)上運(yùn)行那樣操作。也就 是說(shuō),每個(gè)客戶(hù)OS和/或客戶(hù)軟件可預(yù)期控制各種事件并能訪問(wèn)平臺(tái)700上的硬件資源。 在每個(gè)VM內(nèi),客戶(hù)OS和/或客戶(hù)軟件可以就像它們實(shí)際上在平臺(tái)700的物理硬件上(“主 機(jī)硬件740”,其可包括網(wǎng)絡(luò)控制器760)運(yùn)行那樣運(yùn)轉(zhuǎn)。對(duì)于本領(lǐng)域普通技術(shù)人員將明顯的是,具有專(zhuān)用處理器(例如圖1的管理引擎 (ME) 130)的物理硬件分區(qū)可提供比虛擬分區(qū)(如圖7所示)更高的安全級(jí)別,但是本發(fā)明 的實(shí)施例可在這些環(huán)境中的任一環(huán)境和/或組合中實(shí)踐以提供不同的安全級(jí)別。對(duì)于本領(lǐng) 域普通技術(shù)人員還將明顯的是,可在虛擬化環(huán)境中實(shí)現(xiàn)ME、AMT或PRL平臺(tái)。例如,VM 720 可專(zhuān)用于主機(jī)上的ME分區(qū),而VM 710運(yùn)行主機(jī)上的典型程序。在這種情況下,主機(jī)可以包 括多個(gè)處理器,也可以不包括多個(gè)處理器。如果主機(jī)的確包括例如兩個(gè)處理器,VM 720可被 指派另一個(gè)處理器,而VM 710(和主機(jī)上的其它VM)可共享處理器705的資源。另一方面, 如果主機(jī)僅包括一個(gè)處理器,則該處理器可服務(wù)兩個(gè)VM,但通過(guò)和VMM 730的合作,VM 720 仍可與主機(jī)上的其它VM隔離。為簡(jiǎn)單起見(jiàn),本發(fā)明的實(shí)施例在管理引擎(ME)環(huán)境中進(jìn)行 說(shuō)明,但本發(fā)明的實(shí)施例不限于此。相反,對(duì)管理引擎、ME、“分區(qū)”、“安全的分區(qū)”、“安全性 分區(qū)”和/或“管理分區(qū)”的引述均包括任何物理和/或虛擬分區(qū)(如上所述)。此處公開(kāi)的機(jī)制的實(shí)施例可實(shí)現(xiàn)為硬件、軟件、固件、或此類(lèi)實(shí)現(xiàn)辦法的組合。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為能夠在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序,該系統(tǒng)包括至少一個(gè)處理 器、數(shù)據(jù)存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和 至少一個(gè)輸出設(shè)備。程序代碼可應(yīng)用于輸入數(shù)據(jù)以執(zhí)行此處描述的功能并生成輸出信息。本發(fā)明的 實(shí)施例還包括機(jī)器可訪問(wèn)介質(zhì),該介質(zhì)包括用于執(zhí)行本發(fā)明的操作的指令或包括設(shè)計(jì)數(shù)據(jù) (例如HDL),其定義了此處描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這些實(shí)施例也 可被稱(chēng)為程序產(chǎn)品。這些機(jī)器可訪問(wèn)存儲(chǔ)介質(zhì)可包括但不限于由機(jī)器或設(shè)備制造或形成的有形微粒 陣列,包括存儲(chǔ)介質(zhì),例如硬盤(pán)、任何其它類(lèi)型的盤(pán),包括軟盤(pán)、光盤(pán)、緊致盤(pán)只讀存儲(chǔ)器 (CD-ROM)、可重寫(xiě)緊致盤(pán)(CD-RW)和磁光盤(pán);半導(dǎo)體設(shè)備,例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取 存儲(chǔ)器(RAM),例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),可擦可編程 只讀存儲(chǔ)器(EPROM)、閃存可編程存儲(chǔ)器(FLASH)、電可擦可編程只讀存儲(chǔ)器(EEPROM);磁 或光卡;或任何其它類(lèi)型的用于存儲(chǔ)電子指令的介質(zhì)。輸出信息可以按公知方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。出于本申請(qǐng)的目的,處 理系統(tǒng)包括任何具有處理器的系統(tǒng),例如數(shù)字信號(hào)處理器(DSP)、微控制器、專(zhuān)用集成電路 (ASIC)或微處理器。程序可用在高級(jí)過(guò)程或面向?qū)ο蟪绦蛘Z(yǔ)言來(lái)實(shí)現(xiàn)以與處理系統(tǒng)通信。若需要,程 序也可用匯編或機(jī)器語(yǔ)言實(shí)現(xiàn)。實(shí)際上,此處描述的機(jī)制的范圍并不限定于任何特定編程 語(yǔ)言。無(wú)論如何,語(yǔ)言可以是經(jīng)編譯或經(jīng)解釋語(yǔ)言。此處給出了用于執(zhí)行自動(dòng)引導(dǎo)固件模塊化更新的系統(tǒng)和方法的實(shí)施例。雖然已示 出和描述了本發(fā)明的特定實(shí)施例,但本領(lǐng)域技術(shù)人員應(yīng)清楚,可作出大量改變、變形和修改 而不脫離所附權(quán)利要求的范圍。因此,本領(lǐng)域技術(shù)人員能夠認(rèn)知到,可作出改變和修改而不 脫離本發(fā)明的廣義方面。所附權(quán)利要求旨在涵蓋落入本發(fā)明真正范圍和精神內(nèi)的所有此類(lèi) 改變、變形和修改。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括在系統(tǒng)的安全分區(qū)中接收經(jīng)更新的引導(dǎo)固件代碼模塊,該經(jīng)更新的引導(dǎo)固件代碼模塊 將代替用于該系統(tǒng)的多個(gè)引導(dǎo)固件代碼模塊中的一個(gè)原始引導(dǎo)固件代碼模塊;自動(dòng)用該經(jīng)更新的引導(dǎo)固件代碼模塊代替僅該一個(gè)原始引導(dǎo)固件代碼模塊;以及 當(dāng)該系統(tǒng)下次被引導(dǎo)時(shí),與用于該系統(tǒng)的所述多個(gè)引導(dǎo)固件代碼模塊一起且在無(wú)用戶(hù) 干預(yù)的情況下自動(dòng)執(zhí)行該經(jīng)更新的引導(dǎo)固件代碼模塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括將該經(jīng)更新的引導(dǎo)固件代碼模塊寫(xiě)入固件卷的更新分區(qū),其中當(dāng)該系統(tǒng)被引導(dǎo)時(shí),所 述固件卷的該更新分區(qū)和該固件卷中包含該多個(gè)引導(dǎo)固件代碼模塊的其他分區(qū)被一并讀 取。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,進(jìn)一步包括在將該經(jīng)更新的引導(dǎo)固件模塊寫(xiě)入固件卷的更新分區(qū)之前,認(rèn)證該經(jīng)更新的引導(dǎo)固件 模塊的完整性。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于該經(jīng)更新的引導(dǎo)固件模塊是由服務(wù)器通過(guò)耦合到所述安全分區(qū)的帶外通信信道提供的。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,進(jìn)一步包括在接收該經(jīng)更新的引導(dǎo)固件模塊之前,認(rèn)證所述服務(wù)器的完整性。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括如果在加載該經(jīng)更新的引導(dǎo)固件模塊期間出現(xiàn)問(wèn)題,則使得加載該一個(gè)原始引導(dǎo)固件 代碼模塊。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括在該系統(tǒng)被引導(dǎo)之后,向從其接收該經(jīng)更新的引導(dǎo)固件代碼模塊的服務(wù)器提供該經(jīng)更 新的引導(dǎo)固件代碼模塊的安裝狀態(tài)。
8.一種系統(tǒng),包括至少一個(gè)處理器,執(zhí)行主機(jī)操作系統(tǒng)和用于該系統(tǒng)的多個(gè)引導(dǎo)固件代碼模塊;和 耦合到所述處理器的安全分區(qū),該安全分區(qū)與所述主機(jī)操作系統(tǒng)隔離; 用于在所述安全分區(qū)中接收經(jīng)更新的引導(dǎo)固件代碼模塊的裝置,該經(jīng)更新的引導(dǎo)固件 代碼模塊將代替用于該系統(tǒng)的多個(gè)引導(dǎo)固件代碼模塊中的一個(gè)原始引導(dǎo)固件代碼模塊;用于自動(dòng)用該經(jīng)更新的引導(dǎo)固件代碼模塊代替僅該一個(gè)原始引導(dǎo)固件代碼模塊的裝 置;以及用于當(dāng)該系統(tǒng)下次被引導(dǎo)時(shí),與用于該系統(tǒng)的所述多個(gè)引導(dǎo)固件代碼模塊一起且在無(wú) 用戶(hù)干預(yù)的情況下自動(dòng)執(zhí)行該經(jīng)更新的引導(dǎo)固件代碼模塊的裝置。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括用于將該經(jīng)更新的引導(dǎo)固件代碼模塊寫(xiě)入固件卷的更新分區(qū)的裝置,其中當(dāng)該系統(tǒng)被 引導(dǎo)時(shí),所述固件卷的該更新分區(qū)和該固件卷中包含該多個(gè)引導(dǎo)固件代碼模塊的其他分區(qū)被一并讀取。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,進(jìn)一步包括用于在將該經(jīng)更新的引導(dǎo)固件模塊寫(xiě)入該固件卷的更新分區(qū)之前認(rèn)證該經(jīng)更新的引導(dǎo)固件模塊的完整性的裝置。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于該經(jīng)更新的引導(dǎo)固件模塊是由服務(wù)器通過(guò)耦合到所述安全分區(qū)的帶外通信信道提供的。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,進(jìn)一步包括用于在接收該經(jīng)更新的引導(dǎo)固件模塊之前認(rèn)證所述服務(wù)器的完整性的裝置。
13.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括用于如果在加載該經(jīng)更新的引導(dǎo)固件模塊期間出現(xiàn)問(wèn)題則使得加載該一個(gè)原始引導(dǎo) 固件代碼模塊的裝置。
14.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括用于在該系統(tǒng)被引導(dǎo)之后向從其接收該經(jīng)更新的引導(dǎo)固件代碼模塊的服務(wù)器提供該 經(jīng)更新的引導(dǎo)固件代碼模塊的安裝狀態(tài)的裝置。
全文摘要
一種用于自動(dòng)模塊化且安全的引導(dǎo)固件更新的方法、裝置、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在系統(tǒng)的安全分區(qū)中接收經(jīng)更新的引導(dǎo)固件代碼模塊,該經(jīng)更新的引導(dǎo)固件代碼模塊用于代替用于該系統(tǒng)的一個(gè)原始引導(dǎo)固件代碼模塊。僅該一個(gè)原始引導(dǎo)固件代碼模塊自動(dòng)地被該經(jīng)更新的引導(dǎo)固件代碼模塊所代替。當(dāng)系統(tǒng)下次被引導(dǎo)時(shí),與用于該系統(tǒng)的多個(gè)引導(dǎo)固件代碼模塊一起且在無(wú)用戶(hù)干預(yù)的情況下自動(dòng)執(zhí)行該經(jīng)更新的引導(dǎo)固件代碼模塊。該經(jīng)更新的引導(dǎo)固件代碼模塊可被寫(xiě)入固件卷的更新分區(qū),其中當(dāng)系統(tǒng)被引導(dǎo)時(shí),固件卷的更新分區(qū)和該固件卷中包含該多個(gè)引導(dǎo)固件代碼模塊的其他分區(qū)被一并讀取。
文檔編號(hào)G06F9/445GK102081534SQ20101057266
公開(kāi)日2011年6月1日 申請(qǐng)日期2010年9月26日 優(yōu)先權(quán)日2009年11月30日
發(fā)明者C·羅茲, D·格蘭丁寧, G·帕卡什, H·科斯拉維, S·艾斯, S·達(dá)杜 申請(qǐng)人:英特爾公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
抚州市| 连江县| 怀柔区| 顺义区| 黄陵县| 阳东县| 玉林市| 台安县| 台北市| 盐山县| 石阡县| 顺义区| 高平市| 东平县| 牡丹江市| 神木县| 达尔| 自贡市| 新疆| 朝阳县| 和平县| 广水市| 永春县| 安西县| 琼结县| 兴化市| 拜城县| 渝北区| 长治县| 兰溪市| 江城| 龙口市| 昌宁县| 西乌珠穆沁旗| 武川县| 赣州市| 鄂伦春自治旗| 肥城市| 福清市| 凌源市| 枞阳县|