如果你并非一位专业技术人员,要独立完成主板BIOS的详细设定是一个非常困难的任务。事实上,绝大多数用户都对BIOS望而生畏,复杂的设定项目、不友好的字符界面以及密密麻麻的硬件参数,令人不知从何下手。而且设定BIOS还会有一定的危险性,倘若你把CPU或内存的频率设得过高,系统就很可能无法开机。这些情况对专业人士而言根本不是什么问题,但多数PC用户并不掌握相关的专业知识,调校BIOS对他们来说的确太困难了。BIOS的功能仅限于对计算机硬件的基础设定,而无法提供诸如系统恢复、远程管理、磁盘修复工具之类的附加功能。以英特尔为首的PC业界很早就意识到BIOS存在的弊端,在英特尔的主导下,名为“EFI(Extensible Firmware Interface,可扩展固件接口)”的下一代BIOS技术早在1999年底就开始启动,EFI以人性化的图形界面代替文本界面,对硬件的管理也更加科学,同时拥有灵活的可扩展性,允许设备厂商增加各类附加功能,大大提高了整机的可管理性。2004年,EFI开发成功,不过英特尔初期只是将EFI用于Itanium服务器平台。PC厂商、主板厂商和BIOS开发商虽然对EFI很感兴趣,但受限于Windows操作系统,EFI一直都无法进入PC产品中,导致其一度沉寂。最终扮演领衔者角色的却是苹果公司,苹果在1月份推出Macbook pro率先采用EFI技术。PC方面,微软Windows Vista的未来版本也将对EFI提供支持,EFI有望在未来三年内取代BIOS成为主导性的固件接口。

EFI开发的必要性
    BIOS是操作系统与底层硬件的衔接桥梁,它的全称是“Basic Input Output System(基本输入输出系统)”,BIOS的主要功能是开机时管理各个硬件系统,并为后续操作系统的引导提供必要的信息。简单点说,当用户按下电源按钮,计算机“滴”的一声启动时,BIOS就开始处于工作状态。如果是初次开机,用户需要进入BIOS对硬件进行设定,例如CPU的工作频率、前端总线频率,内存的速度、延时,各个设备的启动顺序等等,保存退出之后,BIOS就会严格依照这些设定进入下一步的运行。BIOS将各硬件的具体参数传送给指定硬件的Firmware(固件),这些硬件便会严格依照这些性能参数工作。如果这一步没有问题,那么BIOS就会发出读取硬盘、启动操作系统的命令,接下来操作系统的核心数据便会被载入到内存,这项工作要花费不短的一段时间,此时我们在屏幕上看到的就是系统启动的进度条。当操作系统开始启动后,BIOS就自动释放,系统的管理权转交给操作系统,此后BIOS的职能就转为软件与硬件的衔接桥梁,任何与硬件操作相关的软件指令都必须依赖BIOS方可完成。

BIOS在设计时并没有预备任何安全措施,如果我们把CPU或内存的性能参数调得太高,达到远超出CPU和内存硬件所能承受的限度,系统仍然会要求CPU和内存工作在这个速度上,出现的后果就是计算机无法开机或者死机。一旦遇到这类情况,用户可以利用主板BIOS的跳线将这些设定清空,使之恢复到默认的状态,但这项工作非常繁琐且要求用户有一定的经验,普通用户很难完成。由于BIOS一直都缺乏预防此类危机的手段,一些主板厂商被迫自行发展自动恢复技术,如果BIOS参数设定不当导致无法开机,系统会在十几秒后自动重启,并将BIOS恢复回默认状态。

尽管BIOS很好地满足了计算机的基本需求,但在今天它已经相当落伍了。作为DOS时代的产物,BIOS并没有为未来PC的发展做好准备,所有的BIOS都工作在16位的“实模式(Real Mode)”状态下,而实模式是英特尔公司在1978年8086 PC平台的产物。即便你拥有一部64位双核心的顶极PC,在开机时系统都只能工作在16位模式下,可管理到的最大内存为1MB,而系统启动时各类扩展卡以及整合设备(如网络控制器、音频控制器)都必须被BIOS访问,但它们的ROM(Read Only Memory)容量也都被限制在128KB。显然,如此寒酸的硬件支持让BIOS除了老老实实为启动操作系统作准备外什么都干不了。

采用汇编语言编写是BIOS的另一个缺陷。作为低级语言,汇编语言具有与底层硬件紧密结合、程序速度快以及代码简练的优势。在PC刚刚开始出现的上个世纪八十年代,汇编语言可以说是编写BIOS程序的最佳选择。但事过境迁,为BIOS增加新功能是业界的共识,但BIOS所采用的汇编语言相当复杂,程序编写的难度极大,如果要增加新功能,用汇编语言来编写简直就是一个灾难。再者,新功能的引入会让BIOS汇编程序变得很复杂,调试成为一个难题,将出现Bug频频的糟糕情况。如果你对主板BIOS升级有所了解,一定会明白我们所指的是什么意思。BIOS通常都有这样那样的毛病,主板厂商通过更新BIOS程序版本来解决问题,但这个新BIOS可能又带来了新的Bug。显然,如果作为下一代BIOS技术的EFI要彻底克服这个缺陷,就必须采用功能更强大且易于调试的高级语言来编写。

模块化设计与兼容特性
    英特尔早在1999年就发布首个EFI技术规范,该版本只用于安腾服务器平台,不过很快英特尔就拿出适用于X86 PC和Xscale嵌入系统的EFI版本,这样英特尔所有计算平台的固件接口就能够完全实现从BIOS到EFI的转换。

图1 EFI系统的逻辑模型。协议架构(Protocol architecture)提供硬件无关的通讯渠道,平台驱动和框架驱动为EFI运行建立基础,兼容支持模块则保证非EFI硬件也能够在EFI平台中兼容使用。

采用模块化设计是EFI与传统BIOS在逻辑结构上最大的不同点之一。如图1,位于底部的是硬件层,与硬件层直接交互的就是EFI的驱动执行环境(Driver Execution Environment),它包括协议架构(Procotol architecture)、平台驱动(Platform driver)、框架驱动(Framework driver)以及兼容支持模块(Compatibility support module)等模块化组件,再往上才是EFI以及兼容模式的实现。接下来我们将分别对这些模块的功能进行介绍。

在整个EFI系统中,驱动执行环境处于基础性地位,它也被称为“Pre-EFI-Foundation(预EFI基础)”。在驱动执行环境的各个组件中,负责与硬件直接交互的便是协议架构(Architecture protocol)模块,它具备与硬件直接交流的能力。在实际执行时,EFI对硬件参数的定义都是通过协议架构来传递的,这一点EFI与传统BIOS并无本质的区别。而决定EFI实现功能的是平台驱动和框架驱动,两者共同为EFI的实际执行提供完整的支撑。同时,EFI系统也包含一个兼容支持模块(Compatibility support module,简称CSM),它可以在16位实模式下启动计算机以及访问扩展设备的ROM(只读存储器)。这样,即便PC平台中的部分硬件没有专门为EFI设计(例如显卡、声卡等),EFI的兼容支持模块也可以让它们在整个系统中正常工作,从而有效降低从BIOS到EFI过渡的门槛。

图2 完全采用图形界面的Phoenix EFI OS Loader程序,类似于Windows应用程序,操作简单直观。

EFI系统的最顶层为“EFI操作系统装载器(EFI OS Loader)”和名为“预启动应用(Pre-boot application)”的扩展工具,EFI系统装载器可以引导操作系统启动,也能够提供一个设定屏幕—EFI同时支持传统的文本界面和图形界面,不过后者显然成为EFI应用的绝对主流。与BIOS只能在640×480 VGA分辨率下显示不同,EFI在屏幕分辨率上并无限制,用户完全可以根据显示器硬件情况来使用更高的分辨率,从而提供更人性化、也更加美观的系统设定界面。除了提供基本的硬件参数设定功能外,EFI OS Loader还允许用户设定操作系统的启动顺序(在计算机拥有多个操作系统的条件下),这相当于直接整合了OS启动管理器;其次,用户也可以通过EFI OS Loader界面来启动扩展工具,例如Ghost系统镜像、磁盘检测、EFI版本升级、病毒查杀或者其他的安全软件等等。我们可以从图2-图4中看到Phoenix、Insyde和AMI公司的EFI OS Loader界面外观。如果没有特别指出,相信大家都会把它当作是本地Windows应用程序,两者在外观界面上如出一辙。只要开发商愿意,EFI的图形界面完全可以变得更加漂亮或更富个性化,而用户也可以为EFI OS Loader选择一幅漂亮的背景图像,这远比BIOS冷冰冰的蓝底白字来得人性化。

在系统开机,完成硬件初始化工作后,EFI会对计算机发出指令开始加载操作系统,而当操作系统启动并正常运行之后,EFI与操作系统之间的通讯并不会被切断,而是在ACPI高级电源管理功能的控制下继续进行。这样,操作系统就能够正确识别硬件,并为其分配资源,同时也可管理设备的电能消耗,此时EFI的职能与传统BIOS并无不同。

EFI平台
    EFI拥有自己的运行界面、基础驱动和应用程序,它实际上就是一个专用的嵌入式操作系统。当然,EFI与Windows、Mac Os和Linux这类通用型操作系统有本质性的区别,如EFI不支持多任务或多线程,在任一时刻它都只能支持单一的任务。我们知道,EFI拥有自己的GUI图形界面,能够直接读取硬盘,用户可以使用鼠标进行点击操作,这就意味着EFI拥有自己的显卡、芯片组、硬盘控制器以及鼠标驱动,这些驱动程序都是以压缩的二进制文件存在,但功能仅限于为EFI运行提供基础环境,例如实现彩色GUI输出、对硬盘进行读取和写入等等,它们与操作系统的3D加速驱动、硬盘控制器驱动并不是同一个概念—这也就是我们前面所介绍的“平台驱动(Platform driver)”。EFI平台驱动与硬件的通讯通过一个与硬件无关的架构协议进行,不管你使用什么样的处理器、芯片组或者显卡,EFI的架构协议都不会受到任何影响,在图1所示的EFI系统模型中,该模块被称为“Protocol architecture”。EFI的文件格式以Fat32格式为基础,这样它就能够访问到容量更大的存储资源,升级新版本的EFI、为EFI添加新的扩展工具都可以在此基础上进行。

图3 EFI可提供强大的扩展工具,允许用户直接通过EFI来管理计算机,用户还可以通过EFI版本升级来实现更多的扩展功能。

在EFI系统中,预启动应用(Pre-boot application)与EFI OS Loader同样都位于最顶层,所谓“预启动应用”,指的便是EFI的扩展工具。这些扩展工具一般都是由主板厂商自行设计,EFI系统只是提供一个标准化的运行接口,主板厂商可以根据自己的要求设计功能不同的扩展工具。一般来说,EFI整合的扩展工具以系统维护、硬盘修复、底层杀毒为主,在它们的辅助下,计算机将变得更加安全和更容易维护。例如在现有PC中,如果你要对系统作Ghost镜像,那就必须使用启动光盘、启动型闪存盘或者可靠性极差的启动软盘;如果你要恢复系统,同样也必须借助软盘、闪存盘或光盘启动系统,系统镜像或恢复操作也相对专业,只有少数有经验的用户才能够完成这些操作。倘若你用的是不带光驱的轻薄型笔记本电脑,恰好闪存盘的启动功能失常(此种情况很常见),那么系统镜像和恢复工作就会让人大伤脑筋。同样,如果系统遭受病毒袭击或者硬盘损坏,操作系统无法启动,病毒查杀和数据抢救都非常困难。但在EFI系统中,这类安全工具都被直接整合,系统的维护工作变得相当轻松,换个角度看这也相当于提高了PC的可靠性。

强大的远程维护功能是EFI的又一亮点。如果你对无盘站略有了解,一定会知道英特尔的PXE(Pre-boot Execution Environment)协议,该协议分为客户端和服务器端。客户端在网卡的ROM里,当计算机引导时,BIOS会将PXE客户端调入内存执行,同时网络中DHCP服务器会给PXE客户端网卡分配一个IP地址,接着PXE客户端会自动连接到服务器,并将存储在该服务器的操作系统下载到本地运行。英特尔在设计EFI时,就决定将PXE作为EFI的一个嵌入模块,这样任何一部采用EFI技术的计算平台,都可以支持PXE模式运行。除了直接运行远程系统外,你还可以借助网络来启动计算机并安装操作系统,但与现有PC采用的PXE 2.0协议不同,EFI系统的PXE功能既可以运行在16位实模式下,也可支持32位保护模式运行,这意味着网络传输的速度更快,用户可以在更短的时间内完成网络启动以及操作系统的安装任务。

告别汇编程序
    采用不同的编程语言是EFI与传统BIOS的又一个重大差异。我们知道,BIOS采用汇编语言编写,虽然汇编具有高效率的优点,但程序编写难度大,非常不利于增加新功能,而且代码检查纠错都相当困难,这不仅限制了BIOS的功能拓展,甚至也影响到BIOS的稳定性。与之不同,EFI采用C语言,熟悉程序设计的读者应该都知道,C具有较高的硬件效率,程序编制和代码调试也都很容易,它也因此被称为中级语言。得益于此,EFI的编写将远比BIOS来得容易,程序Bug更少、质量更高,版本的更新也将更有保证,在提高稳定性的同时大大减轻开发人员的负担;同时,主板厂商也能够顺利编制出各类型的EFI增强工具,增强自身产品的竞争力,这也有助于EFI的广泛普及。

图4 AMI代号为“Aptio”的EFI,设定项目类似于BIOS,但采用人性化的图形界面。

EFI与操作系统
    阻碍EFI进入广泛应用的门槛在于操作系统支持,当前针对PC的Windows系统都只能支持传统的BIOS,只有针对安腾平台的服务器操作系统才能够支持EFI,这在客观上限制了EFI进入PC。外界一度认为,微软Windows Vista将成为首款支持EFI的操作系统,但微软最近表示,首个Vista仍然为传统BIOS设计,暂不支持EFI,这给对EFI热情满怀的人们泼了一大盆冷水。至于32位的Vista,将永远不支持EFI技术—这一点无可厚非,毕竟32位PC都基于BIOS设计且濒临淘汰,增加EFI支持没有多大意义。保守估计,我们必须等到Windows Vista的升级版本方能够看到EFI的身影,这将大大延后Windows PC对EFI的支持进度。

但在Windows之外,其他操作系统对EFI的态度非常积极,苹果公司成为第一家在X86 PC中采用EFI技术的厂商。1月份,苹果公司推出酷睿双核平台的Macbook pro笔记本电脑,该产品率先引入EFI技术而成为另类,同时这也给许多有意在Mac机上安装Windows的用户带来困扰。由于固件接口存在根本性差异,外界普遍认为用户无法在Macbook pro上安装Windows XP。但没过多久,一位发烧友通过修改Windows XP核心文件,顺利完成EFI支持,Windows XP也因此得以被顺利安装在Macbook pro笔记本中。但这并不是说EFI支持就如此轻而易举,事实上,这种破解只能说绕过了EFI技术的限制,而不是真正对EFI提供原生型的支持,两者在硬盘启动引导机理方面存在本质性的区别—为BIOS设计的操作系统都依赖MBR(Master Boot Record Format,主引导扇区)来管理硬盘资源,而EFI原生支持的操作系统采用全新的GPT(Globally Unique Identifier Partition Table Format,全局唯一识别分区表格式)技术。

我们知道,MBR位于硬盘的第一个扇区,它所记录的便是硬盘的分区信息。如果我们使用Fdisk、Partition Magic或者直接在Windows安装过程中对硬盘进行分区,分区的信息都被写入到硬盘的MBR中,硬盘就根据MBR的内容来确定自己的逻辑分区情况。MBR最多可支持四个主分区或三个主分区、一个扩展分区的组合,分区的最高容量为2TB,在硬盘容量未达到1TB的今天,2TB容量限制显然是非常宽裕的;扩展分区内又包含许多逻辑分区,但逻辑分区采用字母卷标,因此扣除主分区外,逻辑分区的数量最多为23个(从字母D开始计算)。对桌面PC而言,这样的分区规格远未达到瓶颈,至少在未来5年内MBR都不会遇到问题。然而,EFI改用了极富前瞻性的GPT技术,分区容量方面,GPT理论上允许你使用最高18EB容量(1EB=1百万TB),这绝对是一个高得令人匪夷所思的数字,或许未来的DNA存储可以达到这一要求。其次,GPT允许一个硬盘中存在128个主分区,每个分区都拥有唯一的ID标识码,可管理的存储资源范围远远超过MBR。目前,安腾版Windows和Windows 2003 Server系统都已经对GPT技术提供初步的支持,但启动分区器仍然采用MBR技术。另外,苹果公司的X86版Mac OS X Tiger操作系统直接采用EFI技术,但是否以GPT技术来代替MBR管理硬盘分区尚不知晓,再说现在MBR远未成为瓶颈,GPT与MBR在实际应用中不会有任何差别。

与微软迟缓的态度形成鲜明对比,Linux业界对EFI非常积极,加上英特尔的鼎力支持,Linux内核目前已实现对EFI的支持,国内中科红旗推出的RedFlag 5.0桌面版就率先提供EFI支持,相信不必等太长时间,其他Linux发行版也将陆续支持EFI。
注解:EFI的早期发起者为英特尔、AMI和台湾的Insyde,后来英特尔为更好的推进EFI技术,遂主导成立了开放性的UEFI(Unified EFI)论坛(www.uefi.org)来统一负责EFI标准制定事务。除了英特尔外,UEFI论坛的主要成员还包括AMD、AMI、Dell、HP、IBM、Insyde、Microsoft和Phoenix;基本上,UEFI基于EFI 1.10规范为基础,目前UEFI论坛正在制定最新的2.0版标准,或许等正式发布的时候,它可能会被正式命名为“UEFI(Unified Extensible Firmware Interface)统一可扩展固件接口”。

EFI何日可至
    如前所述,EFI已经在安腾服务器/工作站平台取代传统的BIOS技术,在X86 PC领域,苹果公司的Macbook Pro成为EFI的首个实践者,但Windows PC何时能够全面采用EFI还没有定论。在英特尔的计划表上,EFI将从2006年开始全面取代BIOS,但Windows Vista的保守态度令这个计划成为泡影,估计微软要到2007年中期之后才可能让Vista支持EFI,这意味着EFI的实用化又将继续推迟。不过,我们看到固件厂商和硬件业界都为此做好了准备,作为两大固件厂商,Phoenix和AMI都在紧张地进行自己的EFI项目。AMI代号为“Aptio”的EFI项目接近完工,目前AMI已经向主板厂商提供相应的开发包;Phoenix则是与微软携手合作,将EFI嵌入到微软的“Trusted Core BIOS”中,这个项目也即将完成。

告别BIOS EFI时代来临相关推荐

  1. 变革时代来临 IT人需早做准备

    变革时代来临 IT人需早做准备 --2010年无忧指数年终盘点IT篇 我们正处在一个史无前例的大变革时代,海量和实时数据处理.丰富极致的用户体验等需求,不断涌现的新技术和新平台,无不对软件研发和技术人 ...

  2. 用AI创造AI,人工智能无代码时代来临

    https://www.toutiao.com/a6680750885359845901/ 大数据文摘出品 记者:云舟 玛丽·雪莱在创作世界上第一部科幻小说<科学怪人>(又译:弗兰肯斯坦) ...

  3. 巨无霸Win8PE X64服务器维护专用,【13年4月4日】维护版win8pe【32位+64位+纯64位】(支持BIOS+EFI)...

    因为单独一个PE是不够用的,已经制作了合盘,可BIOS启动,也可EFI启动. 详情移步========================================================= ...

  4. 将ubuntu配置为路由器_“名酒为王”时代来临但资源将尽,看泸州老窖如何进行“名酒资源再配置”丨深度观察...

    文丨酒业家主笔 彭伟 冲刺300亿,重回前三甲. 泸州老窖作为四大名酒之一,连续蝉联五届国家名酒,在全国范围的消费者中构建了极其深远的品牌影响力.因此,才会有泸州老窖股份有限公司党委书记.董事长刘淼在 ...

  5. 德勤2021技术趋势:繁琐、点状的匠人AI时代将终结,MLOps时代来临

    作者 | 宋慧 出品 | CSDN 头图 | 付费下载于视觉中国 德勤在近日发布<2021 年技术趋势>报告,这已经是德勤连续第十二年发布全球技术趋势报告.纵观今年的九大技术趋势,德勤给出 ...

  6. 无代码时代来临,程序员如何保住饭碗?赶紧看一看!

    编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼"学到头秃".程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存 ...

  7. 小成本、大体验,“听歌自由”时代来临

    2019一开年,"车厘子自由""奶茶自由"等话题就在年轻人群中掀起了一波热议的小高潮,然而在各种小型人生自由还被当做网络热梗调侃时,作为大众最为普遍的精神娱乐方 ...

  8. 【报告分享】“流量重构”时代来临,2020-2021中国消费互联网竞争趋势报告-腾讯.pdf(附下载链接)...

    大家好,我是文文(微信号:sscbg2020),今天给大家分享腾讯新闻和企鹅智库于2021年1月份联合发布的干货报告<"流量重构"时代来临,2020-2021中国消费互联网竞 ...

  9. 7月第5周回顾:闪联晋级国际标准 云安全时代来临

    [老杨注:本文为51CTO.com编辑记者赵毅原创,老杨未加改动.] 2008北京奥运会还有7天就要正式拉开帷幕了,激动的心情溢于言表.也许是受到了奥运的刺激,IT业内也有不少值得兴奋的事与各位读者分 ...

最新文章

  1. IDEA一直提示 错误: 找不到或无法加载主类
  2. 【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )
  3. webflux系列--reactor源码(一)
  4. oracle idm_批准Oracle IDM中的特定Web服务
  5. 使用ant design vue 中table组件运行时not found: Error: Can't resolve 'reqwest' in 'D:\vue\antd-demo01\src\com
  6. HTML+CSS+JS实现 ❤️touchSlider图片滚动图片轮播❤️
  7. 千寻的计算机字符,转义字符变量与赋值
  8. List对象集合的遍历、对象赋值和向前台传递
  9. 吴恩达机器学习之线性逻辑回归实现部分
  10. cobaltstrike之创建监听器与生成后门
  11. jdbc查mysql_mysql的查询及连接JDBC数据库
  12. 用c语言编写一个汇编编译器,【提问】最早的汇编语言编译器如何诞生?
  13. 摩托罗拉为什么要限制自家linux手机,很明显,这是一款配备Linux系统的智能手机,但摩托罗拉将其变成了功能机...
  14. [lighttpd]referer字段实现域名过滤及放行指定域名不走重定向
  15. pyspark steaming常规语句及操作
  16. 艺术类职称计算机考试,2017年职称计算机考试Word2003巩固练习题20
  17. 微信公众号【黄小斜】和【Java技术江湖】
  18. 使用Huginn批量订阅微信公众号
  19. 产品读书《创业36条军规》
  20. Github搜索开源项目过滤技巧

热门文章

  1. WebRTC Simulcast测试--用Janus
  2. 后端开发——Java
  3. SpringBoot从入门到精通教程(三十一)- 爬虫框架集成
  4. 图谱实战 | 百度基于异构互联知识图谱的多模内容创作技术
  5. 神马 | 封杀这个公式,AI智商将为零
  6. .h和.c文件的区别到底是什么(精确讲解)
  7. Incomplete Multimodal Learning(不完整多模态学习)
  8. linux如何查看内存大小
  9. PTA - 数据库合集16
  10. 一文搞清楚软链接和硬链接