| 
 | 
 
 本帖最后由 teasiu 于 2013-9-26 05:30 编辑  
 
看到很多行家在争论efi和bios的话题, 
 
有些观点貌似正确,却引入歧途, 
有些观点貌似错误,却无法清晰表述. 
 
看了大家的帖子,实在忍不住,指正与否不重要, 
重要的是让大家了解得更深入一点. 
 
有人认为开发者应该努力将bios启动的程序做到支持efi, 
有人呼吁开发者将efi的启动程序做到包含bios的启动功能, 
 
嘿,伙计,我们要先从什么是 efi,什么是 bios来谈起. 
 
(太长篇了,搜索一下很多这方面的文章). 
 
简单归纳一下: 
 
BIOS 全名为(Basic Input Output System)即基本输入/输出系统 
 
UEFI 全名为(Unified Extensible Firmware Interface)统一的可扩展固件接口 
 
 
 
 
基本输入输出系统(BIOS)硬件初始化阶段,通常指开机自检(POST)时,检查硬件以确保 BIOS 在开始实际启动程序之前所有组件全部到位并正常运行。一旦 BIOS 测定所有组件均正常运行且 CPU 成功初始化之后,BIOS 会询问系统的互补金属氧化物半导体(CMOS)芯片,寻找要加载的操作系统(OS)的位置。然后,它会访问指定的启动盘及其相应的启动记录,以调用操作系统(OS)加载程序。 
 
在整个启动过程中,BIOS 通过 16 位软件中断为操作系统加载程序提供关键服务。这些软件中断包括用于访问磁盘的 Interrupt 13h、用于访问视频的 Interrupt 10h 和用于访问键盘的 Interrupt 16h。操作系统(OS)初始化之后,它将通过设备驱动程序访问硬件,以接管控制这些及其它 BIOS 服务。  
英特尔 EFI 的平台创新架构(下文简称为“架构”)是英特尔为解决当前电脑架构限制的一项努力成果。该架构旨在通过采用成熟计算机科学原理构建并精心设计的固件基础逐步替代 BIOS,从而为开发人员带来无限动力。 
 
该架构的主要原则包括: 
 
通过操作系统(OS)切换,从第一个代码开始执行模块化; 
使用 C 语言实现的强大架构接口; 
灵活的固件映像封装; 
为满足预引导环境的特殊需求而定制的保护模式内存和地址空间管理; 
基于自我描述的相关性对驱动程序执行进行自动排序; 
可选服务作为 EFI 驱动程序和引导前(per-boot)应用,以实现有效的制造测试自动化和平台管理。 
该架构可执行 EFI,允许支持 shrink-wrap 包装 EFI 的操作系统在各种不同系统设计上启动,而无需进一步的平台或操作系统(OS)定制。这使平台提供商可以推出全新特性和功能,增强平台能力,而无需按操作系统启动顺序写入新代码。此外,还可以逐步替换传统设备和固件代码,而不会影响操作系统引导代码。  
 
 
上面这些术语足够了,再多说大家就没有看下去的兴趣了. 
 
我就用打比喻来表达吧,最后再得出个人的观点. 
 
BOIS就像一座基本的房子,--瓦房 
EFI就像建筑的框架,UEFI就是框架结构盖出来--楼房 
 
大家都知道,楼房是瓦房的升级版,因为瓦房的局限性不能满足物质进步的需求. 
就像bios不能满足电脑硬件发展需求一样. 
 
我们来分解分析上面2句话, 
 
bios下的硬盘格式为MSDOS格式,以MBR,PBR记录符号来执行指令,磁盘分区仅仅为MBR架构, 
efi是一个shell,发源于linux的引导程序lilo,它就是一个终端程序,磁盘分区同时支持GPT架构, 
 
好,我们来看看这样几句话是否合理: 
“我想盖一栋瓦房,希望和10层的楼房那样的功能,里面可以安装电梯,可以住100人。” 
“我想盖一栋10层的电梯楼房,但是,希望用盖瓦房的材料来完成。” 
 
嘿,我说,老板,你难倒这班建筑师们了。 
 
bios的技术会不会被抛弃呢,当然不会,就像瓦房一样,物质无论如何进步,地球上都会有需要盖瓦房的地方,只是这样的需求越来越少而已。 
所以,大家没有必要提出放弃bios的论断。 
 
而bios下的启动工具grub4dos,fbinst(UD),等等,就像把瓦房盖成几弄几进,四五六合院一样,添加屋檐桁角,雕龙画凤的工具,当然,无论怎么艺术,还是瓦房一座。 
而efi,则是通用的高楼大厦的基本法则,框架结构。uefi下的工具grub2,winly等,就像广州火车南站,迪拜塔,小蛮腰一样的框架设计,简单稳固,美丽流畅。 
 
问题又来了,有人说:“bios和uefi兼容的主版又怎么解释呢?” 
 
列位,发展需要过程好吧,君不见800米高的大厦旁边是2层的街道办事处吗? 
 
但是,你可以在大厦顶上砌一所瓦房,可以在瓦房里设置阁楼, 
却不能抛弃框架建大厦,无法在瓦房里安装电梯。 
 
知道了吧,因为它们的属性不同,它们用途相似,但是范围不同。 
 
当然,上面的比喻是让大家形象地认识而已,并不是100%到位对等。 
 
看了很多人在呼吁g4d要支持efi,又或fbinst里要支持efi,又或efi里要研究出启动mbr程序来, 
这些种种的期盼,都是因为没有深入客观的了解bios和uefi的本质区别, 
一时舍不得雕龙画凤的四合院,恨不得将它搬到大厦里面,或者恨不得四合院里可以装电梯,住千人,开超市。 
 
那么,它们不能互相通融?哦,当然不可能是这个结果或者结论, 
 
这就需要程序开发者和使用需求者的共同作用了, 
 
比如:efi支持pxe,好了,pxe在服务器上可以使用bios的启动引导,我们通过pxe实现它们的连通呢? 
好比在大厦顶上砌一所瓦房,在瓦房里设置阁楼一样,不断地实现一些可能的互通互用,这是技术和需求之间的桥梁。 
 
所以,我们不用担心bios的消失,但要憧憬efi的辉煌。 
我们不是要讨论它们的兼容,而是要多发现它们的互通! 
 
 
PS: 
 
我写这篇帖子的时候,正是我将自己的电脑系统改成efi启动gpt格式磁盘的当天, 
我将资料备份后,完全删除bios启动的所有系统,配合半年前买的64G固态硬盘,格式化为gpt,efi启动win7和linux,秒开。 
无法想象,9-10秒完全进入win7桌面且网络瞬间接通为止,7-9秒完全进入ubuntu桌面且网络瞬间接通为止。 
原理?因为efi是一个shell,它开机不是输入输出操作,而是直接运行。 
 
你看了前段时间关于3天盖10层楼的报道了吗? |   
 
 
 
 |