BIOS和UEFI的区别

一:什么是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

### BIOSUEFI区别及各自特点 BIOS(Basic Input/Output System)UEFI(Unified Extensible Firmware Interface)是计算机启动过程中两种不同的固件接口技术,它们在功能、性能以及安全性等方面存在显著差异。以下是两者的主要区别及其各自特点: #### 1. **架构与设计** - BIOS采用的是基于16位代码的架构,其设计较为陈旧,无法充分利用现代硬件的功能[^1]。 - UEFI则是一种现代化的固件接口,支持32位或64位代码,能够更好地适应当前高性能硬件的需求,并提供了更灵活的扩展性[^2]。 #### 2. **启动方式** - BIOS通过MBR(主引导记录)分区表进行启动,这种方式限制了硬盘容量的最大值为2TB。 - UEFI使用GPT(GUID分区表)分区格式,理论上支持几乎无限大的硬盘容量(受限于操作系统支持),并且允许更高的启动效率。 #### 3. **安全性** - BIOS本身不具备内置的安全机制,容易受到恶意软件攻击。 - UEFI引入了Secure Boot功能,这是一种安全标准,可以确保只有经过数字签名验证的操作系统内核或其他软件才能加载运行,从而有效防止低级恶意软件的入侵。 #### 4. **兼容性与功能性** - BIOS对硬件操作系统的兼容性较强,但缺乏高级功能的支持。 - UEFI不仅提供传统BIOS的所有功能,还增加了许多新特性,例如网络唤醒、文件系统访问等,并且可以通过插件形式扩展更多功能[^2]。 #### 5. **性能表现** - 在启动速度方面,由于UEFI优化了初始化流程并减少了不必要的检查步骤,因此通常比BIOS更快[^2]。 - 此外,UEFI还支持更高效的驱动管理,比如通过特定模块如PCI Host Bridge控制器驱动来实现跨平台统一接口[^3]。 #### 示例代码:检测当前系统是否为UEFI模式 以下是一个简单的Python脚本示例,用于判断当前Windows系统是否处于UEFI模式下运行: ```python import os def is_uefi(): return os.path.isdir(r"C:\Windows\Panther\UEFI") if is_uefi(): print("System is running in UEFI mode.") else: print("System is not running in UEFI mode.") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值