BIOS、UEFI、Boot Loader都是些什么
什么是BIOS
Basic Input Output System (基本输入输出系统)
其实就是一组保存着计算机最重要的 基本输入输出的程序 、 开机后自检程序 、 系统自启动程序 , 并固化到计算机内主板上的一个ROM芯片上的程序 。
基本的输入输出是什么
BIOS的终极目标:
“BIOS的最主要的功能:初始化硬件平台和提供硬件的软件抽象,引导操作系统启动。”
所以:
输入的是:硬件平台的信息
输出的是:硬件的软件抽象
然后将引导文件加载至内存引导操作系统启动
自检程序“检”了什么
![](http://n4.ikafan.com/assetsj/blank.gif)
每个硬件平台都需要发现IO总线,因为数据的传输离不开总线。
所谓的系统自检,就是 Power On Self Test ,也就是图中的 POST 过程。在传统 BIOS 的上电阶段,通过 IO 枚举发现总线,进入到标准描述的平台接口部分。
系统自启动了什么
![](http://n4.ikafan.com/assetsj/blank.gif)
自启动了操作系统呀~毕竟按下电源只是启动了 BIOS 程序。
此外,在传统 BIOS 程序中,还不支持文件系统,不像上图的 Dell 主板,可以手动的添加引导文件,在传统 BIOS 启动之后, BIOS 会自动加载 MBR 的主引导记录,使操作系统“自行启动”
所以我们再看什么是 BIOS ?
![](http://n4.ikafan.com/assetsj/blank.gif)
输入:围绕上图进行展开,左边部分刚好是硬件的初始化: CPU 初始化、内存初始化……相当于是上面说的,输入的硬件平台信息。
自检:再经过中间部分的系统自检,控制台初始化、设备初始化、通过枚举发现总线并初始化。
输出&自启动:选择引导设备之后,通过 BIOS 将硬件平台的软件接口提供给 OS Loader ,以供操作系统运行使用。
BIOS 的脉络就稍微有一些清楚了吧。
什么是UEFI BIOS
Unified Extensible Firmware Interface(统一可扩展固件接口)
由于安藤处理器芯片组的创新,64位架构的处理器已经不再适用传统BIOS的16位运行模式,英特尔将系统固件和操作系统之间的接口完全重新定义为一个可扩展的,标准化的固件接口规范。
UEFI 名字听起来和 BIOS 相差较大,但是作为业界的新 BIOS —— UEFI BIOS ,毕竟还是 BIOS ,所以它的主要目标就还是—— 初始化硬件,提供硬件的软件抽象,并引导操作系统启动
UEFI和BIOS的区别
![](http://n4.ikafan.com/assetsj/blank.gif)
效率方面: BIOS 正是因为其闭源、接口混乱才导致其最终不适用于新架构的芯片,那时候刚好赶上开源的浪潮, UEFI 开源且使用规定的标准接口,通过提供接口,也将大部分代码移步到了 C 代码,大大降低了开发难度,这也是其快速发展的根本原因。