Legacy BIOS Boot 是如何启动或引导的
现在Windows 8 64位操作系统全面采用UEFI引导启动的方式,与过去的Legacy启动有什么区别呢?今天就让我们一起来了解下。
Legacy BIOS UEFI Boot 是如何启动或引导的
当系统首次引导时,或系统被重置时,处理器会执行一个位于已知位置处的代码。这个位置在基本输入 / 输出系统(BIOS) 中。CPU 会调用这个重置 向量来启动一个位于闪存/ROM 中的已知地址处的程序。通常,它执行一个启动自测(POST)来检查机器。最后,它从引导驱动器上的主引导记录 (MBR)加载第一个扇区。
引导程序就位于 MBR 第一个扇区里面。此时引导程序就被装入 RAM 并执行。这个引导加载程序在大小上小于 512 字节(一个扇区)。 BIOS 自检完成之后,将 MBR 的代码读入内存,管理权交给 MBR , MBR 再读取 DPT , 从 DPT (Disk Partition Table,硬盘分区表占据 MBR 扇区的64个字节(偏移01BEH--偏移01FDH))找出硬盘的 所有分区哪一个是激活的主分区。到这里为止,所以系统都是一样的。下面就有区别了。 DPT读完找到主分区之后然后找到这个主分区 的 PBR (Partition Boot Record 分区引导记录),PBR位于激活主分区的第一个扇区。安装不同操作系统的时候 PBR 是会 被改变的, XP 的 PBR 写死的代码是去找 NTLDR 。而 Vista 和 7 的 PBR 里写进的就是去找 Bootmgr 。
这个时候显示器上还没有显示引导管理器的界面。 Bootmgr 被找到之后管理权就交到了 Bootmgr。 Boot Manager 首先 从 BCD 中读取 Boot Manager 菜单的语言版本信息,然后再调用 BOOTMGR 与相应语言的 BOOTMGR.EXE.MUI 组成 相应语言的启动菜单,之后才会在显示器上显示引导管理器,也就是选择多操作系统的那个文字界面。最后,当你选择了相应的操作系统,这里 是 Win7 或 8 (如果选择 XP, 会转入 XP 的启动流程,找到 XP 的NTLDR 然后启动), Bootmgr 就去寻找系统分区(系 统分区和主分区的概念不是一样的哦)Windows/System32 下的 Winload.exe 加载操作系统内核。
EFI Boot 介绍
EFI 的全称是可扩展固件接口 (Extensible Firmware Interface),它是 Intel 公司为全新类型的固件体系结构、 接口和服务提出的建议性标准。该标准有两个主要用途:向操作系统的引导程序和某些在计算机初始化时运行的应用程序提供一套标准的运行环境;为操作系统提供 一套与固件通讯的交互协议。
简单说,EFI 是 BIOS 的替代者。它为操作系统和固件提供了更加强大、安全、方便的交互途径。EFI 规范定义的接口,包括数据表包含平台的信息,可在 OS Loader 和 OS 的启动和运行时服务。
EFI 固件提供了几种技术优势:
引导能力支持大容量磁盘(超过 2 TIB );
更快的启动;
独立 CPU 的体系结构;
CPU 的独立的驱动程序;
灵活的预操作系统环境,包括网络功能;
模块化设计;
EFI 启动还需要一个特殊的分区表,该分区表指向一个特殊的文件。通常情况下该文件位于EFI 路径,EFI 启动涉及到一个写入 到 firmware 中的 boot loader, EFI 并不把启动程序放置在 MBR 中,firmware 知道如何读取分区表以 及 FAT 的文件格式。EFI 系统分区是用 FAT 格式格式化的特定分区,其中包 含 boot loader, 该 boot loader 是 EFI 可执行程序,可被 EFI boot manager 载入和运行。
Boot loader 被设置为一个可以通过固件访问的文件。Boot loader 允许用户选择并加载操作系统。所有的 boot manager 都包含一个 EFI 变量,该变量被用来定义固件配置参数。
MBR 与 GPT
MBR:主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。
主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息,是数据信息的重要入口。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要 用繁琐的方式试探性的重建数据结构信息后才可能重新访问原先的数据。主引导扇区内的信息是通过分区程序写入的,它是低级格式化的产物,和操作系统没有任何 关系(操作系统是创建在高级格式化的硬盘分区之上,是和一定的文件系统相联系的)。
对于硬盘而言,一个扇区可能的字节数为 128×2n (n=0,1,2,3)。大多情况下,取 n=2,即一个扇区(sector)的大小为 512 字节。
MBR 的限制:
在 MBR 分区表中最多 4 个主分区或者 3 个主分区+1 个扩展分区:从主引导记录的结构可以知道,它仅仅包含一个 64 个字节的硬盘分区表。 由于每个分区信息需要 16 个字节,所以对于采用 MBR 型分区结构的硬盘,最多只能识别 4 个主要分区(Primary partition)。
MBR 分区方案无法支持超过 2TB 容量的磁盘。因为这一方案用 4 个字节存储分区的总扇区数,最大能表示 2 的 32 次方的扇区个数,按每扇 区 512 字节计算,每个分区最大不能超过 2TB 。磁盘容量超过 2TB 以后,分区的起始位置也就无法表示了。
GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。GUID 分区表 (GPT) 是作 为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于 PC 常用的较旧的主引导记 录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。
GPT 使用 GUID 分区表 (GPT) 磁盘分区系统。GPT 磁盘提供了以下好处:
最多允许 128 个分区;主引导记录 (MBR) 磁盘可以支持 4 个主分区和扩展分区内的 124 个附加分区。
允许大于 2 TB 的卷容量,而 2 TB 是 MBR 磁盘的极限。
由于分区表提供了复制和循环冗余校检 (CRC) 保护,所以更加可靠。
能在所有基于 x64 平台上用作存储卷,包括运行 Windows XP Professional x64 Edition 的平台。 从 Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 x86 的Windows 平台上的存储卷。
可用作基于 x64 的 Windows 7、Windows Vista 和 Windows Server 2008 版本上的引导卷。从 Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 Itanium 的系统上的引导卷。
注意:Windows 仅支持从包含 Unified Extensible Firmware Interface (UEFI) 引导固件的系统上的 GPT 磁盘引导。
GOP 与 VBIOS 的区别
VBIOS 是计算机图形卡或集成图形控制器的 BIOS,类似系统 BIOS 提供了一组软件所使用的程序函数来访问系统硬件一样,VBIOS 也是提 供了一组视频相关的程序使用的函数访问视频硬件。通常由显卡厂商提供一个二进制 Bin 文件给 ODM 厂商,将其包在系统 BIOS 中。
而 GOP (Graphic Output Protocol) driver 是 EFI 架构下取代传统 VBIOS 黑箱的 EFI driver,它被设计成在操作系统启动之前支持基本需求的图形输出功能。
VBT: Video bios table。 VBT 是一个特别制作的客制化过得特殊 binary 数据块。靠 BMP utility 来编辑。VBT 同样如同 legacy vbios 一 样记录了 detail timing、GPIO Pins、Clock 等显示方面的参数信息。
两者的不同点:Pre-OS boot 时期,EFI 是通过标准的 GOP protocol 来实现显示 output。而 lagacy vbios需要通过 INT10 interrupter 来实现。
哪些系统支持 UEFI 启动?为什么当前我们不能支持 32bit 的 win8 UEFI 启动?
目前我们的 BIOS 的 Build 生成是 x64 模式的,因此 32 位的 Win8 UEFI 是不被支持的。
Legacy BIOS Boot 是如何启动或引导的的更多相关文章
- UEFI与 Legacy BIOS两种启动模式详解
(1). UEFI启动模式 与 legacy启动模式 legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种 ...
- 操作系统的启动与引导问题 BIOS、UEFI、MBR、GPT
关于ISO.WIM.GHO三者的正确理解. ISO(Isolation)文件一般以ISO为扩展名,是复制光盘上全部信息而形成的镜像文件. WIM是英文Microsoft Windows Imaging ...
- BIOS设置之UEFI/Legacy BIOS切换图文详解
近几年出现的电脑其中相当一部分都配置了UEFI BIOS,不过大多都默认以Legacy BIOS方式启动.而Win8正式上市后, 所有预装Win8(或Win8.1)的电脑都配置了UEFI BIOS并且 ...
- GPT vs MBR 分区 ,,, Legacy BIOS vs UEFI BIOS
MBR与GPT两种磁盘分区格式的区别 http://itoedr.blog.163.com/blog/static/120284297201378114053240 GPT Partition Tab ...
- 翻译wiki(一):Bios boot partition
文章翻译自wiki,水平有限,若有错万请见谅.原文:https://en.wikipedia.org/wiki/BIOS_boot_partition BIOS boot partition是一个分区 ...
- 联想g400怎么进bios设置u盘启动图文教程
联想g400怎么进bios设置u盘启动图文教程 转自http://www.kqidong.com/bios/3940.html 虽然成功学会u盘装系统的人很多,但是设置u盘启动在小白们的眼中却没有那么 ...
- 三种“BIOS设置光驱第一启动的图解”
除特殊机器类型一般都是“开机按DEL进入BIOS界面,当然还有AMD主板有按F2的进入” 第一种.AWARD BIOS设置光驱启动方法: 进入Bios界面,选第二项——>回车 选中此项,按PAG ...
- 02-4设置第一启动项--U盘装系统中bios怎么设置USB启动
整个U盘启动里最关键的一步就是设置U盘启动了,本教程内只是以特定型号的电脑为例进行演示,鉴于各种电脑不同BIOS设置U盘启动各有差异,所以如果下面的演示不能适用于你的电脑,建议去百度或者谷歌搜索一下你 ...
- 02-3设置第一启动项--进入BIOS设置USB方式启动
设置USB方式启动 https://zhinan.sogou.com/guide/detail/?id=1610014869 如何设置电脑从U盘启动呢?今天小编教大家如何进入BIOS设置USB方式启动 ...
随机推荐
- php_strip_whitespace和trim的搭配使用
在学习kongphp框架时有这么一段代码是为了生成运行时文件的 $runfile = RUNTIME_PATH.'_runtime.php'; if(!is_file($runfile)) { $s ...
- 九度oj 题目1357:疯狂地Jobdu序列
题目描述: 阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样 ...
- Welcome-to-Swift-15反初始化(Deinitialization)
在一个类的实例被释放之前,反初始化函数被立即调用.用关键字deinit来标示反初始化函数,类似于初始化函数用init来标示.反初始化函数只适用于类类型. 反初始化原理 Swift会自动释放不再需要的实 ...
- 北京集训TEST12——PA( Mortal Kombat)
题目: Description 有一天,有N个外星人企图入侵地球.地球派出全球战斗力最强的M个人代表人类对抗外星人.根据外星的战斗规则,每个外星人应该分别与一名地球人对战(不同的外星人要与不同的地球人 ...
- 如何应对pm2.5
细颗粒物又称细粒.细颗粒.PM2.5:指环境空气中空气动力学当量直径小于等于 2.5 微米的颗粒物,也称细颗粒物.能较长时间悬浮于空气中,其在空气中含量(浓度)越高,就代表空气污染越严重.可吸入颗粒物 ...
- 定时任务管理之python篇celery使用
一.为什么要用celery celery是一个简单.灵活.可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必须工具.他是一个专注于实时处理的任务队列,同时也支持任务调度. celery是异 ...
- 手动创建DataTable并绑定gridview
原文发布时间为:2008-08-04 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 【Eclipse】Eclipse中tomcat的Server配置(解决修改代码不断的重启服务器)以及设置tomcat文件发布位置与JSP编译位置查看
Eclipse有时候修改一点JS或者JSP都会自动重启,有时候修改完JS或者JSP之后必须重启服务器才生效,下面研究了server的一些选项之后彻底解决了这些问题,下面做记录: 我的 Eclipse ...
- Day 22 生成器yield表达式及内置函数(一丢丢)
本日知识点: ################################### #一.上节课复习:在for循环式,调用对象内部的__iter__方法, # 把他们变成了可迭代对象然后for循环调 ...
- mysql tinyint bit
Java bit 对应 mysql tinyint(1) false = 0 ,true = 1.