999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UEFI的膠囊式固件定制更新研究

2014-06-07 05:53:21杜振龍沙光俠李曉麗沈鋼綱
計算機工程 2014年10期
關鍵詞:系統

杜振龍,沙光俠,李曉麗,沈鋼綱

(南京工業大學電子與信息工程學院,南京210009)

基于UEFI的膠囊式固件定制更新研究

杜振龍,沙光俠,李曉麗,沈鋼綱

(南京工業大學電子與信息工程學院,南京210009)

當前固件刷新技術不靈活、不能單獨更新功能模塊,且各硬件平臺、操作系統的更新數據傳輸接口不統一。為解決上述問題,基于統一可擴展固件接口(UEFI)規范的EDKⅡ,提出一種膠囊(Capsule)式固件更新方法,將更新數據封裝為Capsule,在固件層對Capsule進行識別、析取,把獲取數據寫入固件文件系統的更新目標地址,實現對固件系統內核函數、驅動模塊、協議、應用程序等的更新、修復。該方法在操作系統加載前實現指定功能模塊的定制更新和維護,不限制更新模塊的容量,可解決傳統固件更新方法過于依賴硬件、操作系統的問題,具有安全、高效、靈活、實用性強的特點。

膠囊式;更新;固件;統一可擴展固件接口;固件文件系統;定制

1 概述

固件基本輸入輸出系統(Basic Input and Output System,BIOS)保存于計算機系統的可編程Flash芯片,是計算機、嵌入式系統的重要底層系統軟件[1]。固件的升級、更新能夠修復計算機系統故障、擴展固件功能,是系統軟件的適應性維護工作。隨著互聯網應用的深入,證劵、金融、電信等領域的客戶端固件定制正成為新的應用熱點,需要具有個性化鮮明的定制產品。隨之而來的問題是固件的更新更為頻繁,而目前的固件更新技術不能對指定模塊進行更新,因此,亟需研究新的軟件更新維護方式。

傳統固件與不同操作系統的數據傳輸接口不統一,造成相同功能的固件系統需定制多個發行版本。為了解決該問題,統一可擴展固件接口(Unified Extensible Firmware Interface,UEFI)定義了膠囊(Capsule)規范,利用Capsule把數據傳至UEFI固件,實現固件更新、BIOS參數修改等系統維護。

傳統固件更新技術采用整體刷新方式,刷新工具過于依賴硬件,且不能對特定模塊進行定制更新。本文分析Capsule規范,結合UEFI固件文件系統,提出了一種基于UEFI的固件Capsule式定制更新方法。

2 統一可擴展固件接口UEFI

傳統固件系統采用匯編語言開發,工作在16位實模式狀態,尋址空間僅1 024 Byte,已很難通過優化改良獲得本質性的突破,成為了限制PC機發展的瓶頸[2]。為此,Intel等公司提出了通用可擴展固件接口UEFI架構,該架構具有支持C語言開發、模塊化設計、圖形化界面及文件系統等優勢,在開發語言、運行狀態及可用內存等方面比傳統固件有了很大突破。按照模塊化設計要求,UEFI定義了設備驅動模型,硬件廠商可以按照UEFI標準開發出硬件設備驅動,減少了廠商間的依賴[2]。UEFI規范把操作系統啟動之前劃分為:安全保護階段SEC,環境初始化階段PEI,驅動執行環境階段DXE和引導設備選擇階段BDS這4個階段,詳細描述了系統從加電、處理器初始化、硬件初始化、啟動路徑判斷、系統策略設定、用戶配置界面,到進入操作系統的詳細過程[3]。

UEFI程序分為內核、驅動和應用程序3類。UEFI內核提供包括內存管理、事件管理、任務優先級管理、句柄管理[4-5]等服務。驅動實現對硬件資源的訪問與管理、支持新設備的驅動開發[6-7]及擴展。應用程序提供固件功能擴展、定制、增值等服務。

UEFI定義了固件文件系統和文件組成結構[6]。編譯生成的二進制UEFI固件稱為固件鏡像文件,由不同文件類型的固件卷組成[8-10],包括系統固件卷和非易失性存儲固件卷。系統固件卷主要用于存放固件代碼,非易失性存儲固件卷用于存放系統變量、配置文件、日志等。利用固件文件系統可在有限的Flash空間有效地存儲、管理模塊化驅動程序[11-12]。

3 傳統固件更新技術

傳統固件由MainBios和Bootblock 2個部分組成。Mainbios負責硬件初始化、服務程序建立、操作系統引導。Bootblock包含用于引導的最小指令集,正常的固件更新操作不清除Bootblock內容,因此,更新失敗時可利用Bootblock進行恢復操作。傳統固件更新采用刷新MainBios和整體固件刷新2種方式。當需要更新某一特定芯片的驅動程序、添加增值應用模塊時,傳統固件更新方法需要對整個Flash進行更新。

目前的更新機制需要CPU支持系統管理模式(System Management Mode,SMM)。進入SMM模式是由中斷信號SMI觸發引起,由處理器SMI管腳信號有效或者收到高級配置和電源管理接口(Advanced Configuration and Power Management Interface,ACPI)總線的修改請求。SMI中斷是不可屏蔽外部中斷,獨立于其他中斷和異常處理。處理器接收到SMI請求后,等待所有指令執行和訪存完成后把當前處理器上下文存入SMRAM,切入SMM模式執行SMI處理程序。采用這種刷新技術,需要依賴BIOS的SMI驅動支持,因此,SMI驅動程序的可靠性影響固件刷新的成功率[4]。

4 基于Capsule的固件定制式更新

Capsule是UEFI定義用于操作系統與固件系統進行數據傳輸的一種規范。本節主要討論基于Capsule規范實現固件定制更新的方法。

4.1 Capsule結構

Capsule由頭結構和卷組成,如圖1所示。

圖1 Capsule結構

Capsule頭結構體包含整個 Capsule的有關信息,其結構體的主要組成如下。

Capsule結構包括表示文件大小的CapsuleImage Size,指示Capsule在固件卷位置的OffsetToCapsule Body。固件更新文件較大時,升級時需要申請一段連續內存用以存放升級鏡像文件。為了避免未能申請到所需內存導致升級失敗的情況出現,在更新過程中可按需把Capsule分成更小的SubCapsule數據單元。每個SubCapsule和Capsule的結構相同,以SequenceNumber標識指示順序。InstanceId標識分割后的 Capsule塊,為方便升級過程按順序組合Capsule塊并寫入Flash。

Capsule卷的組織結構和標準固件卷文件相同。Capsule卷中可存儲固件文件、EFI程序、BIOS配置信息等數據。

UEFI規范中基于Capsule的數據傳輸機制,需要經過數據結構設計、數據封裝和數據解析3個階段。

(1)Capsule數據結構設計:定義用于操作系統與固件系統之間的數據傳輸接口。

(2)數據封裝:把需要傳輸到固件系統的數據進行才Capsule包裝,并按需分配內存。

(3)數據解析:固件系統在PEI,DXE,BDS階段對Capsule包進行解析,提取其中的固件文件和數據。

4.2 固件定制式更新

基于UEFI的Capsule式固件定制更新方法在編譯階段把待更新的數據封裝成Capsule,在固件系統啟動過程解析Capsule,并把解析內容寫入內存指定地址的Flash,從而使更新、升級數據傳遞至固件系統,實現對指定固件卷的更新。

采用Capsule的固件定制式更新方法主要包括數據傳輸和數據更新過程。數據傳輸階段運行在操作系統環境或 UEFI Shell,把更新數據封裝成Capsule并傳輸至固件系統。數據更新階段解析更新的Capsule,為Capsule分配內存,把更新內容寫入指定位置。

更新時先通過Capsule頭結構找到Capsule的固件卷位置,根據系統當前內存的空閑情況判斷是否需要對Capsule進行分塊。在Capsule所需的連續空間內存未能滿足時,則需要把Capsule劃分為更小的SubCapsule數據單元,并為每個SubCapsule分配內存,修改 EFI_CAPSULE_HEADER結構體的SequenceNumber成員,使其記錄下一個相鄰的SubCapsule位置。當所需內存申請成功時,則不需要對Capsule進行再分塊,直接把SequenceNumber值設為0。Capsule分塊為SubCapsule的過程如圖2所示。

圖2 Capsule分塊過程

分塊過程需為每個SubCapsule創建包括數據起始地址、數據長度、校驗和的描述信息鏈表。把第一個SubCapsule描述符的地址存儲到CMOS中的變量參數表或 UEFI端口映射表的 LocationOf ThePointer指定的內存位置。升級、刷新過程在計算機的S3睡眠狀態進行,更新完成后通過實時時鐘(Real-time Clock,RTC)喚醒。

采用Capsule的固件定制式更新在數據更新階段解析、提取Capsule中封裝的數據,根據設定對固件系統進行定制更新。數據更新工作主要在PEI, DXE階段進行。

PEI階段用 PPI識別并恢復 Capsule。PPI是UEFI定義的用于PEI階段模塊(PEIM)之間傳遞函數和數據的接口。PEIM將需要提供給其他PEIM的數據和函數封裝在PEI服務中,PEIM通過GUID找到所需模塊,獲得需要的數據。PPI的結構體原型定義如下:

PEI階段利用PPI的CheckCapsuleUpdate函數查找CMOS中是否有 Capsule,有 Capsule時調用Coalesce函數將 SubCapsule按順序合并,再通過CreateState函數把合并后的Capsule在內存中的位置和大小寫入HOB鏈表,由HOB把數據從PEI階段傳遞至DXE階段。

DXE階段從 HOB鏈表搜索 Capsule相關的HOB,調用服務ProcessFirmwareVolume從HOB鏈表中得到Capsule在內存中的地址、大小等參數,分離出固件卷,并為固件卷創建Protocol,方便對其進行讀寫操作。分離出的固件卷需根據校驗和判斷其有效性,只對有效的固件卷實施更新操作。

4.3 基于Capsule固件定制式的更新流程

如圖3所示,固件更新流程在操作系統階段根據系統當前的內存使用狀況判斷是否需要對Capsule進行分塊,所需的連續內存不滿足時把Capsule分塊為SubCapsule,為每個SubCapsule分配內存空間。使計算機系統進入S3睡眠狀態,開始對UEFI固件系統進行更新。

圖3 UEFI更新流程

UEFI固 件 系 統 在 PEI階段 識 別、合 并SubCapsule,形成完整的Capsule,把合并后的Capsule在內存中的地址和大小相關信息寫入HOB鏈表。進入DXE階段后,查找 HOB鏈表并定位至包含Capsule的HOB,從中解析Capsule,提取出保存在其中的固件卷,利用固件卷的校驗和來判斷其是否合法,讀取合法有效的固件卷中的驅動或應用程序。調用DXE階段的驅動分配加載服務Dispatch,判斷驅動之間的依賴關系,根據正確的順序查找和執行UEFI固件更新。

基于UEFI的Capsule固件定制式更新方法能夠靈活地更新固件系統文件或模塊,既能夠根據需要更新固件卷模塊,又可以更新固件卷模塊的應用程序,方便了固件系統的更新、修改和移植。

5 功能測試

在Intel的Sandy Bridge測試平臺測試了本文所提出的基于UEFI的Capsule固件定制式更新算法。測試環境為UEFI SHELL。測試包括更新整個UEFI固件和單一固件卷模塊(FV_APPLY)。Flash Map描述了固件的靜態結構組成,設定Flash Map可改變固件卷在Flash的位置。表1為Flash Map的部分內容。

Flash Map確定了固件卷模塊在Flash中的起始地址和空間大小,如表1所示,固件文件包含5個固件卷模塊,大小為3 MB,存儲在容量為8 MB的Flash。基于UEFI的Capsule固件定制式更新把固件卷封裝成Capsule,根據需要把Capsule分割成SubCapsule,PEI階段將SubCapsule合并,DXE階段通過對Capsule進行解析取得固件卷模塊及其在內存中的地址。

表1 Flash Map的部分內容

圖4為仿真器[6]跟蹤的內存中待更新模塊FV_ APPLY的內容,從 0xFFF0 0000位置至 0xFFF8 0000為更新內容。

圖4 仿真器測試結果

經過測試,基于Capsule的固件定制更新方法可以實現整體、分塊更新,更新所用時間和更新數據大小如表2所示。

表2 固件定制更新方法測試結果

6 結束語

基于UEFI的固件Capsule式定制更新方法統一了不同操作系統和固件系統之間的傳輸方式,降低了對操作系統的依賴。更新、升級的數據在固件系統進行讀取,避免了操作系統中未經授權的操作、訪問,安全性較高。Capsule內容既可作為系統參數、變量等信息,也可用作固件驅動及應用程序,更新、升級的內容更為廣泛。本文提出了一種基于UEFI的固件Capsule式定制更新方法,與利用SMI中斷技術的軟件更新方法相比,該方法可靠、靈活,且運行在操作系統啟動之前,無需受制于操作系統,可根據需要對固件模塊進行定制式更新。該方法可用于固件遠程刷新、固件自動恢復等應用。

[1] 李榮冰,劉建業,袁 朔,等.用串行方式實現微小型導航計算機應用軟件的快速更新研究[J].小型微型計算機系統,2005,26(9):1657-1660.

[2] 黃海彬.基于EFI固件文件系統的平臺安全策略研究與實現[D].上海:上海交通大學,2010.

[3] Unified EFI Inc.Unified Extensible Firmware Interface Specification Version 2.3[EB/OL].(2009-11-26). https://www.tianocore.org.

[4] 劉 佳,辛曉晨,沈鋼綱,等.基于UEFI的Flash更新的開發研究[J].計算機工程與設計,2011,32(1): 114-117.

[5] 唐文彬,祝躍飛,陳嘉勇.統一可擴展固件接口攻擊方法研究[J].計算機工程,2012,38(13):99-111.

[6] 崔 瑩,王寶濤,沈鋼綱.UEFI下基于USB的調試信息輸出工具的設計與實現[J].計算機工程與設計, 2010,24(10):5227-5230.

[7] 崔 瑩,辛曉晨,沈鋼綱.基于UEFI的嵌入式驅動程序的開發研究[J].計算機工程與設計,2010,24(10): 2384-2387.

[8] Intel Corporation.Intel Platform Innovation Framework for EFI Architecture Specification,Version 0.9[Z]. 2003.

[9] Intel Corporation.Intel Platform Innovation Framework for EFI Firmware File System Specification,Version 0.9 [Z].2003.

[10] Intel Corporation.Intel Platform Innovation Framework for EFI Firmware Volume Specification,Version 0.9 [Z].2003.

[11] Du Zhenlong,Li Xiaoli,Shen Kangkang,et al.Ensemble of Trusted Firmware Services Based on TPM[J]. International Journal of Digital Content Technology and Its Applications,2011,5(3):175-184.

[12] 杜振龍,沙光俠,李曉麗,等.MIPS架構計算機平臺的支持固件研究[J].蘭州理工大學學報,2013,39(6): 94-99.

編輯 顧逸斐

Customization and Update Research on Capsule Type Firmware Based on UEFI

DU Zhen-long,SHA Guang-xia,LI Xiao-li,SHEN Gang-gang
(College of Electronic and Information Engineering,Nanjing University of Technology,Nanjing 210009,China)

Conventional firmware update is totally refreshed,which is inflexible for updating the specified modules.In the paper,based on Unified Extensible Firmware Interface(UEFI),an approach of Capsule type firmware update is proposed,which encapsulates the update data in Capsule,transfers the Capsule to firmware system,unpacks the Capsule for recollecting the update data,and writes the refresh data to the required memory.The proposed method is able to update the specified firmware function,module,protocol,or application.Experimental result shows that the given method can perform the firmware update in module,and holds the advantages of security,high-efficiency and strong flexibility.

Capsule type;update;firmware;Unified Extensible Firmware Interface(UEFI);firmware file system;

1000-3428(2014)10-0292-04

A

TP391.4

10.3969/j.issn.1000-3428.2014.10.054

教育部高等學校博士點基金資助項目(20113221120003);江蘇省六大人才高峰基金資助項目(2012-WLW-023);江蘇省自然科學基金資助項目(BK2009081);江蘇省高校自然科學基金資助項目(09KJB520006,11KJD520007)。

杜振龍(1971-),男,副教授、博士,主研方向:可信媒體認證,計算機圖形學,機器學習;沙光俠,工程師、碩士;李曉麗,副教授、博士研究生;沈鋼綱,教授、博士、博士生導師。

2013-09-04

2013-11-14E-mail:duzhlcad@gmail.com

中文引用格式:杜振龍,沙光俠,李曉麗,等.基于UEFI的膠囊式固件定制更新研究[J].計算機工程,2014, 40(10):292-295,303.

英文引用格式:Du Zhenlong,Sha Guangxia,Li Xiaoli,et al.Customization and Update Research on Capsule Type Firmware Based on UEFI[J].Computer Engineering,2014,40(10):292-295,303.

customization

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 视频二区中文无码| 黄片在线永久| 嫩草国产在线| 18禁黄无遮挡免费动漫网站| 亚洲精品色AV无码看| 青草视频在线观看国产| 亚洲视频一区在线| 亚洲一区毛片| 国产美女无遮挡免费视频网站| 亚洲欧美成人网| 99热这里只有精品免费| 久久国产V一级毛多内射| a在线观看免费| 亚洲欧洲日产国码无码av喷潮| 久久婷婷五月综合色一区二区| 国产精品天干天干在线观看| 国产99免费视频| 亚洲黄色网站视频| 精品国产免费观看| 91国内视频在线观看| 成人久久精品一区二区三区| 波多野结衣亚洲一区| 91亚洲视频下载| 久久伊伊香蕉综合精品| 亚洲av无码片一区二区三区| 国产在线视频自拍| 久久99精品久久久大学生| 小说 亚洲 无码 精品| 成人精品亚洲| 亚洲精品视频免费看| 日韩福利视频导航| 亚洲精品视频免费看| 日韩午夜伦| 中文字幕佐山爱一区二区免费| 日韩精品一区二区三区免费在线观看| 欧美精品在线视频观看| 久久五月视频| AV无码无在线观看免费| 国产麻豆精品久久一二三| 婷婷六月综合| 免费人成在线观看成人片| 欧美高清国产| 国产经典在线观看一区| 97久久免费视频| 亚洲综合18p| 成年人国产网站| 日韩在线播放欧美字幕| 亚洲欧洲日韩综合| 亚洲AV人人澡人人双人| 欧美成人怡春院在线激情| 国产女人水多毛片18| 亚洲福利一区二区三区| 国禁国产you女视频网站| 国产黄色免费看| 在线视频亚洲色图| 亚洲高清中文字幕在线看不卡| 久久精品人妻中文视频| 91九色国产porny| 日本一区高清| 国产精品香蕉在线观看不卡| 亚洲an第二区国产精品| 91成人免费观看在线观看| 97成人在线视频| 亚洲精品视频免费观看| 2022国产无码在线| 国产精品吹潮在线观看中文| 免费在线观看av| vvvv98国产成人综合青青| 亚洲精品视频免费| 亚洲系列中文字幕一区二区| 日韩区欧美国产区在线观看| 久久精品最新免费国产成人| 亚洲黄网在线| 久久亚洲国产最新网站| 免费观看亚洲人成网站| 成人无码一区二区三区视频在线观看 | 国产一级二级三级毛片| 国产成人精品一区二区秒拍1o| 男人天堂伊人网| 中文国产成人久久精品小说| 久久久久免费精品国产| 热久久综合这里只有精品电影|