EFI系統分區

EFI系統分區(英語:EFI system partition,簡寫為ESP),是一個FATFAT32格式的磁碟分區,但是其分區標識是EF (十六進制) 而非常規的0E0CUEFI韌體可從ESP載入EFI啟動程式或者EFI應用程式。

概覽

EFI系統分區的檔案系統基於FAT檔案系統[1][2][3]。在GUID分區表(GPT)方案中,EFI系統分區的全域唯一識別碼(GUID)是C12A7328-F81F-11D2-BA4B-00A0C93EC93B,而其在主開機紀錄(MBR)分區表方案中的識別碼是0xEF。GPT分區和MBR分區的磁碟都可以包含一個EFI系統分區,因為需要UEFI韌體來支援這兩種分區方案。此外,EFI分區還支援光碟和DVD的El Torito引導格式[4]

在Legacy BIOS中,一個分區的第一個磁區被載入到記憶體中。UEFI韌體不執行MBR中的代碼,除非通過CSM(相容性支援模組)在Legacy BIOS模式下啟動[4]

UEFI規範要求完全支援MBR分區表。一些UEFI實現在檢測到引導磁碟上的某些類型的分區表時,會立即切換到BIOS的CSM引導。這樣如果EFI分區位於MBR分區表中,UEFI引導會被阻止[5]

UEFI韌體提供了對從抽取式儲存裝置(如USB手指)啟動的支援[4]。如果要使用這項功能,抽取式裝置需要採用FAT12FAT16FAT32檔案系統進行格式化,而引導載入程式要麼根據標準的ESP檔案階層存放在EFI分區中,要麼必須向系統引導管理器提供引導載入器的完整路徑。固定驅動器上永遠只應該使用FAT32格式[4]

應用

Linux 使用GRUB2作為成熟的UEFI啟動程式。UEFI韌體將他們載入以後,它們可以從它們支援的所有裝置、分區和檔案系統訪問和引導內核映像,不再受EFI分區的限制。

因為EFI引導存根的存在,不使用傳統UEFI引導載入程式的情況下也可以引導一個Linux內核映像。通過將自己偽裝成PE/COFF映像,並在韌體中顯示為UEFI應用程式,啟用了EFI啟動存根的x86內核映像可以由UEFI韌體直接載入和執行。這種內核映像仍然可以由BIOS的引導載入程式載入和執行;因此,EFI引導存根允許單個內核映像在任何引導環境中工作。

在內核構建組態期啟用選項CONFIG_EFI_STUB (EFI存根支援),可以啟用Linux內核對EFI引導存根的支援[6]。它被合併到2012年3月18日發佈的3.3版Linux內核主線代碼中[7]Gummiboot (又名system-boot)是一個簡單的UEFI引導管理器,它載入並執行組態好的UEFI映像,只訪問EFI系統分區。設定檔片段、內核映像和initrd映像需要駐留在EFI系統分區上,因為Gummiboot不支援訪問其他分區或檔案系統上的檔案。Linux內核需要在啟用CONFIG_EFI_STUB的情況下構建,以便它們可以作為UEFI映像直接執行[8]

EFI分區的掛載點通常是/boot/efi,在Linux啟動後可以訪問它的內容[9]

在不同作業系統下的可見性

  • Windows:一般是不可見的。在磁碟管理程式中可以顯示,亦能透過mountvol <要指定的磁碟區代號>: /s來分配磁碟機代號,但在Windows檔案總管下不會顯示,只能透過命令列存取分區內的檔案。
  • Linux發行版:視同普通分區,可使用mount程式直接掛載其對應的塊裝置。一般掛載於/boot/efi目錄下。

檔案系統

UEFI韌體僅支援FATFAT32檔案系統的EFI系統分區,因此用戶須將EFI系統分區格式化為上述檔案系統,否則將無法被辨識。

參考來源

  1. ^ UEFI Specification Version 2.5, Section 12.3 File System Format (PDF). UEFI.org: 536, 537. April 2015 [2015-05-29]. (原始內容存檔 (PDF)於2015-05-29). The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined. 
  2. ^ Technical Note TN2166: Secrets of the GPT. Developer.Apple.com. 2006-11-06 [2015-05-06]. (原始內容存檔於2015-05-18). 
  3. ^ EFI system partition. ArchWiki. [14 March 2020]. (原始內容存檔於2020-05-06). 
  4. ^ 4.0 4.1 4.2 4.3 UEFI Specifications (versions 2.5 and older) (PDF). UEFI.org. April 2015 [2015-05-29]. (原始內容存檔於2015-05-08). 
  5. ^ UEFI system booting from MBR partition table and GRUB legacy. ArchLinux.org. June 2012 [2013-10-06]. (原始內容存檔於2014-04-19). 
  6. ^ Linux kernel 3.11.1 arch/x86/Kconfig: CONFIG_EFI_STUB (line #1575). Kernel.org. [2013-10-06]. 
  7. ^ Linux kernel 3.3: 1.10. EFI boot support. KernelNewbies.org. 2012-03-18 [2013-10-06]. (原始內容存檔於2013-09-27). 
  8. ^ gummiboot: Simple UEFI Boot Manager. FreeDesktop.org. [2016-01-22]. (原始內容存檔於2013-09-12). 
  9. ^ UEFI - Community Ubuntu Documentation. Ubuntu.com. 2013-12-21 [2013-12-27]. (原始內容存檔於2013-12-27).