efi_efi shell - CSDN
精华内容
参与话题
  • 黑苹果 EFI 合集下载

    2020-07-27 23:33:58
    此压缩包包含市面上常见电脑适配的黑苹果EFI开机引导工具;希望对大家有帮助!
  • 文件包含如下配置的台式机EFI文件: E3-1230+技嘉P75D3+GTX650+10.13, E3-1230Ⅴ2+GTX470+华硕p8b75v, E3-1245+华擎B75+GTX760, E5-2680V2+华南X79V2+BIOS, E5-2680V2+华硕P9+Quadro K4000+12.6, H61-...
  • EFI(笔记本通用)

    2020-07-30 23:33:24
    EFI文件,笔记本通用,解决笔记本启动问题。
  • 黑苹果EFI合集

    热门讨论 2020-07-30 23:31:54
    市面上常见电脑适配比较全的黑苹果EFI合集,黑苹果开机引导
  • 据大神说,这个软件可以自动生成efi文件,分享给大家试试,
  • EFI引导-硬盘(U盘)安装win7 x64

    万次阅读 2018-07-26 13:47:41
    关于EFI的介绍,就不赘述了。 大家可以看看维基百科的介绍 http://zh.wikipedia.
    原文地址为:EFI引导-硬盘(U盘)安装win7 x64

    关于EFI的介绍,就不赘述了。
    大家可以看看维基百科的介绍

    在网上找了EFI安装win7 64位的教程,大多是从光盘启动安装,虽然这种方法较为简单,但是,一来,光盘速度较慢,二来,光盘安装方式不灵活。故参考了相关资料,实现了EFI启动,从硬盘U盘)安装WIN7 64位。
     
    声明:本教程仅供参考,对于安装过程中出现的任何损失,不负任何责任。
     
    说明:
    1.EFI引导下的win7 是无法软件激活的,只能刷BIOS激活。
     
    本教程的前提条件
    一、主板BIOS支持EFI。
           一般来说,支持EFI的BIOS,都有类似于EFI BOOT的选项,开启即可。
    二、原版64位win7镜像。
           大多修改版的win7镜像,都没有了EFI引导功能,需要原版镜像。
            ps:windows 7 32位是不支持EFI引导的。

    下面开始教程:
    第一章 准备工作
    一、制作安装分区
        1、首先在移动硬盘(U盘)准备一个FAT32分区
    • 一定要FAT32分区,因为efi bios只能识别FAT32分区   
    • 可用空间-推荐5G,最低要求,能放下win7 镜像解压出的所有文件
    • 主分区也行,逻辑分区也行,不需要有引导功能。为方便叙述,该分区称为Install分区。
        2、将win7 x64镜像中的所有文件复制到Install分区根目录
     
        3、将EFI SHELL(x64).zip解压到Install分区根目录,
            PS:EFI SHELL(x64).zip已经包含有diskpart工具
             下载地址:http://devilloki.7958.com/down_12266260.html
     
        4、将bootmgfw.efi复制到Install分区根目录
     
        最终,Install分区目录结构如下图
     
        
        
    第二章 安装win7 64位系统
    一、从EFI启动到EFI shell
     
    1.开机按F2进入BIOS设置,在最后一下项EXIT中有选项
            
    Launch EFI shell from filesystem device
     
     
     
    2. 启动EFI shell后,如图:
     
     
    提示:
    启动EFI shell后,会有提示
    fs0 :…………………………
    fs1 :…………………………
    fs数字-指的就是硬盘上的FAT32分区,类似于windows下的c:,d:盘符。
    Shell >
    光标后,输入
    fs0 :
     
    回车,即可进入该分区
     
    命令
    ls
    可列出当前目录下的文件

    如果能看到win7安装文件,就对了,如果没有,则切换为其它分区,直到看到win7安装文件。
    如图:
     
     
    4、键入命令bootmgfw.efi,即可启动win7安装程序。
     
    二、安装系统

    重点介绍一下使用diskpart命令建立GPT磁盘,以及创建分区的方法
     
    • 为了叙述方便,win7 将要安装到的磁盘,称为目标磁盘
    • 这里只介绍如何使用diskpart命令来建立GPT磁盘及分区,同时,该方法会抹去磁盘所有数据
    • 无损转换,请参考其它方法。
    •  
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      安装程序到选择分区时,可能遇到的情况:
      当windows安装程序进行到选择分区的步骤时,
      一、目标磁盘为空白磁盘的情况,
          直接选择目标磁盘,安装程序会帮助你建立EFI的各种分区。
      二、可能会出现如下图所示的情况,这是因为目标磁盘为MBR磁盘
       
       
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
      使用diskpart工具建立GPT分区的步骤:
       
      1、 把MBR磁盘转换为GPT磁盘
      •     在选择分区界面,按下SHIFT+F10调出命令提示符
       
          
      键入
      diskpart
      打开diskpart工具
       
      ★选择目标磁盘
      • list disk--------------------列出系统拥有的磁盘
      • select disk 0 --------------选择0号磁盘,请根据磁盘大小,自行判断你的 目标磁盘
       
       
      ★清空目标磁盘,并转换为GPT格式
      • clean-------------------------清除磁盘,该命令会 抹去磁盘上所有 数据
      • convert gpt------------------将磁盘转换为GPT格式
      • list partition-----------------列出磁盘上的分区,因为我们刚转换成GPT格式,因此,分区为空
       
       
      ★建立EFI分区及系统安装分区
      • create partition efi size=100---------------建立EFI分区,大小为100M,如果打算使用该分区引导MAC系统,建议大小200M以上
      • create partition msr size=128--------------建立MSR分区,微软默认建立的话,大小是128M
      • create partition primary size=50000-------建立主分区,大小为50000M,请根据自己需求调整,该分区用来安装win7
      • list partition---------------------------------列出磁盘上的分区
       
       
      • PS:其实,一个diskpart工具,几乎可以代替其他的第三方磁盘工具了,比如著名的DiskGenius,是无法更改GPT格式磁盘的分区ID的,但是diskpart可以。
      • PS:在安装MAC系统的时候,需要更改分区ID。
      • PS:关于diskpart的详细使用,可以在diskpart中键入help查看
       
      2、完成安装
      在windows安装程序的选择分区界面,点击 “刷新”,会列出前述所建立的分区,选择相应的分区,完成安装。
       

       
       
       
       





    转载请注明本文地址:EFI引导-硬盘(U盘)安装win7 x64
    展开全文
  • EFIEFI Shell命令简介

    万次阅读 2018-01-26 17:17:07
    EFI是Intel在1998年开始的一个项目演变而来,而在2005年Intel将EFI 1.10开源并交由Unified EFI开源社区去维护和开发,Intel自己的EFI也就不单独做了,都和开源社区共用一个。现在也通常用EFI来代指UEFI,二者不再...

    EFI是ExtensibleFirmware Interface的缩写,是介于平台固件和操作系统之间的一层软件接口。EFI是Intel在1998年开始的一个项目演变而来,而在2005年Intel将EFI 1.10开源并交由Unified EFI开源社区去维护和开发,Intel自己的EFI也就不单独做了,都和开源社区共用一个。现在也通常用EFI来代指UEFI,二者不再有意区分。

    EFI Shell是EFI提供的一个交互式的命令行Shell环境,在这里你可以执行一些efi应用程序,加载efi设备驱动程序,以及引导操作系统,从引导菜单项中选择”efi shell”,回车,待出现”shell]”提示符时即表明你已进入efi shell环境中,下面对一些常用的efi shell环境下的命令作些简要介绍: 

    1、fsn:改变当前驱动器。例如:fs0当前映射到了ls-240 驱动器的话, fs0: [回车]就将提供对ls-240 驱动器的访如:fs0:

    2、attrib[-b] [+/- rhs] [file] 察看或设置文件属性

    3、break设置执行断点

    4、cd[path] 改变当前目录

    5、cls[background color] 清屏

    6、compfile1 file2 进行文件比较

    7、cp[-r] file [file] ... [dest] 拷贝文件和目录

    8、date[mm/dd/yyyy] 获取或设置日期

    9、devices[-b] [-1xxx] 列出系统中的所有设备

    10、devtree[-b] [-d] 显示设备树

    11、echo[[-on | -off] | [text] 回显

    12、edit[filename] 文本编辑

    13、eficompressinfile outfile 压缩efi文件

    14、efidecompressinfile outfile 解压efi文件

    15、help[-b] [internal_command] 显示帮助信息

    16、loaddriver_name 加载驱动

    17、ls[-b] [dir] [dir] ... 获得目录列表

    18、mkdirdir [dir] 创建目录项

    19、mountblkdevice [sname[:]] 在一个块设备上加载文件系统

    20、mv[src…] [dst] 移动文件或目录

    21、reset[reset_string] 冷启动

    22、rmfile/dir [file/dir] 删除文件或目录

    23、time[hh:mm:ss] 获取或设置时间

    24、type[-a] [-u] [-b] file 察看文件内容

    25、ver显示版本信息

    26、volfs [volume_label] 设置卷标

    展开全文
  • efi(x64).zip

    热门讨论 2020-07-29 14:20:47
    华硕efi装机必备。现在笔记本大部分都是efi装的系统,想自己重装,必须有这个东东。
  • EFI是什么

    2010-12-30 13:32:23
    想必大家都了解电脑的BIOS(基本输入输出系统...而EFI简单的说就是BIOS的下一代。EFI(Extensible Firmware Interface,可扩展固件接口)是由Intel推出的一种在电脑系统中替代BIOS的升级方案。起初EFI只用于Itanium(安...
    想必大家都了解电脑的BIOS(基本输入输出系统),那是集成在电脑主板上的一个ROM芯片,其中保存有微机系统最重要的基本输入/输出程序、系统信息设置、开机上电自检程序和系统启动自举程序。而EFI简单的说就是BIOS的下一代。EFI(Extensible Firmware Interface,可扩展固件接口)是由Intel推出的一种在电脑系统中替代BIOS的升级方案。起初EFI只用于Itanium(安腾)服务器系统,主板厂商和BIOS开发商虽然对EFI充满兴趣,但受到Windows操作系统的限制,EFI一直都无法打入PC阵营。而苹果公司率先在 Macbook Pro上运用了EFI,成为首家在x86 PC中采用EFI技术的厂商。随着微软在Windows Vista和Windows 7中加入了对EFI的支持,解除了操作系统的瓶颈,EFI有望在不久的将来完全取代传统BIOS,成为主导性的硬件接口。 
    EFI工作原理简介

    EFI在开机时的作用和BIOS一样,就是初始化PC,但在细节上却又不一样。BIOS对PC的初始化,只是按照一定的顺序对硬件通电,简单地检查硬件是否能工作,而EFI不但检查硬件的完好性,还会加载硬件在EFI中的驱动程序,不用操作系统负责驱动的加载工作。EFI的最革命之处,是颠覆了BIOS的界面概念,让操作界面和Windows一样易 上手。在EFI的操作界面中,鼠标成为了替代键盘的输入工具,各功能调节的模块也做的和Windows程序一样,可以说,EFI就是一个小型化的Windows系统。

    对 操作系统来说,如果主板使用的是BIOS,那么操作系统就必须面对所有的硬件,大到主板显卡,小到鼠标键盘,每次重装系统或者系统升级,都必须手动安装新的驱动,否则硬件很可能无法正常工作。而基 EFI的主板则方便很多,因为EFI架构使用的驱动基 EFIByteCode。EFIByteCode有些类似 Java的中间代码,并不由CPU直接执行操作,而是需要EFI层进行翻译。对 不同的操作系统来说,EFI将硬件层很好地保护了起来,所有操作系统看到的,都只是EFI留给EFIByteCode的程序接口,而EFIByteCode又直接和Windows的API联系,这就意味着无论操作系统是Windows还是Linux,只要有EFIByteCode支持,只需要一份驱动程序就能吃遍所有操作系统平台。

    更为神奇的是,EFIByteCode驱动还能绕过操作系统,直接安装在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系统比传统的BIOS更易 受到计算机病毒的攻击,当一部分EFI驱动程序被破坏时,系统有可能面临无法引导的情况。实际上,系统引导所依赖的EFI驱动部分通常都不会存放在EFI的GUID分区中,即使分区中的驱动程序遭到破坏,也可以用简单的方法得到恢复,因为只读芯片中的EFI代码足够用来引导计算机从光驱启动,此时插入EFI的安装盘,对EFI的系统存储区域进行修复或者覆盖安装,就能将PC恢复到正常。而且这个修复过程对操作系统来说,等 是从两台配置一模一样配置机器中的一台转移到另一台,并不会出现需要重新识别硬件的情况。EFI在概念上非常类似 一个低等级的操作系统,并且具有操控所有硬件资源的能力。不少人感觉它的不断发展将有可能代替现代的操作系统。事实上,EFI的缔造者们在第一版规范出台时就将EFI的能力限制 不足以威胁操作系统的统治地位。首先,它只是硬件和操作系统间的接口规范;其次,EFI环境下不提供中断的访问机制,也就是说每个EFI驱动程序必须用轮询的方式来检查硬件状态,并且需要以解释的方式运行,较操作系统下的驱动效率低得多;第三,EFI系统不提供复杂的存储器保护功能,它只具备简单的存储器管理机制,具体来说就是指运行在x86处理器的段保护模式下,以最大寻址能力为限把存储器分为一个平坦的段,所有的程序都有权限存取任何一段位置,并不提供真实的保护服务。

    EFI的命令行控制模式

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

    EFI的出现,可以说是充分弥补了BIOS原有的不足。因为BIOS过 自信芯片的安全,所以当遇上CIH病毒,启动机制也被完全破坏。而EFI将主要程序文件放在了硬盘上,被破坏了还可以使用光盘进行维修,对操作系统而言,这种“破坏-维修”的方式是完全透明的,不会影响操作系统的使用。虽然看起来EFI更容易受到损坏,但也更为易 修复。

    BIOS在经历了十几年发展之后,也终 走到了尽头,外观上的落后、功能上的羸弱、安全上的薄弱、性能上的不足,都严重制约着它的进一步发展。虽然在这些日子里,BIOS能够带给我们基本的功能,但PC要进步,就必须寻求更高更好的技术。

    EFI作为BIOS的替代者,无论是界面、功能还是安全性,都要远远高 后者,而且作为未来主板的趋势所向,EFI上能执行的程序会越来越多,EFI能够提供的基本功能也就越来越强。今天,微星在CES展会上展示了EFI主板的强大,因为和普通BIOS主板在设计难度以及生产兼容性上并不冲突,所以可以相信,拥有诸多优点的EFI会取代BIOS,让PC越来越易 使用。

    Intel作为EFI大力的推广者和制定者,能看到EFI逐渐从服务器平台走向桌面级市场,其中辛酸甘苦只有自己才知道。从初期厂商对EFI的概念毫无兴趣,到今天各大BIOS提供商如Phoenix,AMI等,原先被认为是EFI发展的阻碍力量,现在也不断的推出各自的解决方案。支持EFI功能的主板也逐渐退出。一切的一切,都似乎预示着我们可以和BIOS说声再见,让技术的进步来记录历史。
    展开全文
  • 关于EFI的一点介绍

    千次阅读 2009-07-29 22:28:00
    本文主要分为如下几个部分:1, EFI Overview :主要从整体上去描述一下什么是EFI。以及应用EFI对我们可能带来的好处。2, Framework : 从原理,架构等几个方面重点介绍了EFI规范的一种标准实现Intel Platform ...

    本文主要分为如下几个部分:
    1, EFI Overview :主要从整体上去描述一下什么是EFI。以及应用EFI对我们可能带来的好处。
    2, Framework : 从原理,架构等几个方面重点介绍了EFI规范的一种标准实现Intel Platform Innovation Framework for EFI(以下简称Framework)。
    3, Development Tools :重点介绍了目前由AMI提供的开发工具Visual eBIOS。并简单探讨了Insyde公司的相关工具。 同时还介绍了American Arium公司提供的硬件仿真器以及调试软件Source Point。
    4, EFI Development : Applications & Drivers :详细探讨了EFI开发的一些细节问题。并分析了一个简单的EFI Applications。同时还探讨了EFI Drivers。
    5, EFI Shell :探讨了EFI Shell。

    以上是主要的几个讨论方向,具体还会细分,详见正文部分。

    1,EFI Overview EFI综述

    1.1 Problems on legacy BIOS 传统BIOS所面临的难题
    在仔细的探讨EFI之前,我们先来回顾一下什么是BIOS。BIOS是英文Basic Input/Output System的缩写,意为基本输入输出系统。从IBM于上世纪八十年代初推出了全世界第一台PC机开始,BIOS就成了个人计算机必备的系统软件,用于管理基本的硬件,提供各种中断调用,引导操作系统等等。可以看出,BIOS对于个人计算机来说,是非常重要的系统软件,没有BIOS的计算机是无法运行的。
    传统上的BIOS经过了长达20多年的时间,基本上没有大的特别的改进,在操作系统已经完全32位化的今天,BIOS仍然停留在16位实模式时代。我们知道,在这个模式下,IA32架构的CPU只能访问1MB的基本内存,这就大大的***了程序员的创造性。同时,各种板卡上的BIOS在映射到系统内存中的时候,受到128Kbytes的大小***。这使得一台计算机不能安装太多的板卡,否则他们的BIOS的容量将很容易突破128Kbytes,但是在一些服务器上,安装很多板卡已经很常见。
    同时由于BIOS一般选择采用汇编语言直接开发,使得开发入门难度很大。很多初级工程师甚至无法完成这样的任务。并且各个公司之间的代码不兼容,严重阻碍了其发展。

    1.2 Intel’s solutions :EFI Intel的解决方案:EFI
    EFI是Intel为了解决上述的BIOS难题而推出一项新技术,旨在向业界提供一种在未来20年内仍然可以应用的BIOS架构。EFI是Extensible Firmware Inte***ce的缩写。中文意思是可扩展固件接口。由于目前习惯上叫做EFI,本文将继续称其为EFI而不是它的中文译名。
    正如它的名字一样,EFI并不是一套软件,而是一整套定义的很好的接口。它是一种规范,Intel目前已经正式发布了EFI Specification Revisions 1.10。任何人都可以按照EFI写出自己的实现来。而Intel也为我们准备好了一个标准的实现:Intel Platform Innovation Framework for EFI(以下简称Framework)。更加值得一提的是,Framework在BSD协议的规范下,已经实现了开放源代码,这为我们今后开发在EFI之上的应用提供了充分的技术保障。

    1.3 Benefits of the EFI EFI的优点
    EFI设计的充分原则就是屏蔽掉下层的硬件,事实上通过我们的分析,EFI已经很有操作系统的味道,EFI大概包括如下的几个部分:
    1) Pre-EFI基础代码
    2) 针对特定芯片的Pre-EFI模块
    3) DXE基础代码
    4) DXE驱动(Framework)
    5) DXE驱动(硬件)
    6) 兼容性支持模块CSM(可选,只支持IA32)
    EFI通过上述的这些组成部分,提供了以往BIOS可以提供的全部功能,并且做了大量的更新。同时在容量上也做的相当的完美,可以放入4MB的Flash中。而启动速度和唤醒速度也符合HDG标准。
    更加重要的是,EFI要求使用C语言作为开发语言,这样一来,使得我们可以更加容易的加入到BIOS的开发中来,同时也容易实现模块化与标准化。完全模块化的一个好处就是那些ODM或者OEM们可以方便添加他们想要的功能到EFI上。对我们而言,好处也是不言自明的,如果我们决定开始基于EFI的项目,那么我们可以在EFI中添加属于我们自己的模块,更加方便我们的用户的定制,甚至为用户提供个性化服务提供了可能。

    1.4 Supported OS 操作系统系统支持情况
    目前正式宣布支持EFI的操作系统包括Microsoft Windows Longhorn以及部分Linux。目前Longhorn已经进入了Beta1测试阶段,Intel也在一个DEMO中展示了用EFI来引导Longhorn的实际情况。同时展示的还有如何用EFI去引导RedHat Linux(需要借助一个第三方的开源软件ELILO)。至于其他的操作系统如Windows XP等,则暂时还不能支持EFI,所以只得使用CSM来达到引导目的。

    2, Framework

    2.1 Framework Overview 架构综述
    简单的说,Framework就是EFI的一种实现,由Intel完成。完全实现了EFI Specification Revisions 1.10中提及的各项功能。开发者可以基于Framework,开发出各种EFI应用来。同时也可以为Framework新增新的功能。

    2.2 Benefits of using the Framework 使用Framework的好处
    最大的好处可以大大减轻我们的劳动量,我们只把注意力集中到最需要注意的地方上去,既然已经有了EFI的实现,并且是开源的实现,那么自然不需要我们再次实现一次。此外,Framework的其他一些好处还包括:
    1) 跨平台Cross platform 目前Framework可以支持Intel IA32/64,XScale等硬件平台。同时我们注意到,Framework并不排斥其他平台,他拥有极高的可移植特性。
    2) 模块化设计Model Design Framework的所有特性都在驱动程序之中实现。而Framework本身则提供了高效的管理这些驱动程序的方法。比方说,你可以load一个驱动,而不需要重新启动计算机;当你想更新已经load过的驱动,你只需简单将它unload,然后再load新的驱动就可以了。对我们开发者而言,可以通过编写我们自己的驱动,来为Framework提供我们自己需要的功能。
    3) 快速的启动时间Fast Startup Time 正如EFI要求的那样,Framework的启动时间非常迅速,在这一点上,它一点也不比那些传统的BIOS落后。
    此外,由于Framework是EFI的实现,所有EFI的优点应该说Framework也都具备。

    2.3 The life cycle of the Framework Framework的生命周期
    Framework的执行,是按照如下的顺序来的:
    1) SEC :Security。这个是系统上电后立即进入的一个阶段,在这一阶段,Intel并没有做太多的说明,相反,他们说这个阶段可以由大家按照自己的需要利用。也就是说,我们可以安排我们自己想要的任何代码在这个阶段,比如一些身份验证之类的,总之,SEC可以说给开发者带来了充分的可定***务。
    2) Pre-EFI :正如它的名字一般,这个是在真正的EFI环境之前进入的一个状态,这个状态相当重要,以至于Intel花了很多时间来向我们阐述。根据目前的信息,这个阶段大概会做很多初始化的工作,会初始化CPU,初始化主板上的一些控制器以及芯片组,更加重要的是,再这个阶段内,会使用一种技巧,来迅速的建立起C 代码的执行环境,也就是说,会建立一个堆栈。这样,以后机器就可以运行那些由C语言编写的软件了。最后PEI内核会按照一种方法来加载所有的PEIM( Pre-EFI Module )。PEIM是一种可以运行在这个阶段的一种模块化的程序,任何人都可以开发自己的PEIM,加载的工作由PEIM Dispatcher完成。全部加载之后,PEI会调用DXE Main并将系统控制权交给下一个阶段DXE。
    3) DXE :Driver Execution Environment。这应该说是最激动人心的阶段,在这个阶段,EFI真正的提供了一个类似OS一样的东西。在上一个阶段PEI,系统已经建立了C代码执行的环境,那么从这个阶段开始,所有的东西,都是用高级语言完成了。进入DXE后,会首先调用各种驱动,比如Video Driver,NIC Driver,Soundcards Driver,USB Driver,PCI Controller Driver等等。完成之后,就开始进行BOOT。而这就是下一个阶段了。
    4) BDS :Boot Device Select。在这里,应该会有一个选择,是进入OS呢?还是去执行那些EFI Applications ?选择完成之后,就进入下一个阶段了。
    5) TSL :Transient System Load。这个阶段会按照在BDS阶段选择的结果来做不同的事情,如果选择了进入OS,那么控制权会被传递给Final OS Loader。而如果是要去运行EFI Applications,那么控制权交给Transient OS Boot Loader,这样就会建立起一个执行环境,之后就可以执行那些EFI Applications了。目前,应该会执行一个叫EFI Shell的程序。而传统的BIOS Setup也被写成一个EFI Applications。
    6) RT :Run Time。这个阶段就是OS运行的阶段。
    7) AL :After Life。这个是OS运行之后的阶段,比如关机之类的。但OS崩溃之后也属于这个阶段,也就是说,在系统万一崩溃之后,如果使用EFI,那么还是可以做许多事情的。
    以上就是Framework的执行周期。我们可以看到,Framework除了做很多传统BIOS的工作之外,还完成了很多其他的工作。比如建立起高级语言执行环境,调用设备驱动等等。最值得注意的是,甚至还有一个执行特定应用程序的机会。

    3,Development Tools 开发工具
    3.1 Overview 综述
    目前到底使用什么开发工具还不是很明晰。在这次Training上,为了给大家演示,使用的是Microsoft Visual Studio.NET 2003。不过那编译的是一个Emulator程序,用来模拟真实的EFI环境,况且由于EFI是系统软件,不太可能直接使用类似VS.NET这样的高级开发工具。
    后来在EFI Driver Development这门课程上,一位HP的工程师认为只要是C Compiler,理论上都可以开发。但是如果要编译成EBC( EFI Byte Code )代码的话,那么还得向Intel购买相应的编译器。(我看了下价格,一个许可证是900多美金!靠!)将代码编译成EBC代码的好处就是,不同的硬件架构可以共同使用同一套最终的二进制代码。比如,如果一个设备的Option ROM内的程序是编译成EBC的话,那么该设备就可以不做任何的修改就可以直接支持IA32/64。而事实上,我们知道,目前Intel的64位安腾处理器与32位的Pentium4处理器在指令集上是不兼容的。那么这又是为什么呢?因为Intel在Framework内,提供了一个叫做EBC Virtual Machine Driver的Protocols。正是靠它,才实现了这样一个功能。
    不过一些第三方厂商到是展示了不少很不错的开发工具。主要有AMI的开发工具Visual eBIOS,Insyde公司的调式工具H2ODDT,以及American Arium的硬件调式工具以及配套的软件SourcePoint。

    3.2 AMI Visual eBIOS
    VEB是一款非常出色的开发工具,由著名的BIOS Venders AMI提供。他为EFI提供了大量的Value Add的工具,AMI认为,Intel的EFI仅仅只是一个骨架(Skeleton)。而他们的VEB则为其穿上了衣服,并为不同的应用目的而做了大量的个性化开发。

    3.3 Insyde H2ODDT
    由于Insyde公司之前很少进入中国市场,所以我们对其产品了解不深,这款软件从介绍上看,似乎是专门用于调式Framework的。其余的详细细节还有待继续研讨。

    3.4 American Arium
    American Arium是老牌的硬件调式器供应商,他们这次带来了ECM-50与ECM-XDP。之间的差别似乎仅仅是ECM-XDP只支持那些使用XDP接口的处理器。而ECM-50则支持ITP与XDP接口。同时还演示了配套的软件SourcePoint。从展示来看,这似乎是目前最好的调式工具,可以直接从硬件上去调式,完全跟踪。并且支持C Source level的调试。不过根据我们猜测,这套调试工具的价格一定不菲。

    4, EFI Development : Applications & Drivers
    EFI 开发 :应用程序与驱动程序

    使用EFI的一个很大的好处就是有EFI Application和EFI Drivers。我下来会分别给予讨论,事实上,Intel自己也认为,App和Driver在本质没什么不同。都是一段程序,只是他们的侧重点有所不同而已。App需要和用户交互,而Driver则主要提供某种服务。

    4.1 EFI Applications EFI应用程序

    4.1.1 Module of the EFI Applications EFI应用程序的类型
    目前有好几种编写EFI Applications的方法,分别是基于EFI的,基于EFI Library的,基于C Library以及基于C Standard library的。根据Intel的说法,编译出来的应用程序的体积是一个比一个大,所以,如果想获得最小的体积,那么就应该使用基于EFI的方法,这也是Intel所推荐的。

    4.1.2 A *** EFI Applications based on EFI 一个基于EFI的简单应用
    最简单的方法就是亲自来看一个EFI App,下面我们就展示一个最简单的EFI App。

    #include < efi.h >

    EFI_STATUS
    InitializeDemoApp(
    IN EFI_HANDLE ImageHandle,
    IN EFI_SYSTEM_TABLE *SystemTable
    )
    {
    SystemTable->ConOut->OutputString(SystemTable->ConOut, L“DEMO Application” ) ;
    return EFI_SUCCESS ;
    }

    这个程序的工作很简单,就是打印一个字串到终端设备上。类似于我们常见的HelloWorld。从这个程序中,我们可以看出几点:
    1) 所有基于EFI的应用成都必须包含头文件efi.h
    2) 主函数必须被申明成EFI_STATUS
    3) 必须在参数前加IN或者OUT或者OPTIONAL来说明参数的类型。这些修饰符是Intel在efidef.h中定义的。目前是空的,不过为了未来的兼容性,所以还是加上的好。
    可以看出,单单就入门而言,由于是使用C语言开发,所以入门门槛很低,大多数的工程师都很轻松的加入到开发队伍中来。至于其他的编程模型,与上述的基于EFI的方法大同小异,只是所使用的库不同,在此就不在重复了。

    4.2 EFI Drivers EFI驱动程序
    现在简单的介绍一下EFI Drivers,事实上驱动程序与一般的应用没什么区别,只不过驱动不能直接执行,而是在EFI的调度下在后台执行,同时驱动可以接触硬件。当然也有不接触硬件的驱动,那叫Service Driver,是用来提供某种服务的,比如EFI EBC Virtual Machine就是一种Service Driver。EFI本身提供了很强大并且的高效的管理这些驱动的方法,当需要一个驱动的时候,我们可以load它,而当有了新版本或者该驱动所管理的硬件已经不在需要的时候,我们可以很方便的unload它。Intel已经提供了一个工具,叫DWW,用他可以很方便的生成基于EFI的驱动程序模型。

    5, EFI Shell

    5.1 EFI Shell Overview EFI Shell综述
    什么是EFI Shell?首先它是一个基于EFI的应用程序,其次它非常类似我们在Windows中遇到的cmd或者在Linux中的shell。事实上,这就是一个操作环境,一个外壳程序,它负责接收用户的输入,将用户的输入解释并告诉内核执行,同时将执行结果显示出来。它完成和用户的交互功能。所以,EFI Shell是非常重要的应用程序。

    5.2 EFI Shell Commands EFI Shell命令
    EFI Shell使用字符界面和用户交互,这里列出一些可能用到的命令以便参考。
    1) pci : 显示PCI设备或者PCI配置信息
    2) mm :显示或者修改内存,I/O以及PCI资源。
    3) mem :显示系统内存或者设备内存的情况。
    4) memmap :显示由EFI Environment创建的Memory Map。
    5) drivers :按照EFI Driver 的类型来逐一显示所有的已经安装的驱动程序。
    6) devices :显示所有已经被EFI Driver控制的设备。
    7) devtree :按照EFI Driver的类型来显示设备树。
    8) dh :显示在EFI Environment中的所有的Handles。
    9) connect :将一个Driver绑定到一个设备并启动设备。
    10) load :将一个Driver读入内存。
    11) unload :将一个Driver从内存中卸载。

    展开全文
  • BIOS、EFI与UEFI详解

    万次阅读 多人点赞 2018-06-12 21:04:06
    其实EFI或UEFI的一部分也是存储在一个芯片中,由于它们在表面形式、基本功能上和BIOS差不多,所以习惯上我们也把存储EFI/UEFI的芯片叫做EFI/UEFI BIOS芯片,EFI/UEFI也叫做EFI/UEFI BIOS,但在实际上它们和BIOS根本....
  • EFI、UEFI、MBR、GPT的区别

    万次阅读 多人点赞 2016-04-15 17:18:53
    UEFI、GPT、MBR是什么?这些专业术语不难理解,UEFI属于主板类名词,其作用类似于BIOS。GPT、MBR则属于硬盘类名词,它们的作用类似一艘航母的骨架,有了这个骨架,我们才可以进行细致到诸如C、D、E等盘符的分区。...
  • EFI 1 可扩展固件接口  可扩展固件接口(英文名Extensible Firmware Interface 或EFI)是由英特尔,一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案。BIOS技术的兴起源于...
  • 摘要:最近有资深的计算机网友留言提问题给系统之家小编问到UEFI和EFI分别是什么.小编好久没有遇到这样的问题了,UEFI和EFI这俩个相爱又相杀的小家伙区别还是蛮大的.小编就写了一篇UEFI和EFI区别的教程.下面就是UEFI和...
  • 10.14下的efi文件

    2020-07-15 23:33:32
    MacOS 10.14黑苹果EFI
  • Linux系统配置需要bootefi分区

    万次阅读 2018-07-01 02:02:22
    安装centos6在分区时发现缺少/boot/efi分区,需要在开机F10之后进入lifecycle controller之后,选择BIOS或者UEFI时,选择后者即可,后续配置分区时,即可发现/boot/efi分区。...
  • vmware fusion安装win10时 EFI Network获取不到数据 EFI Network...一直获取不到 接着系统提醒 出现如下界面 原因:启动光盘问题,换正确的光盘即可  
  • 黑苹果EFI大全文件,可以根据自己的电脑配置来下载,具体这么查找EFI文件,可以先按照CPU来查找,如果找不到那就按照主板型号,或者显卡型号,实在找不到的可以下载通用版的EFI文件试试! ☞ ☞ ☞ ☞**点击此处...
  • 怎么自己配EFI

    万次阅读 2019-08-20 20:52:42
    如何自己配EFI 好多人问怎么自己配EFI?? 怎么自动配EFI?? 有没有万能EFI?? 我这里介绍一个工具Auduefi 这个工具可以自己配EFI 首先解压双击运行 然后会出现正在检测的弹窗然后点确定 然后点工具—手动配置 ...
  • 安装ubuntu出现的EFI boot partition问题

    万次阅读 2018-12-30 15:31:12
    出现的问题 解决方法 :增加一个主分区:
1 2 3 4 5 ... 20
收藏数 21,257
精华内容 8,502
关键字:

efi