UEFI與GPT(7.3課上作業)

一、UEFI:統一可擴展固件接口


1、什么是UEFI

        統一可擴展固件接口(Unified Extensible Firmware Interface,UEFI)是一種PC系統規格,用來定義操作系統與系統固件之間的軟件界面,作為BIOS的替代方案。UEFI負責加電自檢(POST),聯系操作系統以及提供操作系統與硬件連接的接口。下圖為EFI在軟件層次中的位置:

blob.png



2、UEFI引導過程

    1、系統開機 – 加電自檢(POST)

    2、UEFI固件被加載,并由它初始化要啟動的硬件

    3、固件讀取其引導管理器以確定從何處(比如從哪個硬盤及分區)加載哪個UEFI應用(如windows boot manager)

    4、固件按照引導管理器中的啟動項目,加載UEFI應用

    5、根據已啟動的UEFI應用還可以啟動其他應用(對應于UEFI shell或rEFInd之類的引導管理器的情況)或者啟動內核及initramfs(對應于GRUB之類引導器的情況),這取決于UEFI應用的配置



3、UEFI與BIOS的比較

1,EFI使用了模塊化,C語言風格的參數堆棧傳遞方式,動態鏈接的形式構建的系統,相比BIOS而言更容易實現,容錯和糾錯的特性更強,縮短了系統開發的時間。

2,EFI運行于32或64乃至未來增強的處理器模式下,突破傳統BIOS16位代碼的尋址能力,達到CPU的最大尋址。使得EFI驅動可以操控所有硬件設備。而BIOS只能以16位代碼的形式提供硬件服務程序,這使其只能提供給操作系統引導程序或MS-DOS類操作系統使用。

3,EFI系統下的驅動不是直接運行于CPU上的代碼寫成,而是用EFIBC編寫而成的,這是一組專用于EFI驅動的虛擬機器語言,需要EFI驅動環境(DXE)下被解釋運行,這提供了不同系統平臺間的向下兼容性。另外EFI驅動開發簡單,所有PC部件供應商都可以參與開發,對于豐富其功能十分有利。



4、EFI與操作系統的關系

      EFI理論上非常類似于一個低級操作系統,并且具有操控所有硬件資源的能力。但它有其局限性:在EFI規范中,

1,EFI只是硬件和預啟動軟件間的接口規范

2,不提供負載的內存保護功能,只具備簡單的內存管理機制。

3,EFI不提供中斷機制,即每個驅動程序必須使用輪詢+解釋的方式運行,效率較低

當EFI所有組件加載王城后,系統可以開啟一個類似操作系統shell 的命令解釋環境,在這里用戶可以使用各種EFI應用程序,如硬件檢測及排錯軟件,引導管理等等。



5、EFI的組成

一般來說,EFI由如下幾部分組成

1,Pre-EFI初始化模塊:初始化CPU,主橋及存儲器

2,EFI驅動執行環境:加載DXE

3,EFI驅動程序:枚舉、識別及加載其他設備驅動程序

4,兼容性支持模塊(CSM):為不支持EFI的操作系統提供支持

5,EFI高層應用:如引導程序,排錯程序等

6,GUID磁盤分區表:GPT(見下文)



二、全局唯一標識分區表:GPT

全局唯一標識分區表(GUID Partition Table,GPT)是一個實體硬盤的分區表的結構布局的標準。它是EFI標準的一部分,被用于替代BIOS系統中的主引導記錄(MBR)分區表。



特點:

     在MBR硬盤中,分區信息直接存儲于主引導記錄(MBR)中。但在GPT硬盤中,分區表信息存儲于GPT頭中。(處于兼容性考慮,硬盤的第一個扇區仍然用作MBR,之后才是GPT頭)

     跟現代的MBR一樣,GPT也使用邏輯區塊地址(LBA)作為尋址方式。傳統MBR信息存儲與LBA0,GPT頭存儲于LBA1,接下來LBA2 ~ LBA33是分區表,使用16384字節(32扇區)作為GPT分區表。LBA34是硬盤上第一個分區的開始。

     為了減少分區表損壞的風險,GPT在硬盤的最后保存了一份分區表的副本



傳統MBR(LBA0)

     在GPT分區表的開頭,處于兼容性考慮仍然存儲了一份傳統的MBR,用來放置不支持GPT的硬盤管理工具錯誤識別并破壞硬盤中的數據,這個MBR叫做保護MBR。在支持GPT啟動的操作系統中,這里也用于存儲第一階段的啟動代碼。在這個MBR中,只有一個標識為0xEE的分區,表示這塊硬盤使用GPT分區表。不能識別GPT的操作系統通常會識別到一塊未知類型的分區,并且拒絕對其進行操作,除非用戶刪除這個分區。另外,能夠識別GPT的操作系統會檢查保護MBR中的分區表,如果分區類型不是0xEE或分區表中有多個項,也會拒絕對硬盤進行操作。

另外在MBR與GPT共存的混合分區表硬盤中,可以使不支持GPT啟動的操作系統從MBR啟動,啟動后只能操作MBR分區表中的分區。



GPT分區表頭(LBA1)

     分區表頭定義了硬盤的可用空間以及組成分區表的項的大小和數量。一般最多可以創建128個分區,即分區表中保留128個項,每個都是128字節。

     分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大?。ㄎ恢每偸窃贚BA1)以及備份分區表頭和分區表的位置和大?。ㄔ谟脖P的最后)。它還儲存著它本身和分區表的CRC32校驗。固件,引導程序和操作系統可以根據校驗值來判斷分區表是否出錯,如果出錯,則使用軟件從硬盤最后的備份GPT中恢復整個分區表,如果備份的也校驗錯誤,硬盤將不可用,所以GPT分區表不能直接使用16進制編輯器修改。



分區表項(LBA2-33)

GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。接下來的16字節是該分區唯一的GUID(這個GUID指的是該分區本身,而之前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。


GPT的優點

    1,使用GUID來表明分區類型 – 無沖突

    2,為每個分區提供了一個唯一硬盤GUID和一個唯一分區GUID – 一個好的不依賴文件系統封的引用分區和硬盤的方式

    3,任意分區數 – 取決于給分區表分配的空間 – 不需要擴展和邏輯分區。默認定義了128個分區的空間。

    4,使用64位LBA存儲扇區數 – 最大硬盤可尋址大小為2 ZB。

    5,存儲了備份頭和分區表可用于主要部分損壞時進行急救。

    6,CRC32校驗值用于檢測頭和分區表的錯誤與損壞


GPT體系

GPT分區表項的格式

起始字節
長度 內容
0 16字節 分區類型GUID
16 16字節 分區GUID
32 8字節 起始LBA(小端序)
40 8字節 末尾LBA
48 8字節 屬性標簽
56 72字節 分區名(可以包括36個UTF-16(小端序)字符)

資料來源:Wiki、ArchLinux

原創文章,作者:lichenhan,如若轉載,請注明出處:http://www.www58058.com/23165

(0)
lichenhanlichenhan
上一篇 2016-07-12
下一篇 2016-07-12

相關推薦

  • 推薦-Openssl加密解密及PKI,創建私有CA!

    Openssl加密解密及PKI,創建私有CA Openssl加密解密及PKI,創建私有CA Openssl加密解密及PKI,創建私有CA 一、什么是SSL? 二、SSL協議出現的目的? 三、密碼算法 四、SSL握手通信 五、IKE是啥? 六、PKI是啥? 七、Openssl開源項目 八、創建私有CA 九、吊銷證書 附:Openssh基于密鑰認證 一、什么是S…

    Linux干貨 2016-04-05
  • iptables

    練習:基于狀態放行telnet, ftp, ssh, http, samba, icmp等服務 (1) 對本機的ping請求每分鐘不得超出20個 (2) 每客戶端對本機的ssh的并發連接數不得超過3個 (3) 本機的telnet服務僅允許工作時間內訪問 [root@node1 ~]# vim iptables.sh iptabl…

    Linux干貨 2016-10-22
  • 第15天:腳本關鍵字,函數

    http://note.youdao.com/noteshare?id=2ea9bcdf745a47bf65f0cef6e706ccaf

    Linux干貨 2016-09-06
  • Linux終端類型

    目錄 1. 終端概述 2. 串行端口終端(/dev/ttySn) 3. 偽終端(/dev/pty/) 4. 控制終端(/dev/tty) 5. 控制臺終端(/dev/ttyn, /dev/console) 6. 虛擬終端(/dev/pts/n) 7. 其它類型   終端概述 終端…

    Linux干貨 2016-10-18
  • 數組的基本應用

                                   數組 變量:存儲單個元素的內存空間v 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。v 數組名和索引 索引:編號從0…

    Linux干貨 2016-08-24
欧美性久久久久