您的位置:首页 > 产品设计 > UI/UE

uefi和legacy bios的深度剖析

2016-06-13 18:11 417 查看
这个是我总结的,参考了几个论坛还有《鸟哥的私房菜》,还有一部分是我自己的经验..适合初步了解uefi和legacy的人更深入的了解

uefi&legacy

Legacy

1.我们可将MBR磁盘分区结构用下图简单表示(Windows下基本磁盘、4个主分区):



为了方便计算机访问硬盘,把硬盘上的空间划分成许许多多的区块(英文叫sectors,即扇区),然后给每个区块分配一个地址,称为逻辑块地址(即LBA)。

在MBR磁盘的第一个扇区内保存着启动代码(446bytes)和硬盘分区表(64bytes)。

启动代码(446bytes) 的作用是指引计算机从活动分区引导启动操作系统(BIOS下启动操作系统的方式);

分区表的作用是记录硬盘的分区信息。在MBR中,分区表的大小(64bytes)是固定的,一共可容纳4个主分区信息,每一个都记录区段的开始与结束柱面号码。扩展分区(操作系统限制)最多有一个,扩展分区的目的是使用额外的扇区来记录分区信息 。

在MBR分区表中逻辑块地址采用32位二进制数表示,因此一共可表示2^32(2的32次方)个逻辑块地址。如果一个扇区大小为512字节,那么硬盘最大分区容量仅为2TB.

2.原理

磁盘起始位置以特定格式描述磁盘上的分区,并包含“启动装载程序 (boot loader)”,BIOS 固件知道如何执行这一小段启动装载程序代码。启动装载程序的职责是启动操作系统(现代启动装载程序的大小通常超出了 MBR 空间所能容纳的范围,因此必须采用多阶段设计,其中 MBR 部分只知道如何从其他位置加载下一阶段)。

3.引导顺序

bios->mbr(内含引导加载程序)->引导加载程序boot loader(一个可读取内核文件来执行的软件)(作用1提供菜单2载入内核3其它的loader)。

安装系统的时候mbr和boot sector(每一个分区的第一个扇区,文件系统会保留)均放bootloader(所以先装linux后装win,引导会掉)。但是windows的bootloader没有转移控制权的功能。所以一般mbr放grub引导装载程序(1指向linux内核文件2移交控制权给boot sector的windows bootloader)。

系统启动时顺序 BIOS -> MBR (主引导记录)-> DPT (硬盘分区表)-> PBR -> 寻找根目录下 NTLDR(XP) ->boot.ini(xp)

BIOS -> MBR -> DPT -> PBR-> 寻找根目录下bootmgr(WIN7/Vista)/grldr(Grub)/btldr.mbr(BootLink)->\boot\bcd->winload.exe->内核

当xp和win7共存,则bootmgr起作用。Xp显示为早期的windows版本

4.要求

bios方式只要存在一个非隐藏的活动主分区(必须放在这,如果不放在活动分区,可以用ntbootautofix修复,会自动从非活动分区的系统盘复制引导进入活动分区!)就能引导系统。所以可以将系统装在任何一个分区。也可以将系统和引导放不同分区。这个主分区的位置不固定。然后安装系统成功后系统自动设置这个活动主分区为隐藏。

GPT磁盘分区结构可用下图简单表示(Windows下基本磁盘):

GPT分区结构



在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。

GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以计算一下2^64是一个多么庞大的数据,以我们的需求来讲完全有理由认为这个大小约等于无限。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。



Windows操作系统对GPT磁盘的支持

因为BIOS无法识别GPT分区,所以BIOS下GPT磁盘不能用于启动操作系统,在操作系统提供支持的情况下可用于数据存储。

UEFI可同时识别MBR分区和GPT分区,因此UEFI下,MBR磁盘和GPT磁盘都可用于启动操作系统和数据存储。

下表列出了Windows各版本操作系统对GPT磁盘的支持程度:

32位Windows对GPT分区支持情况



64位Windows对GPT分区支持情况



2.原理

在ESP分区(或者fat32,即使是这样,在win系统下该分区还不可见)下,(“√”表示必不可少的文件,其他可以删除,但是必须是下面的路径!!!,不区分大小写):

EFI/Boot/bootx64.efi(或bootia32.efi)

√ EFI/Microsoft/Boot/bootmgfw.efi

√ EFI/Microsoft/Boot/BCD

EFI/Microsoft/Boot/zh-CN

boot×64是系统引导,凌驾于win引导之上,可以读取开机项

2.启动顺序:

①一般情况下(系统引导和windows引导都管用)

\efi\boot\bootx64.efi->\efi\microsoft\boot\bootmgfw.efi->\efi\microsoft\boot\bcd->winload.efi

②系统引导(windows boot manager不管用了,系统引导管用)

\efi\boot\bootx64.efi->\efi\microsoft\boot\bcd->winload.efi

③windows引导(windows boot manager) \efi\microsoft\boot\bootmgfw.efi->\efi\microsoft\boot\bcd->winload.efi

3.修复引导

bcdboot.exe 会修复系统引导,而且会同时修复计算机默认引导和Windows 默认引导,即在esp(fat)分区下没有任何文件下的情况下完成所有的文件复制。在ESP分区同时出现bootx64.efi和bootmgfw.efi,并且bootx64.efi是由bootmgfw.efi 改名而来的。与此同时在Boot Menu启动选择菜单那里生成“Windows Boot Manager”,Windows Boot Manager 及其包含的信息是保存在主板上的NVRAM里面的,而不是保存在硬盘上,故删除Windows Boot Manager需要到BIOS设置区删除。

4.UEFI及其优势

仅从系统启动原理方面来做比较。UEFI之所以比BIOS强大,是因为UEFI本身已经相当于一个微型操作系统,其带来的便利之处在于:首先,UEFI已具备文件系统(操作系统组织管理文件的一种方法,直白点说就是把硬盘上的数据以文件的形式呈现给用户。Fat32、NTFS都是
4000
常见的文件系统类型)的支持,它能够直接读取FAT分区中的文件;

其次,可开发出直接在UEFI下运行的应用程序,这类程序文件通常以efi结尾。既然UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行的应用程序。那么完全可以将Windows安装程序做成efi类型应用程序,然 后把它放到任意fat分区中直接运行即可,如此一来安装Windows操作系统这件过去看上去稍微有点复杂的事情突然就变非常简单了,就像在Windows下打开QQ一样简单。而事实上,也就是这么一回事。

要知道,这些都是BIOS做不到的。因为BIOS下启动操作系统之前,必须从硬盘上指定扇区读取系统启动代码(包含在主引导记录中),然后从活动分区中引导启动操作系统。对扇区的操作远比不上对分区中文件的操作更直观更简单,所以在BIOS下引导安装Windows操作系统,我们不得不使用一些工具对设备进行配置以达到启动要求。而在UEFI下,这些统统都不需要,不再需要主引导记录,不再需要活动分区,不需要任何工具,只要复制安装文件到一个FAT32(主)分区/U盘中,然后从这个分区/U盘启动,安装Windows就是这么简单。

6.要求

UEFI+GPT的ESP的位置也是可以随意设置的,在硬盘起始位置、中间位置、末尾,都可以,只要分区属性和其中的引导文件正确,就可以引导启动操作系统 。

gpt一定要uefi才能引导系统。uefi不一定要gpt只要有一个fat分区即可。

不支持uefi的主板(系统支持uefi文件读取),使用大于2.2T的硬盘,可以用mbr(u盘,另一个硬盘)加gpt。前者放引导。此时系统可以装在gpt与mbr。

uefi加mbr下没有了活动分区,直接引导分区和系统分区。不能把引导放在esp分区,要放fat里面,并且这个分区一定要是活动分区!!!

7.经验

当uefi方式启动成功系统后引导丢了,目前出现了不能关机,但是能重启成功的现象。

grub2引导过程:

BIOS:

开机—>按照指定的顺序启动U盘—>启动U盘主引导—>主引导搜索指定位置的Grub.cfg—>加载Grub.cfg菜单,有用户自行选择启动项

UEFI

开机—>查找指定U盘内计算机默认引导文件:\efi\boot\bootx64.efi (grub2.efi改名)—>搜索指定位置的Grub.cfg—>加载Grub.cfg菜单,有用户自行选择启动项

大家如需自行定制Grub2的话需具备 ubuntu 系统,并且需要BIOS和UEFI版本的各一个,然后使用 grub-mkimage 定制。

linux中所谓挂载就是指进该目录可以直接读取该分区的意思。根目录一定要挂载到某一个分区。

Reset to Setup Mode恢复bios出厂设置,Restore Factory Keys用于清除或恢复内置的安全启动密钥,OS Optimized Defaults是一个“顶级”设置选项,开启该选项后,BIOS会自动将所有相关选项恢复为预装Win8/8.1 默认启动方式所要求的标准设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uefi legacy