EFI在开机时的作用和BIOS一样,就是初始化PC,但在细节上却又不一样。BIOS对PC的初始化,只是按照一定的顺序对硬件通电,简单地检查硬件是否能工作,而EFI不但检查硬件的完好性,还会加载硬件在EFI中的驱动程序,不用操作系统负责驱动的加载工作。 EFI的最革命之处,是颠覆了BIOS的界面概念,让操作界面和Windows一样易于上手。在EFI的操作界面中,鼠标成为了替代键盘的输入工具,各功能调节的模块也做的和Windows程序一样,可以说,EFI就是一个小型化的Windows系统。
对于操作系统来说,如果主板使用的是BIOS,那么操作系统就必须面对所有的硬件,大到主板显卡,小到鼠标键盘,每次重装系统或者系统升级,都必须手动安装新的驱动,否则硬件很可能无法正常工作。而基于EFI的主板则方便很多,因为EFI架构使用的驱动基于EFI Byte Code。EFI Byte Code有些类似于Java的中间代码,并不由CPU直接执行操作,而是需要EFI层进行翻译。对于不同的操作系统来说,EFI将硬件层很好地保护了起来,所有操作系统看到的,都只是EFI留给EFI Byte Code的程序接口,而EFI Byte Code又直接和Windows的API联系,这就意味着无论操作系统是Windows还是Linux,只要有EFI Byte Code支持,只需要一份驱动程序就能吃遍所有操作系统平台。
更为神奇的是,EFI Byte Code驱动还能绕过操作系统,直接安装在EFI环境中,这样对硬件的控制就由EFI层负责,EFI向操作系统直接提供硬件操作的接口,不需要操作系统再调用驱动。这种方式的优点是不需要进入操作系统,只需要进入EFI界面,更新驱动程序就可以完成,而且不需要对每一个操作系统进行驱动升级,只要EFI界面中升级一次,所有上层的操作系统都可以直接调用新的EFI接口。
EFI在开机之始就能够驱动所有的硬件,网络当然也不会例外,所以在EFI的操作界面中,程序可以直接连接上互联网,向外界求助操作系统的维修信息或者在线升级驱动程序。
更方便的编程方式
有人会问:既然EFI功能那么强大,那它存放在什么地方?是存放在原来的BIOS芯片中吗?答案当然是No。BIOS芯片只有256KB,远远不够EFI使用。EFI是以小型磁盘分区的形式存放在硬盘上的。EFI的安装,必须在支持EFI功能的主板上,使用光驱引导系统,然后对磁盘进行EFI化的处理,这个处理的过程,主要就是划分EFI独用的磁盘空间。
EFI的存储空间大约为50MB到100MB,具体视驱动文件多少而定。在这部分空间中,包含以下几个部分:
1. Pre-EFI初始化模块
2. EFI驱动执行环境
3. EFI驱动程序
4. 兼容性支持模块(CSM)
5. EFI高层应用
6. GUID 磁盘分区