各 DXE Driver 作用
DEVICEPATHDXE
给整个固件提供“构造、解析、打印设备路径”的公共 API
PCDDXE
让整个 DXE 及以后的阶段能用统一、可读写的方式拿到平台配置数据
AMDSEVDXE
把必须“明文”访问的内存区域从加密域里摘出来,并配合 MemEncryptSevLib 清掉对应的 C-bit,保证 SEV 客机能正常读写闪存、运行运行时服务
C-bit(又称 encryption bit)是 AMD SEV/SEV-SNP 里挪用物理地址位来充当的“加密标志”;固件/驱动只需在页表或 GPA 中置/清这一位,就能把指定内存划出或划入 SEV 加密域
REPORTSTATUSCODEROUTERRUNTIMEDXE
实现固件-操作系统全程统一日志输出
RUNTIMEDXE
让固件服务“活过 ExitBootServices”,OS 运行期仍能调用
SECURITYSTUBDXE
拦截每一次即将被执行的 EFI 映像(驱动/应用/启动项/Option-ROM),按策略完成“度量 + 校验 + 登记”,只有全部通过才把 CPU 交给它
EBCDXE
把编译成 EBC 字节码的 .efi 驱动/应用程序现场解释执行,实现“同一字节码,跨所有 CPU 架构运行
只要固件里集成了 EbcDxe,同一份 .efi 映像即可在 IA32、x64、ARM、AARCH64 等不同平台直接运行,无需重新编译
CPUIO2DXE
CPUIO2DXE 管理 DXE/运行期的硬件 I/O ,所有驱动都通过它做端口和 MMIO 操作
CPUDXE
装好协议、建好 GDT、同步 MTRR、让所有核就绪,后续驱动和操作系统才能安全地刷缓存、开关中断、访问内存
INCOMPATIBLEPCIDEVICESUPPORTDXE
为老旧或不合规 PCI 设备准备的 DXE 驱动,让那些不兼容的网卡/显卡/raid 卡等正常启动
RAID卡是一种硬件磁盘阵列控制器,把多块物理硬盘聚合成一个逻辑盘,并提供冗余/提速/热备,操作系统只看到一个“大盘”
PCIHOTPLUGINITDXE
枚举热插拔控制器,把 PCI(e) 热插端口登记成 EFI_HOT_PLUG_DEVICE_PATH,后续 PCI 总线驱动据此分配资源并弹出热插菜单
RESETSYSTEMRUNTIMEDXE
安装 EFI_RESET_ARCH_PROTOCOL,提供 ResetSystem() 接口,固件 & OS 都用它做冷/热/关机复位,且支持虚拟地址重映射
METRONOME
纯软件节拍器,提供固定 1 µs 精度的 WaitForTick(),供早期无 High Precision Event Timer (HPET)/ACPI 定时器时代码延时
HIIDATABASE
维护表单/字符串/字体/图像的中央数据库,所有 Setup 页面、Logo、错误提示都通过它查找/注册/释放资源
Human Interface Infrastructure(HII)
ACPITABLEDXE
把 RSDP→FADT→DSDT/SSDT 等 ACPI 表加载到内存并安装 EFI_ACPI_TABLE_PROTOCOL,OS 用同一接口把表复制进自己的命名空间
ACPI 表是固件给 OS 的“硬件字典”,OS 按表找设备、装驱动、做电源管理
S3SAVESTATEDXE
在 S3 休眠前把 CPU 上下文、芯片集寄存器、内存快照打包成 BOOT_SCRIPT,唤醒时由 BOOTSCRIPTEXECUTORDXE 重放恢复。
DPCDXE
安装 Deferred Procedure Call 机制,允许中断底半部延迟执行,提升多核中断并发性能
IOMMUDXE
初始化 AMD-Vi / Intel VT-d 硬件,暴露 EFI_IOMMU_PROTOCOL,后续 DMA 保护、直通设备隔离靠它设置页表
DMA允许外设不经 CPU 直接读写系统内存
VIRTHSTIDXE
提供虚拟热插拔插槽抽象,把不可热插的端口伪装成可插拔,便于云场景动态挂载 virtio 设备
virtio 是 OASIS 标准化的半虚拟化 IO 框架
virtio 设备就是Guest 里看是标准网卡/磁盘,Host 里走高速后端的半虚拟化 IO 规范
SMMACCESS2DXE
安装 EFI_SMM_ACCESS2_PROTOCOL,负责打开/关闭 SMRAM 窗口,让后续 SMM 模块能把代码/数据放进受保护的 System Management RAM
SMMCOMMUNICATIONBUFFERDXE
注册一块非 SMRAM 共享缓冲区,OS 用 EFI_SMM_COMMUNICATION_PROTOCOL 把请求/结果放进这里,实现 OS↔SMM 安全通信
RNGDXE
把芯片级真随机数源(TRNG、RDRAND、RDSEED)封装成 EFI_RNG_PROTOCOL,固件和 OS 都能通过同接口获取硬件随机值
STATUSCODEHANDLERRUNTIMEDXE
安装运行时状态码回调,把日志同时输出到串口、内存环形缓冲区,OS 阶段仍可读取固件早期崩溃信息
LOCALAPICTIMERDXE
初始化 xAPIC/x2APIC 定时器,提供 per-CPU 的 Local APIC 时钟,供多核调度、S3 唤醒计时使用
PCIHOSTBRIDGEDXE
扫描并配置 Root Bridge 资源窗口(MMIO32/64、IO、Bus 号),为 PCI 总线枚举奠定拓扑与地址空间
Root Bridge 是生成树协议选出的逻辑中心交换机,整个二层网络以它为基准计算无环拓扑
SETUPBROWSER
实现 HII 表单浏览器,用户按 F2/F10/Del 进入的“BIOS 设置界面”就是它在跑
SMBIOSDXE
把内存中的 Type0-Type44 结构体写入 EFI_CONFIGURATION_TABLE,OS 通过 GetSystemConfigurationTable() 拿到 SMBIOS 信息
QEMUFWCFGACPIPLATFORM
在 QEMU 虚拟机构建 ACPI 热插拔描述符,并把 fw_cfg 条目注入,实现云场景“无 South-Bridge”的 ACPI 表加载
LOGODXE
解析 BMP/JPEG Logo 文件,通过 EFI_HII_IMAGE_PROTOCOL 把位图刷到 GOP 帧缓存,显示开机 Logo
QEMURAMFBDXE
针对 QEMU 的“RAM 帧缓冲”设备安装 EFI_GRAPHICS_OUTPUT_PROTOCOL,无硬件 VGA 时也能提供线性显存
SMMCONTROL2DXE
提供 TriggerSmi() 接口,OS 用软件写 IO 端口 0xB2 即可进入 SMM,用于运行时固件更新、电源按钮模拟等
CPUS3DATADXE
收集每核 MSR、MTRR、PM 寄存器,生成 S3 恢复脚本,保证唤醒后 CPU 状态与休眠前一致
WATCHDOGTIMER
初始化硬件看门狗,暴露 EFI_WATCHDOG_TIMER_PROTOCOL,系统卡顿时可自动复位
DRIVERHEALTHMANAGERDXE
实现“驱动健康”协议,允许 Setup 或 OS 查询/修复故障驱动(重新加载、回滚)
RAMDISKDXE
把一段内存伪装成 BlockIo 设备,可用于内存装系统、快速 PE 启动
BlockIo 设备特指以固定大小数据块(典型 512 B/4 KiB)为单位进行随机读写的存储设备
DISPLAYENGINE
统筹多显卡输出,选择主副屏、克隆/扩展模式,决定 BIOS 界面到底显示在哪块屏幕
SMBIOSPLATFORMDXE
根据板级检测数据(SPD、PCI 设备)动态生成 SMBIOS 结构体,再交给 SMBIOSDXE 注册
PISMMIPL
把 DXE 阶段控制权转交给 SMM Core,并加载所有 SMM 驱动
PISMMCORE
SMM 环境下的SMM Core,负责安装 SMM System Table、调度 SMM 驱动、处理 SMI 分发
CPUIO2SMM
在 SMM 里提供与 CPUIO2DXE 相同的端口/MMIO 读写接口,使 SMM 代码也能统一访问硬件
SMMLOCKBOX
把关键数据(密钥、OEM 标志)加密后存进 SMRAM“锁箱”,OS 无法访问,唤醒后再解密
PISMMCPUDXESMM
在 SMM 内完成每核状态保存/恢复、MP 同步、MCE 处理,是 SMM 多核调度的核心
FVBSERVICESSMM
提供 SMM 环境下的固件卷读写服务,支持在 SMM 里安全地刷写 BIOS 区域
VARIABLESMM
在 SMM 内实现变量写服务,把 SetVariable 请求从非安全世界转发进 SMRAM,对抗 OS 级回滚攻击
CPUHOTPLUGSMM
监听 ACPI 热插事件,动态地把新 CPU 加入/移除调度列表,并更新 MP 表、SMBIOS
SMMFAULTTOLERANTWRITEDXE
变量写操作先做双份镜像 + CRC,掉电恢复时自动选择正确副本,实现掉电安全变量
BOOTSCRIPTEXECUTORDXE
S3 唤醒时按顺序重放 S3SaveState 保存的寄存器值,把平台恢复到睡眠前状态
VARIABLESMMRUNTIMEDXE
把 SMM 变量服务再次封装成 EFI_VARIABLE_ARCH_PROTOCOL,OS 阶段仍可进入 SMM 读写变量
PCRTC
提供传统 PC/AT CMOS RTC 接口,包括年月日、闹铃、周期中断,用于无 ACPI 平台计时
SECUREBOOTCONFIGDXE
实现 Setup 菜单里 Secure Boot 开关、密钥导入/导出、恢复出厂密钥功能
MONOTONICCOUNTERRUNTIMEDXE
提供单调递增 64 位计数器,防回滚攻击,用于安全变量、TPM 事件序号
CAPSULERUNTIMEDXE
支持胶囊更新——OS 把新固件打包进内存,调用 UpdateCapsule() 后重启
BDSDXE
Boot Device Selection;按启动顺序枚举所有可启动项,弹菜单或自动加载 bootx64.efi
PLATFORMDXE
板级初始化最后一环:GPIO、电源序列、时钟、传感器,全部就绪后触发 EndOfDxe
PCIBUSDXE
核心 PCI 总线驱动;扫描 Root Bridge→枚举设备→分配资源→安装 BlockIo/Graphics 等协议
VIRTIOPCIDEVICEDXE
把 QEMU 的 virtio-pci 设备包装成标准 PCI 功能头,后续由 VirtioBlk/Net/Scsi 驱动接管
VIRTIO10
提供符合 virtio 1.0 规范的基础读写环、队列分配、ISR 回调,供所有 virtio 驱动复用
VIRTIOBLKDXE
实现 virtio-blk 磁盘协议,暴露 BlockIo,让 guest 从宿主机文件/分区启动
VIRTIOSCSIDXE
实现 virtio-scsi HBA,枚举宿主机上的 SCSI/LUN,安装 BlockIo 或 ScsiIo
VIRTIOSERIALDXE
提供多端口串口,宿主机与 guest 间可零配置创建任意数量 console/日志通道
VIRTIOKEYBOARDDXE
把宿主机键盘事件通过 virtio-input 转发给 guest,实现云桌面低延迟键鼠
CONPLATFORMDXE
根据板级 GPIO/ACPI 选择物理串口或 USB-CDC 作为默认调试控制台
CONSPLITTERDXE
把多个串口/USB/网络控制台聚合成一个逻辑 ConOut,调试信息同时输出到所有端口
GRAPHICSCONSOLEDXE
在 GOP 帧缓存上渲染文字、背景、进度条,把纯文本 ConOut 转成图形界面
TERMINALDXE
支持 ANSI/VT100 转义序列,允许在 UEFI Shell 里跑 vi、htop 等彩色终端程序
QEMUKERNELLOADERFSDXE
仅 QEMU 使用,把宿主机 -kernel 参数指定的 bzImage 暴露成可引导的虚拟文件系统
DISKIODXE
提供块设备原始读写,允许在不分区的情况下直接访问 Logical Block Address(LBA),用于镜像烧录、恢复工具
PARTITIONDXE
解析 MBR/GPT/El Torito/ISO9660/UDF,把整盘拆成若干逻辑分区,每分区再挂 BlockIo
ENGLISHDXE
把内置英文字符串包注册到 HII Database,默认语言 fallback
SCSIBUS
通用 SCSI 总线驱动,枚举 ID/LUN,安装 ScsiIo,后续由 ScsiDisk/ScsiTape 驱动接管
SCSIDISK
在 ScsiIo 之上实现 BlockIo,把 SCSI 命令翻译成 Read10/Write10,提供 512-byte 逻辑扇区
SATACONTROLLER
初始化 Advanced Host Controller Interface(AHCI) 或 Integrated Device Electronics(IDE) 兼容模式,安装 PciIo + ATA_PASS_THRU,为 AtabusDxe 提供端口对象
AT Attachment(ATA) 是定义诸如硬盘等存储设备和 CPU 的接的标准
ATAATAPIPASSTHRUDXE
提供标准 ATA/ATAPI PASS_THRU 协议,允许工具直接发 ATA 命令
ATA/ATAPI PASS-THRU 协议让主机软件绕过常规的块层和文件系统,直接把原始 ATA 或 ATAPI 命令发送到目标存储设备,并取回执行结果
- ATA PASS-THRU
面向硬盘/SSD等本地 ATA 设备 - ATAPI PASS-THRU
面向光驱、磁带机、MO等“打包型”设备
ATABUSDXE
扫描主/从设备,区分 ATA 硬盘与 ATAPI 光驱,分别挂 BlockIo 或 ScsiIo
NVMEXPRESSDXE
初始化 NVMe 1.x/2.x 控制器,建立 Admin/IO 队列,暴露 BlockIo,支持多命名空间
NVMe把软件下发的读写请求变成闪存能执行的命令,再把结果送回主机
SIOBUSDXE
扫描 Super-I/O 芯片(串口、并口、软驱、GPIO),注册相应 I/O 资源
PS2KEYBOARDDXE
在 PS/2 控制器上检测键盘,安装 SimpleTextInput,实现 legacy 键盘输入
Legacy 键盘输入 = “让一颗 2025 年的 CPU 假装自己还在 1981 年,只认最原始的 IBM PC 键盘协议”
BOOTGRAPHICSRESOURCETABLEDXE
生成 BGRT ACPI 表,把 Logo BMP 地址填进去,让 Windows 8+ 在启动转圈时继续显示 OEM Logo
FAT
纯 FAT12/16/32 文件系统驱动,U 盘、ESP 分区都靠它挂载
FAT(File Allocation Table)
UDFDXE
支持 ISO-13346 UDF,用于光盘/BD 镜像直接引导
UDF(Universal Disk Format)
VIRTIOFSDXE
实现 virtio-fs,把宿主机目录映射成 9P 网络文件系统,guest 像本地磁盘一样访问
宿主机目录就是物理机(Host)上普通的本地文件夹
9P 网络文件系统是一种极简、基于消息的网络文件系统协议:
- 客户端通过 TCP/Unix 套接字把“打开、读、写、创建、删除”等 9P 消息发给服务器;
- 服务器把本地目录树按 9P 语义暴露出去,客户端即可像本地磁盘一样挂载访问
HASH2DXECRYPTO
提供 SHA-1/SHA-256/SHA-384/SHA-512 软件实现,无硬件加速时 fallback
SHA-1、SHA-256、SHA-384、SHA-512 统称为安全散列算法(Secure Hash Algorithm),核心作用只是把任意长度数据压成固定长度、不可逆、几乎不会重复的数字指纹,供校验、签名、存证、鉴权使用
VIRTIONETDXE
virtio-net 网卡驱动,安装 SimpleNetwork,支持 PXE/HTTP 启动
UHCIDXE
USB 1.1 通用主机控制器驱动
EHCIDXE
USB 2.0 增强主机控制器驱动
XHCIDXE
USB 3.x 可扩展主机控制器驱动
USBBUSDXE
枚举 USB 总线,给下游设备分配地址、配置描述符
USBKBDXE
USB HID 键盘驱动,安装 SimpleTextInput
HID(Human Interface Device)
USBMASSSTORAGEDXE
USB Mass Storage 协议,把 U 盘、移动硬盘转成 BlockIo
QEMUVIDEODXE
QEMU 标准 VGA 的 GOP 驱动,提供线性帧缓存
VGA (Video Graphics Array) GOP (Graphics Output Protocol)
VIRTIOGPUDXE
virtio-gpu 3D/2D 驱动,支持多输出、硬件光标
VIRTIORNGDXE
virtio-rng,把宿主机熵池通过 PCI 设备喂给 guest /dev/hwrng
SDMMCPCIHCDXE
SDHCI 标准 PCI 主控制器驱动,为 SD/EMMC 卡提供底层 Mmci 接口
SD 和 eMMC 都是闪存卡
SDDXE
SD 卡协议层,实现 BlockIo
EMMCDXE
eMMC 4.5+ 协议层,支持 HS200/HS400、分区切换、RPMB
