有CSM的UEFI BIOS应该可以支持EFI Native和legacy两种启动方式吧,在BIOS SETUP选项里面有的选。

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 磁盘分区
 在实现中,EFI初始化模块和驱动执行环境通常被集成在一个只读存储器中。Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU、北桥、南桥、内存和硬盘的初始化工作,紧接着载入EFI驱动。当EFI驱动程序被载入运行后,系统便具有控制所有硬件的能力。在EFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入,新结构中,磁盘的分区数不再受限制(在MBR结构下,只能存在4个主分区),并且分区类型将由GUID来表示。在众多的分区类型中,EFI系统分区可以被EFI系统存取,用于存放部分驱动和应用程序。CSM是在x86平台EFI系统中的一个特殊的模块,它将为不具备EFI引导能力的操作系统提供类似于传统BIOS的系统服务。
  由于EFI驱动开发简单,所有的硬件厂商都可以参与,为自家的硬件定制最为合适的驱动。基于EFI的驱动模型可以使EFI系统接触到所有的硬件功能,不进入操作操作系统就浏览网站不再是天方夜谭,甚至实现起来也非常简单。这对基于传统BIOS的系统来说是件不可能的任务,在BIOS中添加几个简单的USB设备支持都曾使很多BIOS设计师痛苦万分,更何况除了添加对无数网络硬件的支持外,还得凭空构建一个16位模式下的TCP/IP协议。
EFI是否固若金汤?
  很多人担心EFI这种开放的模式将会导致新的安全隐患,因为EFI系统比传统的BIOS更易于受到计算机病毒的攻击,当一部分EFI驱动程序被破坏时,系统有可能面临无法引导的情况。实际上,系统引导所依赖的EFI驱动部分通常都不会存放在EFI的GUID分区中,即使分区中的驱动程序遭到破坏,也可以用简单的方法得到恢复,因为只读芯片中的EFI代码足够用来引导计算机从光驱启动,此时插入EFI的安装盘,对EFI的系统存储区域进行修复或者覆盖安装,就能将PC恢复到正常。而且这个修复过程对操作系统来说,等于是从两台配置一模一样配置机器中的一台转移到另一台,并不会出现需要重新识别硬件的情况。 EFI在概念上非常类似于一个低等级的操作系统,并且具有操控所有硬件资源的能力。不少人感觉它的不断发展将有可能代替现代的操作系统。事实上,EFI的缔造者们在第一版规范出台时就将EFI的能力限制于不足以威胁操作系统的统治地位。首先,它只是硬件和操作系统间的接口规范;其次,EFI环境下不提供中断的访问机制,也就是说每个EFI驱动程序必须用轮询的方式来检查硬件状态,并且需要以解释的方式运行,较操作系统下的驱动效率低得多;第三,EFI系统不提供复杂的存储器保护功能,它只具备简单的存储器管理机制,具体来说就是指运行在x86处理器的段保护模式下,以最大寻址能力为限把存储器分为一个平坦的段,所有的程序都有权限存取任何一段位置,并不提供真实的保护服务。

EFI的命令行控制模式
  EFI的设计架构中,一旦引导软件将控制权交给操作系统,所有用于引导的服务代码将全部停止工作,部分运行时代服务程序还可以继续工作,以便于操作系统一时无法找到特定设备的驱动程序时,该设备还可以继续被使用。EFI的程序只限于类似Java伪执行文件的能力,并没有直接访问磁盘所有资源的能力,而且在进入操作系统后的大多数情况下,EFI部分的代码都进入沉睡模式,即使有针对EFI的病毒,也无法造成进一步的影响。

EFI的更多相关文章

  1. IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘

    以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...

  2. win10 EFI装ubuntu14.04双系统 及初始配置

    这次第二次装ubuntu系统了,第一次是在win7下安装的,到了win10,由于用了efi,跟win7的安装方法不太相同,相同点有: 1.仍然可以用u盘启动,我用的是UltroISO这个软件. 2.装 ...

  3. 修改efi分区

    换了ssd硬盘,速度真快! 我特意准备了一个efi分区(fat32,忘记指定efi了),然而win10安装时不能指定启动位置,自己创建了一块. 下面我们把让win10使用自己创建的efi分区. 以管理 ...

  4. 好用的 diskpart 命令,操作磁盘分区,并创建 EFI 引导分区

    进入 win8 pe, 或在安装 win8 选择安装磁盘分区时按 shift+F10,都是可能用到 diskpart 去操作的时候. 进入cmd后, diskpart 进入 list disk---- ...

  5. linux ubuntu关于U盘的安装 开机启动u盘的时候出现/casper/vmlinuz.efi: file not found

    将u盘下的/casper/vmlinuz文件添加一个后缀.efi即可. 重启再装.

  6. C++编写操作系统(1):基于 EFI 的 Bootloader

    很久以前就对操作系统很好奇,用了这么多年Windows,对他的运作机理也不是很清楚,所以一直想自己动手写一个,研究一下操作系统究竟是怎么实现的.后来在网上也找到过一些教程(比如:<自己动手写操作 ...

  7. 教程 打造OS X Mavericks原版 EFI Clover 引导安装

    自从 Mavericks 10.9 发布DP版到现在的GM版以来,以前Clover引导原版InstallESD.dmg方式安装原版的方法已经不能使用,而且已经不能引导安装了,所以从GM版发布以前,终于 ...

  8. EFI/GPT探索(为何win7分区时创建100M隐藏分区)

    EFI/GPT探索(为何win7分区时创建100M隐藏分区) 转自 http://blog.tomatoit.net/article.asp?id=348 EFI/GPT是新一代的固件/启动管理技术, ...

  9. EFI安装Win7

    安装系统之前电脑里最好没有其他系统,安装过程中电脑需重启多次,其他系统会引导电脑开机,无法完成WIN7安装. 一.制作安装分区 1.首先在移动硬盘(U盘)准备一个FAT32分区 一定要FAT32分区, ...

随机推荐

  1. Loadrunner模拟JSON接口请求进行测试

    Loadrunner模拟JSON接口请求进行测试     一.loadrunner脚本创建 1.Insert - New step -选择Custom Request -  web_custom_re ...

  2. js:语言精髓笔记7----原型继承

    面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...

  3. POJ3177 Redundant Paths(边双连通分量+缩点)

    题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径. 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是 ...

  4. 2015ACM/ICPC亚洲区长春站 F hdu 5533 Almost Sorted Array

    Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  5. 51nod 1165 整边直角三角形的数量

    1165 整边直角三角形的数量 直角三角形,三条边的长度都是整数.给出周长N,求符合条件的三角形数量. 例如:N = 120,共有3种不同的满足条件的直角3角行.分别是:{20,48,52}, {24 ...

  6. CodeForces Round 199 Div2

    完了,这次做扯了,做的时候有点发烧,居然只做出来一道题,差点被绿. My submissions     # When Who Problem Lang Verdict Time Memory 443 ...

  7. shell运算

  8. 使用Python中的urlparse、urllib抓取和解析网页(一)(转)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过Python 语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  9. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  10. shadowColor表示阴影颜色,shadowBlur表示模糊等级

    绘制之前的准备工作: 1.在body中加入canvas标签,设置它的id.width.height,当然也可以动态设置它的宽高. <canvas id="mycanvas" ...