Linux启动过程——EFI
EFI简介
Extensive Firmware Interface 可拓展固件接口,是英特尔公司推出的一种在类PC的电脑系统中替代BIOS的升级方案。EFI以小型磁盘分区的形式存放在硬盘上的,并非在BIOS的FLASH里面。
EFI在开机时的作用和BIOS一样,都是初始化PC,但是在细节上也有区别。BIOS是对硬件按照一定顺序进行检查,而EFI不但检查硬件完好性,还会加载硬件在EFI中的驱动程序,不需要操作系统负责加载驱动。EFI最创新的地方就是颠覆了BIOS的界面概念,让操作系统和Windows一样易上手。EFI就像一个小型的操作系统。
EFI与传统BIOS对比
如果操作系统主板使用的是BIOS,那么操作系统必须面对所有的硬件,大到主板显卡,小到键盘鼠标,每次重装系统或升级都必须手动安装新的驱动程序,否则硬件可能无法工作。而基于EFI的主板则方便很多,因为WEFI架构使用的驱动基于EFI Byte Code,它并不是由COU直接执行操作,而是需要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的位置和组成
BIOS芯片只有256KN大小,不足以存放EFI。EFI是以小型磁盘分区形式存放在硬盘上的。EFI必须安装在支持EFI功能的主板上,使用光驱引导系统,然后对磁盘进行EFI化处理,这个处理过程主要就是划分EFI独用的磁盘空间。
EFI存储空间在百兆字节左右,具体视驱动文件多少而定(在磁盘管理器中可以看到我的电脑的EFI占用空间为300M)。其中通常包含:
- Pre-EFI初始化模块
- EFI驱动执行环境
- EFI驱动程序
- 兼容性支持模块(CSM)
- EFI高层应用
- GUID 磁盘分区
EFI的启动过程
在实现中,EFI初始化模块和驱动执行环境通常被集成在一个只读存储器中。Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU,主桥及存储器的初始化工作,紧接着载入EFI驱动执行环境(DXE)。当DXE被载入运行时,系统便具有了枚举并加载其他EFI驱动的能力。在基于PCI架构的系统中,各PCI桥及PCI适配器的EFI驱动会被相继加载及初始化;这时,系统进而枚举并加载各桥接器及适配器后面的各种总线及设备驱动程序,周而复始,直到最后一个设备的驱动程序被成功加载。正因如此,EFI驱动程序可以放置于系统的任何位置,只要能保证它可以按顺序被正确枚举。例如一个具PCI总线接口的ATAPI大容量存储适配器,其EFI驱动程序一般会放置在这个设备的符合PCI规范的扩展只读存储器(PCI Expansion ROM)中,当PCI总线驱动被加载完毕,并开始枚举其子设备时,这个存储适配器旋即被正确识别并加载它的驱动程序。部分EFI驱动程序还可以放置在某个磁盘的EFI专用分区中,只要这些驱动不是用于加载这个磁盘的驱动的必要部件。在EFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入,新结构中,磁盘的分区数不再受限制(在MBR结构下,只能存在4个主分区),并且分区类型将由GUID来表示。在众多的分区类型中,EFI系统分区可以被EFI系统存取,用于存放部分驱动和应用程序。很多人担心这将会导致新的安全性因素,因为EFI系统比传统的BIOS更易于受到计算机病毒的攻击,当一部分EFI驱动程序被破坏时,系统有可能面临无法引导的情况。实际上,系统引导所依赖的EFI驱动部分通常都不会存放在EFI的GUID分区中,即使分区中的驱动程序遭到破坏,也可以用简单的方法得到恢复,这与操作系统下的驱动程序的存储习惯是一致的。CSM是在x86平台EFI系统中的一个特殊的模块,它将为不具备EFI引导能力的操作系统提供类似于传统BIOS的系统服务。
Linux启动过程——EFI相关推荐
- 嵌入式Linux启动过程中的问题积累
嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...
- 深入理解Linux启动过程 0号进程,1号进程
深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...
- Linux启动过程详细介绍
Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相 ...
- Linux启动过程学习
该学习过程是一个Linux从主引导记录到第一个用户空间程序的指导. 启动一个Linux系统的过程包含一系列步骤.但是无论你是启动一个标准的X86桌面或嵌入式PowerPC,大部分流程是相似的.该文章探 ...
- linux系统需要占多大的内存,linux启动过程Bootloader、kernel
256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...
- linux 启动过程
Linux 启动过程详解 下面来详细了解一下 Linux 的启动过程. Linux 的启动 过程包含了 Linux 工作原理的精髓, 而且在嵌入式的开发过程也非常需要这方面知识的积累 ...
- Linux 启动过程详解
随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统.由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Window ...
- linux 启动脚本 tty,Linux启动过程简介
许多人对Linux的启动过程感到很神秘,因为所有的启动信息都在屏幕上一闪而过.其实, Linux的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1.启动内核.在这个阶段,内核装入内存并 ...
- [转载] Linux启动过程详解-《别怕Linux编程》之八
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- linux启动过程剖析,分析Linux系统的启动过程
导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...
最新文章
- python在列表末尾删除一个_从链接列表的尾部移除(Python)
- LeetCode 98验证二叉搜素树(中序遍历)99恢复二叉搜索树
- JavaScript变量和作用域
- Jsp和Servlet有什么区别?
- mysql 读取data文件_利用mysql的LOAD DATA INFILE的功能读取客户端文件
- 3-6 字符和字符串处理
- 如何在系统设置mysql环境变量(win11)
- 带你用最简单的方式获得小米完整root权限(无需刷第三方rom)
- 从编程角度阐述有限元最佳入门方法:以Abaqus 和OpenSees 为例
- 【gfs】google file system 之重点剖析
- 华东理工大学计算机专业研究生,华东理工大学硕士研究生培养方案计算机科学与技术一级学科(学科代码:0812)信息科学与工程学院...
- [人工智能-深度学习-72]:卷积神经网络 - 空间金字塔池化SPP-Net网络与Pytorch代码实现
- 系统学习机器学习之系统认识
- SAP工具箱 数据同步平台(九 与PO整合)
- STM32-IIC模拟从模式
- freemarker基于docx格式创建模板导出带图片pdf文件
- Illustrator CS5扭曲功能初学者必读(2)——宽度工具
- matlab z变换离散化_Matlab数据可视探索
- 计算机管理员无法关闭防火墙,Win10关闭防火墙提示:出于安全原因 某些设置由系统管理员管理的解决方法...
- 富士康Java开发面试题目