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系统分区格式化为上述文件系统,否则将无法被识别。

参考来源

Wikiwand - on

Seamless Wikipedia browsing. On steroids.