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)以及備份分區表頭和分區表的位置和大小(在硬盤的最后)。它還儲存著它本身和分區表的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 11:15
下一篇 2016-07-12 11:15

相關推薦

  • vsftpd虛擬用戶搭建

    vsftpd虛擬用戶搭建 1.安裝vsftpd等一系列的安裝包 yum install vsftpd mariadb-server mariadb-devel pam-devel -y 2.安裝pam_mysql 下載:pam_mysql-0.7RC1.tar.gz wget -c ftp://172.16.0.1/pub/Sources/sources/p…

    Linux干貨 2017-06-06
  • Homework Week-13 samba、vsftp文件共享

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;   3)添加s…

    Linux干貨 2016-12-05
  • Linux udev-ASM(基于oracle5.8)

    之前有客戶有在Linux下使用udev來做ASM,操作系統版本為oracle5.8,實際跟rhel5.8差不多,當時只是做了簡單記錄,現在整理下來,與大家一起分享。 1)需求信息 磁盤分區操作 –省略– 分區后,使用parted讓磁盤生效 需求: 將/dev/sdc1 <–>/dev/asm-disk1 將/d…

    Linux干貨 2016-07-29
  • linux基礎命令

    顯示當前系統正在使用的shell:echo ${SHELL}  注意$在這里表示輸出的內容是變量命令提示符:prompt[root@localhost ~]# 表示管理員用戶 $表示普通用戶修改提示符格式 PS1=“[\e[31m][\u@\h \w]\$[\e[0m]”\h 主機名簡稱\H 主機名\w 當前…

    Linux干貨 2017-04-05
  • Grep 文本搜索工具與正則表達式

            grep (縮寫來自Globally search a Regular Expression and Print)是一種強大的文本搜索工具,它能使用特定模式匹配(包括正則表達式)搜索文本,并默認輸出匹配行。Grep在實際中對于我們的工作有著很大的作用,用于對文件的搜索,通過由正則表達式字符以及…

    2017-04-15
  • 新的征程即將開始……

    新的征程,新的開始,開博祭旗篇!??!

    Linux干貨 2016-12-26
欧美性久久久久