SoC 平台上 Windows 版本的 UEFI 要求
本文介绍适用于 Windows 10 桌面版(家庭版、专业版、企业版和教育版)和Windows 10 移动版的 UEFI 要求。 有关仅适用于Windows 10 移动版的其他要求,请参阅 Windows 10 移动版的 UEFI 要求。
要求摘要
下表列出了 UEFI 规范(UEFI 2.3.1 规范的第 2.6 节)中定义的 UEFI 符合性的所有当前要求。 在此表中,“显式 Windows 要求”一词标识由 Windows 组件直接调用的任何协议或服务。 尽管 Windows 仅显式使用这些服务,但核心固件实现、EFI 设备驱动程序或开发和部署工具链可能隐式或显式要求其他列出的服务和协议。
Microsoft 欢迎实施者的反馈和意见,并就这一组要求发表评论。 对于 OS 或固件不要求的任何 UEFI 符合性要求,我们打算通过 UEFI.org 让此类设备放宽这些符合性要求。
有关特定要求的详细信息,请参阅表后面的部分。
要求 | UEFI 规范部分 | 说明 |
---|---|---|
EFI 系统表 | 4.3 | 显式 Windows 要求 |
EFI 启动服务 | 6.0 | |
事件、计时器和任务服务 | 6.1 | |
内存服务 | 6.2 | 显式 Windows 要求' |
协议处理程序服务 | 6.3 | 显式 Windows 要求 |
图像服务 | 6.4 | 显式 Windows 要求 |
其他服务 | 6.5 | 显式 Windows 要求 |
EFI 运行时服务 | 7.0 | |
时间服务 | 7.3 | 显式 Windows 要求 |
变量服务 | 7.2 | 显式 Windows 要求 |
其他服务 | 7.5 | 显式 Windows 要求 |
所需的 UEFI 协议 | ||
EFI 加载的图像协议 | 8.1 | |
EFI 加载的图像设备路径协议 | 8.2 | |
EFI 设备路径协议 | 9.2 | 显式 Windows 要求 |
EFI 设备路径实用工具协议 | 9.5 | |
EFI 解压缩协议 | 18.5 | |
EBC 解释器协议 | 20.11 | |
有条件要求的 UEFI 协议 | ||
EFI 简单文本输入协议 | 11.3 | 显式 Windows 要求 |
EFI 简单文本输入 EX 协议 | 11.2 | |
EFI 简单文本输出协议 | 11.4 | |
EFI 图形输出协议 | 11.9 | 显式 Windows 要求 |
EFI EDID 发现的协议 | 11.9.1 | |
EFI EDID 活动协议 | 11.9.1 | |
EFI 块 IO 协议 | 12.8 | 显式 Windows 要求 |
EFI 磁盘 IO 协议 | 12.7 | |
EFI 简单文件系统协议 | 12.4 | |
EFI Unicode 排序规则协议 | 12.10 | |
EFI 简单网络协议 | 21.1 | |
EFI PXE 基本代码协议 | 21.3 | |
EFI 启动完整性服务协议 | 21.5 | |
EFI 串行 IO 协议 | 11.8 | |
UEFI Arm 绑定 | 2.3.5 | 显式 Windows 要求 |
安全要求 | ||
安全启动 | 27.0 | 显式 Windows 要求 |
启动管理器要求 | 3.1, 3.3 | 显式 Windows 要求 |
EFI 系统表要求
EFI 系统表必须符合实施修订级别的标准定义。 EFI 系统表指向的配置表必须包括下表中所述的两个 GUID 及其关联的指针。
GUID | 说明 |
---|---|
EFI_ACPI_Table GUID | 此 GUID 必须指向平台的 ACPI 根系统说明指针(RSDP)。 |
SMBIOS_Table GUID | 此 GUID 必须指向 SMBIOS 入口点结构。 Windows 要求在 2.4 或更高版本的修订版级别使用 SMBIOS 规范。 需要第 3.2 节“所需结构和数据”和 4 节“一致性准则”。 Windows SMBIOS 兼容性测试可用。 |
EFI 启动服务要求
下表列出了 Windows 的 EFI 启动服务要求。
EFI 启动服务 | 要求 |
---|---|
内存服务 | Windows 需要所有内存服务。 |
协议处理程序服务 | Windows 需要以下协议处理程序服务: OpenProtocol() CloseProtocol() LocateDevicePath() LocateHandle() |
图像服务 | Windows 需要以下映像服务: ExitBootServices() |
其他启动服务 | Windows 需要以下杂项启动服务: Stall() 注意: 需要 Stall() 实现具有确定性(可重复)错误,以便能够可靠地进行错误更正或取消。 |
EFI 运行时服务要求
下表列出了 Windows 的 EFI 运行时服务要求。
EFI 运行时服务 | 要求 |
---|---|
时间服务 | Windows 需要以下时间服务: GetTime() SetTime() 注意: 仅在启动期间(在 ExitBootServices()之前调用时间服务来访问平台的一天硬件。 |
变量服务 | 所有 UEFI 变量服务都需要在目标系统类上管理多个启动设备和安全变量。 |
其他运行时服务 | Windows 需要以下杂项运行时服务: ResetSystem() 注意: ResetSystem() 实现必须同时支持重置和关闭选项。 |
协议要求
下表描述了 Windows 在启动期间完成特定功能所需的 UEFI 协议。
协议 | 要求 |
---|---|
图形输出协议 | Windows 需要图形输出协议(GOP)。 特定的帧缓冲区要求包括: 对于集成显示器, HorizontalResolution 和 VerticalResoluton 必须是面板的本机分辨率。 对于外部显示器, HorizontalResolution 和 VerticalResoluton 必须是显示器的本机分辨率,或者,如果不支持,则视频适配器和连接的显示器都支持的最高值。 PixelsPerScanLine 必须等于 HorizontalResolution。 PixelFormat 必须是 PixelBlueGreenRedReserved8BitPerColor。 需要物理帧缓冲区; 不支持 PixelBltOnly 。 将执行移交给 UEFI 启动应用程序时,固件启动管理器和固件不得将帧缓冲区用于任何目的。 启动服务退出后,必须继续扫描帧缓冲区。 |
备用显示输出 | UEFI 固件必须使用硬件支持的任何显示连接器来支持启动。 如果内部面板已连接并可见,则必须使用内部面板。 具有物理连接的显示器的所有输出都必须显示启动屏幕。 对于连接的显示器,UEFI 固件必须: 如果可以确定本机分辨率,请使用显示本机模式初始化输出。 如果无法实现本机模式,则必须初始化为最高兼容模式。 如果无法确定显示功能,则必须在已知与尽可能多的监视器兼容(通常为 640x480 或 1024x768 的 60 Hz)模式下初始化连接的显示器。 |
启动时输入 | 在具有内置键盘或附加键盘的系统上进行启动选择或其他菜单选择时,需要使用 EFI 简单文本输入协议。 对于无键盘系统,建议在启动环境中使用三个按钮: “开始”按钮 “向上音量”按钮 “调低音量”按钮 按钮按下应通过 EFI 简单文本输入协议报告,方法是分别将它们映射到以下键盘键: Windows 键 向上键 向下键 |
本地存储启动 | Windows 需要对包含 EFI 系统分区和 Windows OS 分区的存储解决方案提供块 I/O 协议和设备路径协议支持。 若要从需要磨损调配或其他闪存管理的闪存存储启动,必须在固件(而不是 UEFI 应用程序中)中实现此操作。 |
安全要求
Windows 在安全启动、测量启动、加密和数据保护等领域具有安全要求。 下表详细介绍了这些要求。 此外,对于 SoC 硬件阻止符合现有标准(TPM、RTC 等)的区域,正在开发其他要求。 这些内容在表的末尾进行描述。
区域 | 要求 |
---|---|
常规 |
|
UEFI 安全启动 |
|
UEFI 测量的启动 | 以下要求并不意味着 TCG TPM 实现需要;然而,它们意味着需要对受影响的区域使用等效功能。 平台支持可以通过在安全执行环境中执行的 TPM 的固件实现提供,在加密加速引擎的基础上分层并利用隔离存储。 Microsoft 可以为供应商使用的此类 TPM 实现提供参考软件。 这需要进一步讨论。
|
密码 |
|
数据保护 |
|
其他安全要求 | SoC 平台上的 Windows 需要满足以下附加要求。
|
固件启动管理器要求
固件启动管理器必须支持规范第 3.3 节中定义的默认启动行为。 此外,需要支持多启动、全局定义的变量和规范第 3.1 节的启动管理器要求。
UEFI Arm 绑定要求
UEFI Arm 绑定包括特定于 Arm 平台的要求,以便符合 UEFI 规范。 Windows 需要适用于 ARMv7 的 Arm 绑定中的所有内容。 由于 Windows 不支持 ARMv7 之前的任何内容,因此特定于 ARMv6k 和更低版本的绑定中的要求是可选的。
例如,绑定指定如何配置 MMU,以及如何映射物理内存。 绑定还指定仅在 Arm ISA 中执行对 UEFI 协议和服务进行的调用,这意味着在 Thumb2 或 Thumb 中运行的软件需要在调用 UEFI 函数之前切换回 Arm 模式。
UEFI Arm 多处理器启动要求
Microsoft 开发了一个协议,用于在多处理器 UEFI 平台上启动多个 Arm 核心。 不支持 Power State 协调接口 (PSCI) 的 Arm 平台上的 Windows 需要此协议。 支持 PSCI 的平台不得使用此协议。 有关此协议的详细信息,请参阅 ACPI 组件体系结构(ACPICA)网站上的基于 UEFI Arm 的平台 文档上的多处理器启动。
平台设置要求
固件负责在将系统硬件移交给 OS 加载程序之前将系统硬件置于定义良好的状态。 下表定义了相关的平台设置要求。
要求 | 说明 |
---|---|
启动路径 | 固件必须将平台初始化为 Windows 能够通过 UEFI 访问启动设备并加载内核的点。 给定性能和电源注意事项,必须以合理的速率对层次结构中涉及的任何设备进行时钟和供电。 基础处理器核心本身也应以合理的速率时钟和电源,以便系统可以及时启动,而无需耗尽电池。 |
核心系统资源 | 必须打开和时钟通过 ACPI 表向 OS 公开的核心系统资源。 核心系统资源包括必须由 OS 管理的中断控制器、计时器和 DMA 控制器。 此外,调用 ExitBootServices()必须屏蔽中断,直到 OS 中的关联设备驱动程序取消屏蔽并重新启用设备上的中断。 如果在启动服务期间启用了中断,则假定固件管理中断。 |
调试 | Windows 支持通过 USB 3 主机(XHCI)、USB 2 主机(EHCI)1、I企业版E 1394、串行和 USB 函数接口(以及 PCI 以太网适配器)进行调试。 在 OS 交接之前,固件必须至少为其中一个电源、时钟和初始化。 无论提供哪种选项,它都必须具有公开的端口以进行调试,并且控制器必须进行内存映射,或者通过专用(非共享)外围总线进行连接。 |
其他平台设置要求 | 在将控制交给 OS 加载程序之前,必须在固件中完成任何引脚复用和填充配置。 |
安装要求
Windows 要求 OS 分区驻留在 GPT 分区存储解决方案上。 MBR 分区存储可用作数据存储。 如 UEFI 规范中定义,UEFI 平台需要专用系统分区。 Windows 需要此专用系统分区,称为 EFI 系统分区(ESP)。
硬件安全测试接口 (HSTI) 要求
平台必须实现硬件安全测试接口,并且平台需要共享硬件安全可测试性规范中指定的文档和工具。