UEFI Device Path,描述了如何从 SATA 控制器开始,经过磁盘和分区,最终定位到 CentOS GRUB 引导文件的精确位置。让我来解析这个 Device Path 的各个组成部分:
Device Path 结构解析
[sata(0x0,0x0,0x2000)/HD(2,GPT,4B2D258C-5CAB-429C-8FC8-B2B0B1382670,0X66FC800,0x100000)/EFI\centos\grubaa64.efi]
这个 Device Path 可以分为三个主要部分:
SATA 控制器路径:sata(0x0,0x0,0x2000)
0x0:SATA 控制器编号(第一个控制器)
0x0:SATA 端口编号(第一个端口)
0x2000:可能是设备的 LUN(逻辑单元号)或其他识别参数
硬盘和分区路径:HD(2,GPT,
4B2D258C-5CAB-429C-8FC8-B2B0B1382670,0X66FC800,0x100000)
2:分区编号(第二个分区)
GPT:分区表类型(GUID 分区表)
4B2D258C-5CAB-429C-8FC8-B2B0B1382670:分区的唯一标识符(UUID/GUID)
0X66FC800:分区起始扇区的 LBA(逻辑块地址)
0x100000:分区大小(扇区数)
文件路径:EFI\centos\grubaa64.efi
EFI:EFI 系统分区的根目录下的标准目录
centos:CentOS 特定的子目录
grubaa64.efi:ARM64 架构的 GRUB 引导程序(注意 aa64 表示 ARM64)
这个路径的意义
这个 Device Path 表示:
从第一个 SATA 控制器的第一个端口连接的设备开始
访问该设备的第二个 GPT 分区(通过 UUID 标识)
在该分区的 EFI 系统分区内,找到 CentOS 子目录下的 ARM64 版本 GRUB 引导程序
与 GRUB 引导的关系
当 UEFI 固件启动时,它会使用这个 Device Path 来定位并加载 CentOS 的 GRUB 引导程序。这个过程通常发生在:
UEFI 固件读取启动选项列表
找到与这个 Device Path 关联的启动选项
按照路径指示的位置加载 grubaa64.efi
GRUB 程序加载后,读取其配置文件并引导 CentOS 操作系统
这种 Device Path 机制使得 UEFI 能够以精确且标准化的方式定位引导文件,而不依赖于传统 BIOS 的 Cylinder-Head-Sector (CHS) 寻址方式或驱动器字母分配。