什么是BIOS
BIOS全称basic input output system,即基本输入输出系统,它是PC主板上的固件,负责初始化硬件资源并引导启动OS,可以说BIOS就是为了启动OS而生。
大白话“一个电脑的开机程序,就是从按下电源键到看到屏幕LOGO这段时间跑的程序”。
BIOS的作用
实际上启动OS并不一定需要使用BIOS,我们常见的嵌入式设备(如监控机),它们使用BootLoader来引导OS(一般是指Linux),BootLoader相当于BIOS的角色,负责初始化内存,加载OS内核等。由于嵌入式设备的硬件环境各不相同,没有统一的标准,所以在不同嵌入式硬件上运行OS每次都得修改配置BootLoader和内核,比较繁琐。传统的PC设备则不一样,整个硬件系统架构都是有标准的,早期由Intel,IBM,AMD等大厂制定,发展至今已成为一套成熟且统一的系统架构。同样的,既然硬件能统一,OS也可以做到一致。此时,要让OS可以在硬件工作起来,还需要一段引导程序,负责检初始化硬件(如初始化内存),检测硬件资源(如可否正常分配资源)等,前面这些都正常了,说明OS正常运行的条件满足了,此时做最后一步就是引导启动OS了,这一阶段的程序就称为BIOS。
BIOS存在的条件是统一的硬件,像嵌入式这种就完全没有必要了。
代码
BIOS只是一段引导程序,早期由汇编语言编写的。经过多年的发展,硬件可用的资源越来越丰富,BIOS已经无法满足现有的硬件了,此时打造一种新的引导程序便迫在眉睫。2002年12月英特尔发布了一种新的引导程序规范,称为EFI(Extensible Firmware Interface),后交由Unified EFI Forum(统一可扩展固件接口论坛)来推广与发展,并更名UEFI,新的引导程序正式面世了!
UEFI是一套规范,阐述了UEFI需要实现哪些功能,这些功能该怎么实现,实现的时候需要使用什么名称。
UEFI的规范可以当做是一套库函数,是用来被调用的,来自一份称为《Platform Initialization Specification》(简称PI Spec)的手册派上用场了。
BIOS SETUP
为了能让普通用户能够对某些功能进行配置,UEFI提供了一个简单人机界面,称为“Setup界面”,也叫“BIOS Setup”。虽然BIOS退出舞台了,但由于习惯的原因,“BIOS”这个叫法一直存留至今。有了这个BIOS SETUP,用户便可以通过它了解一些基本的信息,如CPU,内存大小等,然后还可以设置启用禁用或启用一些功能,比如有些网吧的电脑会关掉USB接口,而普通用户则要启用,此时就可以对它进行配置。
BIOS固件
UEFI代码编译后会生成一个二进制文件,它便是BIOS/UEFI固件。要让CPU可以执行固件,需要把它烧录在CPU或PCH中的SPI Flash(也称BIOS ROM)中,CPU启动的时候便会从Flash中读取固件,执行指令。