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固件提供了對從可移動存儲設備(如U盤)啟動的支持[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).