BIOS是个程序,存储在BIOS芯片中,而现在的新式电脑用的基本都是UEFI启动,早期的过渡电脑用的都是EFI启动。实在EFI或UEFI的一部分也是存储在一个芯片中,由于它们在表面形式、基本功能上和BIOS差不多,以是习气上我们也把存储EFI/UEFI的芯片叫做EFI/UEFI BIOS芯片,EFI/UEFI也叫做EFI/UEFI BIOS,但在实际上它们和BIOS根本是不一样的,以是最好还是把后面的“BIOS”尾巴去掉为好,下面就来详细谈一下BIOS、EFI和UEFI。
BIOS用于打算机硬件自检、CMOS设置、勾引操作系统启动、供应硬件I/O、硬件中断等4项紧张功能,因此BIOS程序可以分为多少模块,紧张有Boot Block勾引模块、CMOS设置模块、扩展配置数据(ESCD)模块、DMI网络硬件数据模块,个中勾引模块直接卖力实行BIOS程序本身入口、打算机基本硬件的检测和初始化,ESCD用于BIOS与OS交流硬件配置数据,DMI则充当了硬件管理工具和系统层之间接口的角色,通过DMI,用户可以直不雅观地得到硬件的任何信息,CMOS设置模块便是实现对硬件信息进行设置,并保存在CMOS中,是除了启动初始化以外BIOS程序最常用的功能。
BIOS本身是汇编措辞代码,是在16位实模式下调用INT 13H中断实行的,由于x86-64是一个高度兼容的指令集,也为了迁就BIOS的16位实模式的运行环境,以是纵然现在的CPU都已是64位,如果还是在BIOS启动(基本见于09年以前的主板),在开机时仍旧都是在16位实模式下实行的。16位实模式直接能访问的内存只有1MB,就算你安了4G、8G或者16G还是32G内存,到了BIOS上一律只先认前1MB。在这1MB内存中,前640K称为基本内存,后面384K内存留给开机必要硬件和各种BIOS本身利用,理解了这些,下面谈一下BIOS启动打算机的详细过程。

当按下电源开关时,电源就开始向主板和其他设备供电,这时电压还不稳定,在早期的南北桥主板上,由主板北桥向CPU发复位旗子暗记,对CPU初始化;稳定电压后复位旗子暗记便撤掉。而对付现在的单南桥主板,则由CPU自身调度稳定电压达到初始化的目的,当电压稳定后,CPU便在系统BIOS保留的内存地址处实行跳转BIOS起始处指令,开始实行POST自检。
在POST自检中,BIOS只检讨系统的必要核心硬件是否有问题,紧张是CPU、640K基本内存、显卡是否正常,PS/2键盘掌握器、系统时钟是否有缺点等等。由于POST检讨在显卡初始化以前,因此在这个阶段如发生缺点,是无法在屏幕上显示的,不过主板上还有个报警扬声器,而且如果主板的8255外围可编程接口芯片没有破坏的话,POST报警声音一定是会出来的。可以根据报警声的不同大致判断缺点所在,一样平常情形下,一声短“嘀”声基本代表正常启动,不同的缺点则是不同的短“嘀”声和长“嘀”声组合。POST自检结束后,BIOS开始调用中断完成各种硬件初始化事情。
硬件初始化事情中,紧张解释两点,首先经由POST检测后,电脑终于涌现了开机启动画面,这便是已经检测到了显卡并完成了初始化。但是请把稳,由于BIOS是在16位实模式运行,因此该画面因此VGA分辨率(640480,纵横比4:3)显示的,由于实模式最高支持的便是VGA。以前的小14-17寸CRT显示器由于都是4:3比例,最高分辨率也比较低,因此这个开机启动画面没有什么违和感,但现在的液晶显示器基本上都是宽屏16:9的,分辨率也较高,因此在这样的显示屏下,启动画面上的统统东西显示都可以说“惨不忍睹”——图形被拉长,字体很大很模糊,可以很明显看到显示字体的锯齿。第二,BIOS只识别到由主勾引记录(MBR)初始化的硬盘,之以是解释这点,是由于后续的EFI或UEFI采取了一种新的GUID磁盘分区系统(GPT)格式,这种硬盘在BIOS下是无法识别的。硬件全部初始化完毕后,接下来进入更新ESCD阶段。
在ESCD更新阶段中,BIOS将对存储在CMOS中和操作系统交流的硬件配置数据进行检测,如果系统硬件发生变动,则会更新该数据,否则不更新保持原状不变,ESCD检测或更新结束后,BIOS将完成末了一项事情,便是启动操作系统。
末了这一步中,BIOS根据CMOS中用户指定的硬件启动顺序,读取相应设备的启动或勾引记录,勾引相应设备上的操作系统启动,进入操作系统,此后便由操作系统接替BIOS卖力硬件和软件间的相互通信。如果创造所有硬件都没有能勾引操作系统的记录,则会在屏幕上显示相应缺点信息,并将电脑坚持在16位实模式。
虽然BIOS作为电脑加电启动所必不可少的部分,但是从其于1975年出身之日起近30余年,16位汇编措辞代码,1M内存寻址,调用中断一条条实行的理念和办法竟然一点都没有改变,虽然经各大主板商不懈努力,BIOS也有了ACPI、USB设备支持,PnP即插即用支持等新东西,但是这在根本上没有改变BIOS的实质,而英特尔为了迁就这些旧技能,不得不在一代又一代处理器中保留着16位实模式(否则根本无法开机的)。但是,英特尔在2001年开拓了全新的安腾处理器,采取IA-64架构,并推出了全新的EFI。后来证明,安腾处理器、IA-64架构没有推广开来,而EFI和后继的UEFI却发扬光大,成为现在电脑的紧张预启动环境。
EFI,是Extensible Firmware Interface的词头缩写,直译过来便是可扩展固件接口,它是用模块化、高等措辞(紧张是C措辞)构建的一个小型化系统,它和BIOS一样,紧张在启动过程中完成硬件初始化,但它是直策应用加载EFI驱动的办法,识别系统硬件并完成硬件初始化,彻底摒弃读各种中断实行。EFI驱动并不是直接面向CPU的代码,而是由EFI字节码编写成,EFI字节码是专用于EFI的虚拟机器指令,须要在EFI驱动运行环境DXE下阐明运行,这样EFI既可以实现通配,又供应了良好的兼容。此外,EFI完备是32位或64位,摒弃16位实模式,在EFI中就可以实现处理器的最大寻址,因此可以在任何内存地址存放任何信息。其余,由于EFI的驱动开拓非常大略,基于EFI的驱动模型原则上可以使EFI打仗到所有硬件功能,在EFI上实现文件读写,网络浏览都是完备可能的。i,BIOS上的的CMOS设置程序在EFI上是作为一个个EFI程序来实行的,硬件设置是硬件设置程序、而启动管理则是另一个程序,保存CMOS又是另一个程序,虽然它们在形式的Shell上是在一起的。
EFI在功能上完备等同于一个轻量化的OS(操作系统),但是EFI在制订时就定位到不敷以成为专业OS的地位上,首先,它只是一个硬件和操作系统间的一个接口;其次,EFI不供应中断访问机制,EFI必须用轮询的办法检讨并阐明硬件,较OS下的驱动实行效率较低,末了,EFI只有大略的存储器管理机制,在段保护模式下只将存储器分段,所有程序都可以存取任何一段位置,不供应真实的保护做事。伴随着EFI,一种全新的GUID磁盘分区系统(GPT)被引入支持,传统MBR磁盘只能存在4个主分区,只有在创建主分区不敷4个时,可以建立一个扩展分区,再在其上建立被系统识别的逻辑分区,逻辑分区也是有数量的,太多的逻辑分区会严重影响系统启动,MBR硬盘分区最大仅支持2T容量,对付现在的大容量硬盘来说也是摧残浪费蹂躏。GPT支持任意多的分区,每个分区大小原则上是无限制的,但实际上受到OS的规定限定不能做到无限,不过比MBR的2T限定是非常主要的进步。GPT的分区类型由GUID表唯一指定,基本不可能涌现重复,个中的EFI系统分区可以被EFI存取,用来存取部分驱动和运用程序,虽然这原则上会使EFI系统分区变得不屈安,但是一样平常这里放置的都是些“边缘”数据,纵然其被毁坏,一样平常也不会造成严重后果,而且也能够大略的规复回来。
当EFI发展到1.1的时候,英特尔决定把EFI公之于众,于是后续的2.0吸引了浩瀚公司加入,EFI也不再属于英特尔,而是属于了Unified EFI Form的国际组织,EFI在2.0后也遂改称为UEFI,UEFI,个中的EFI和原来是一个意思,U则是Unified(一元化、统一)的缩写,以是UEFI的意思便是“统一的可扩展固件接口”,与前身EFI比较,UEFI紧张有以下改进:
首先,UEFI具有完全的图形驱动功能,之前的EFI虽然原则上加入了图形驱动,但为了担保EFI和BIOS的良好过渡,EFI多数还是一种类DOS界面(仍旧是640480VGA分辨率),只支持PS/2键盘操作(极少数支持鼠标操作),不支持USB键盘和鼠标。到了UEFI,则是拥有了完全的图形驱动,无论是PS/2还是USB键盘和鼠标,UEFI一律是支持的,而且UEFI在显卡也支持GOP VBIOS的时候,显示的设置界面是显卡高分辨率按640480或1024768显示,因此画面虽小但很清楚,但是这样会导致屏幕周围大片留黑,不过鱼和熊掌不可兼得,除非UEFI默认窗口大小也是最高分辨率。
其次,UEFI具有一个独特的功能,安全启动,而EFI是没有安全启动的,安全启动(Secure Boot),实际上普通的阐明是叫做固件验证。开启UEFI的安全启动后,主板会根据TPM芯片(或者CPU内置的TPM)记录的硬件署名对各硬件判断,只有符合认证的硬件驱动才会被加载,而Win8往后的Windows则是在操作系统加载的过程中对硬件驱动连续查署名,符合Windows记录的硬件才能被Windows加载,这在一定程度上降落了启动型程序在操作系统启动前被预加载造成的风险,但是这也会造成系统安装变得垄断。
无论EFI还是UEFI,都必须要有预加载环境、驱动实行环境、驱动程序等必要部分组成,为了支持部分旧设备(如在UEFI下挂载传统MBR硬盘,不支持UEFI启动的显卡在UEFI下仍旧支持运行等),还须要一个CSM兼容性支持模块、EFI或UEFI都是仅支持GPT磁盘勾引系统的,下面就详细谈一下EFI或UEFI启动打算机的过程。
一样平常地,预加载环境和驱动实行环境是存储在UEFI(UEFI BIOS)芯片中的,当打开电源开关时,电脑的紧张部件都开始有了供电,与BIOS不同的是,UEFI预加载环境首先开始实行,卖力CPU和内存(是全部容量)的初始化事情,这里如涌现主要问题,电脑纵然有报警喇叭也不会响,由于UEFI没有去驱动8255发声,不过预加载环境只检讨CPU和内存,如果这两个紧张硬件出问题,屏幕没显示可以立即确定,其余一些主板会有供应LED提示,可根据CPU或内存亮灯大致判断故障。
CPU和内存初始化成功后,驱动实行环境(DXE)载入,当DXE载入后,UEFI就具有了列举并加载UEFI驱动程序的能力,在此阶段,UEFI会列举搜索各个硬件的UEFI驱动并相继加载,完成硬件初始化事情,这比较BIOS的读中断加载速率会快的多,同样如加载显卡的UEFI驱动成功,电脑也会涌现启动画面,硬件驱动全部加载完毕后,末了同BIOS一样,也得去启动操作系统。
在启动操作系统的阶段,同样是根据启动记录的启动顺序,转到相应设备(仅限GPT设备,如果启动传统MBR设备,则须要打开CSM支持)的勾引记录,勾引操作系统并进入,这里须要把稳的是,UEFI在检测到无任何操作系统启动设备时,会直接进入UEFI设置页面,而不是像BIOS那样黑屏显示干系信息。
综上对BIOS和UEFI启动打算机过程的阐述,可以概括为:BIOS先要对CPU初始化,然后跳转到BIOS启动处进行POST自检,此过程如有严重缺点,则电脑会用不同的报警声音提醒,接下来采取读中断的办法加载各种硬件,完成硬件初始化后进入操作系统启动过程;而UEFI则是运行预加载环境先直接初始化CPU和内存,CPU和内存若有问题则直接黑屏,其后启动PXE采取列举办法搜索各种硬件并加载驱动,完成硬件初始化,之后同样进入操作系统启动过程。
此外,BIOS是16位汇编措辞程序,只能运行在16位实模式,可访问的内存只有1MB,而UEFI是32位或64位高等措辞程序(C措辞程序),打破实模式限定,可以达到哀求的最大寻址。