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]。如果要使用这项功能,可移动设备需要采用FAT12、FAT16或FAT32文件系统进行格式化,而引导加载程序要么根据标准的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]。
在不同操作系统下的可见性
文件系统
UEFI固件仅支持FAT或FAT32文件系统的EFI系统分区,因此用户须将EFI系统分区格式化为上述文件系统,否则将无法被识别。
- (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.
- . Developer.Apple.com. 2006-11-06 [2015-05-06]. (原始内容存档于2015-05-18).
- . ArchWiki. [14 March 2020]. (原始内容存档于2020-05-06).
- (PDF). UEFI.org. April 2015 [2015-05-29]. (原始内容存档于2015-05-08).
- . ArchLinux.org. June 2012 [2013-10-06]. (原始内容存档于2014-04-19).
- . Kernel.org. [2013-10-06].
- . KernelNewbies.org. 2012-03-18 [2013-10-06]. (原始内容存档于2013-09-27).
- . FreeDesktop.org. [2016-01-22]. (原始内容存档于2013-09-12).
- . Ubuntu.com. 2013-12-21 [2013-12-27]. (原始内容存档于2013-12-27).