一:什么是UEFI

The Unified Extensible Firmware Interface (UEFI) Specification, previously known as the Extensible Firmware Interface (EFI) Specification, defines an interface between an operating system and platform firmware. The interface consists of data tables that contain platform-related information, boot service calls, and runtime service calls that are available to the operating system and its loader. These provide a standard environment for booting an operating system and running pre-boot applications.

1:自己的理解,为什么有uefi?

uefi和legacy是BIOS不同的启动模式。legacy可以理解为旧模式,uefi为新模式。在旧模式下,主机上各个硬件的交互,硬件与软件的交互没有统一的标准。导致很多问题难以解决,典型的就是电源管理,设备配置界面。在这种历史背景下Intel联合微软,惠普等巨头制定了UEFI,统一可扩展固件接口。

借鉴了软件编程的理念,协议化,接口化,可扩展化。UEFI本身是一个协议,如下图所示,有很多protocol支持完成各种功能,protocol就是完成各种功能的函数指针集合,如加载image。现在uefi通常代指新的启动模式。

uefi模式带来的变化:

1):接口协议化,让PCIE的uefi driver容易编写,提供HII接口,可以直接在BIOS setup界面配置cpu,设备参数。

2):支持GPT设备,解除了磁盘2T的限制。

3):增加了很多安全功能。参考下文

4):支持更多的启动设备。

 2:启动流程

UEFI启动流程如下,每个阶段名称缩写参考图片:

1):SEC是security,执行硬件相关的安全认证

2):PEI,包括CPU,内存,chipset初始化等。最初内存没有ready,程序运行在cache中。

3):DXE,会把uefi驱动全部注册,然后把设备全部注册,使用connect_all函数双循环去匹配设备和驱动,最后bind在一起。

4):BDS,将能启动的设备生成启动项,供用户选择。包括磁盘,USB,网络,cd等等。

5):BIOS下选择了一个系统启动项,实际进入了UEFI的APP中,Linux一般是grub。它的作用是将磁盘中的kernel加载到内存,然后跳转kernel的入口函数。grub还会把内核参数传递到制定位置,kernel启动后还会再用。

BIOS到OS的过程:

1):UEFI负责初始化硬件设备,包括CPU,MEM,外接设备的初始化,资源分配等。

2):UEFI转到OS时,内存已经包括很多有用信息。包括mem table(e820),ACPI table,SMBIOS table等等。OS会拿到信息进行内存构建,设备再次初始化等等。

简而言之:BIOS负责初始化好硬件设备,让它处于ready状态,OS负责管理资源,向用户态程序提供服务。最后应用程序使用服务,向普通的user提供服务。

二:安全

1:UEFI secure Boot

UEFI支持安全启动模式。

2:UEFI支持设备固件签名

 支持用户在SETUP配置界面查看外接设备的校验信息。

 

3:UEFI支持安全开发包,开发者可以直接使用,增强安全

4:SMM角度保护系统:

5:Network Boot in a Zero-Trust Environment with UEFI

三:OS兼容列表

1:centos

This page describes the current status of UEFI support in CentOS and what is being done to fix the remaining issues.

Current status for x86_64 install media

mediaVirtualBoxVMWareReal iron
CentOS 6.5 DVDOKOKOK1
CentOS 6.5 minimalOKto be verifiedOK2
CentOS 6.5 netinstallgets stuck in UEFI shellnot workingTBD
CentOS 6.5 LiveCDgets stuck in GRUBto be verifiedTBD
CentOS 6.5 LiveDVDgets stuck in GRUBto be verifiedTBD
CentOS 7 (any media)OKOKOK

centos6.5以上应该都支持UEFI模式。

RHEL 7 Beta and RC can be booted with Secure Boot enabled.

2:redhat

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐