计算机启动(上电)后,需要固件(firmware)程序来 初始化硬件 以及选择 需要启动的 Operating System
曾经最流行的固件(firmware)程序是 BIOS(Basic Input Output System),最近 BIOS 正在逐渐被 UEFI(Unified Extensible Firmware Interface)取代。在同一个计算机上,他们只能使用一个(互斥)
UEFI 设计包含安全启动特性(Secure Boot Feature),他可以确保 只有所有组建都进行过有效签名的 OS 才能启动过程中被加载 。此特性也可以禁用以启动未经签名的 OS.
BIOS 或者 UEFI 的主要工作是 初始化硬件 和 并将计算机控制权移交给 Boot Loader ,之后 Boot Loader 会寻找并启动 Operating System.
BIOS 或者 UEFI 通常可以在计算机上电启动后进行配置,一般通过特定的按键(如 F1、F2、F12 等)进入设定界面。主要包含 2 部分内容
- Bios/UEFI 配置工具 : 可以修改 BIOS/UEFI 设定,如启用/禁止某些功能
- Boot Order : 修改启动顺序,如从特定设备(CD、DVD、USB 等)启动
BIOS
BIOS 是位于主板(motherboard)上的一个芯片,负责初始化 CPU(Central Processing Unit)、RAM(Random Access Memory)、PCIE Card(Peripheral Component Interconnect Express Card)和 Network Devices. BIOS 通电后后会立即执行 POST(Power-on self test),确保硬件(CPU、RAM、PCIE、NIC等)配置正确并可正常运行。
- BIOS 仅支持运行于 16 位处理器模式下 ,这限制了任一时刻固件上运行的软件命令(Software Commands)的数量。
- BIOS 为任务运行只分配 1M 内存
- BIOS 运行中的接口和设备(Interfaces and Devices)只能按顺序初始化 ,可能会导致开机缓慢
- BIOS 查找 MBR(Master Boot Record)以确定 OS 的位置并运行 Boot Loader 。MBR 只有 32-bit 的空间用于描述分区(Partitions)的信息,这限制了基于 BIOS 启动的系统,最多支持 4 个主分区(3 个主分区和 1 个逻辑分区),并且分区最大不能超过 2TB.
UEFI
UEFI 最初由 Intel 提出并实现,包括 GPT(Globally Unique Identifier Partition Table),是 UEFI 的一部分。
UEFI 是一个软件(标准)或者说更像是一个微型的系统,用于连接 计算机固件(Computer’s firmware) 和 OS(Operating System) 。UEFI 最终会替代 BIOS 但是向后兼容 BIOS。
UEFI 的功能是通过安装在主板(motherboard)上的特殊固件(firmware)实现的,和 BIOS 一样,其在(生产)出厂之时就已经安装,它是计算机开机(上电)运行的 第一个程序 ,执行和 BIOS 同样的自检(POST)流程,但是它提供了比 BIOS 更多的灵活性 。 UEFI 解决了 BIOS 面临的一些限制,如 最大分区 、 BIOS 执行任务的时间 等
大多数现代化的计算机都已经能同时支持 BIOS 和 UEFI(二选一)。
UEFI 定义了一种新的 OS 和 计算机固件(platform firmware)交流的方式,相比于 BIOS 只能提供 OS 启动过程中必须的信息,UEFI 可以提供更多的特性,如安全启动等。
UEFI 将其初始化数据存放在一个 EFI 分区中,而不是存放在固件(Firmware)中,这个 EFI 分区位于 Nonvolatile Flash Memory ,UEFI 甚至可以在启动时从一个共享网络位置加载。
UEFI 使用比 MBR 更灵活的分区方案,即著名的 GPT(Globally Unique Identifier Partition Table),GPT 使用了 64-bit 用于保留分区表信息,支持多达 128 个分区,并支持系统识别并安装于超过 2TB 的分区之上。
UEFI 能在一个 EFI 系统分区中支持多个 OS,如 Windows OS loader 或者 Debian-based OS loaders,BIOS 只允许存在一个 Boot Loader.
UEFI 是可编程的(Programmable),其相当于一个轻量的 OS.
UEFI 的安全启动(Secure Boot)支持计算机在启动时对其硬件和系统完整性进行校验,可以防止黑客在系统启动时安装 rootkits 并获得系统控制权,Secure Boot 甚至支持授权用户(网络)远程定位问题。
UEFI 包含了一个平台相关(platform-related)的 数据表(data table) ,以及 可以被 OS Loader 调用的 Boot and Runtime Service Calls 。这些信息定义了为支持 UEFI ,固件(Firmwares)或者计算机硬件(Hardwares)应该实现的接口和数据结构(Interfaces and Structures)。