BIOS与UEFI
BIOS
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。 [1] BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。 [2] BIOS是个人电脑启动时加载的第一个软件。
- Pre-EFI初始化模块
- EFI驱动执行环境
- EFI驱动程序
- 兼容性支持模块(CSM)
- EFI高层应用
- GUID 磁盘分区
1 必须搞清的几个UEFI问题
(1) UEFI启动模式 与 legacy启动模式
legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种老的启动方式;
UEFI启动模式: UEFI
BIOS下新的启动技术。如果你的PC在UEFI启动模式下预装了Win8,你会发现有两个很小的隐藏分区。一个叫ESP(EFI系统分区),另一个MSR(Microsoft保留分区,通常为128MB)。MSR是windows要求的。ESP对UEFI启动模式很重要,UEFI的引导程序是以后缀名为.efi的文件存放在ESP分区中的,ESP分区采用fat32文件系统。此外,可能还存在一个小分区叫WinRE
Tools,这个是win8的恢复分区,体积也很小。所以千万不要手贱把这三个分区删了。但对我们有意义的是ESP分区,windows下想访问ESP分区需用分区工具给它分配盘符并取消隐藏;而Ubuntu则直接将这个分区挂载到/boot/efi,直接用文件夹浏览器进去就可以看到各种.efi文件了。
因此第一个关键问题就是确定自己的启动模式,方法是进入BIOS,然后你会发现有一项叫"boot mode",选中"UEFI
boot"就是UEFI启动模式,选中"Legacy boot"就是Legacy启动模式。
(2) UEFI启动模式只支持64位的系统,所以预装的win8是64位的,ubuntu(kylin)也需要64位的。
(3) UEFI BIOS 和 Legacy BIOS
我们都知道可以在传统的bios中调整设备的启动优先级,UEFI
BIOS在UEFI启动模式下不但可以调整设备的优先级,还可以调整设备中引导程序的优先级,安装完ubuntu之后,你再进BIOS就会发现多了一个可选择的启动项叫ubuntu。
(4) UEFI启动模式下如何从u盘或移动硬盘引导
只要u盘或移动硬盘上有一个fat32的分区,分区的根目录下有个文件夹叫EFI,UEFI就会自动去查找相应的启动文件(.efi)
如果你刚制作了ubuntu(kylin)-13.04-64位的启动u盘,可以打开它,你会发现分区的文件系统是fat32,确实有一个EFI文件夹,进去看看就是各种.efi引导文件(这里再次强调64位,32位下你是找不到这个文件夹的)。因此现在想制作可启动的u盘或移动硬盘就简单了,只需要复制粘贴就行了。
部分UEFI BIOS还支持从NTFS分区中查找启动文件。
Q:GPT与(U)EFI有何关系?
A:这点通过百科即可了解。GPT本来可算是(U)EFI的衍生品,但是两者并无绝对的彼此依赖关系。也就是说,在BIOS/MBR分区表使用(U)EFI,或者在GPT使用BIOS/MBR都是可能的。这点也是大多数初级接触的用户的误区,认为两者是共生关系,缺一不可,事实上却完全不是如此。
Q:操作系统对GPT的支持如何?
A:这点也可以通过查找百科了解。现有的主流操作系统皆可支持GPT。但是,我在这里要把所谓的支持分成两部分来说,一部分是对GPT作为数据盘的支持,一部分是对从GPT磁盘启动的支持。如果仅将GPT用作数据盘,几乎都不存在问题。如果要从GPT启动,对于Windows而言,由于其依赖(U)EFI,因此仅有64位的Windows可实现。而在Linux等非Windows系统,通常不存在此限制。
Q:GPT有何优势?
A:首先最明显的优势自然是对于大容量硬盘(2.2TB或者2.0TiB以上)的原生支持。现在虽然厂商各自针对大容量硬盘推出了在BIOS/MBR分区表的访问方案,不过总觉得有点别扭。
其次,GPT不存在扩展分区和逻辑分区,所有分区全都是主分区,且理论上可存在的主分区个数是无限的(大多数操作系统会将主分区个数限制为128个,此处可能有谬误)。由此带来的好处显而易见,不必纠结于分区个数的限制和扩展分区/逻辑分区和主分区的转换了。而且这两年分区工具日渐成熟,对GPT的支持也已经算是良好了。
第三,GPT的分区表在GPT头部和磁盘尾部各存一份,这种机制使得GPT的分区表不容易破坏或丢失,像我这样没有备份分区表习惯的人也不怕丢分区了。
Q:我没有(U)EFI主板,能否从GPT启动Windows?
A:事实上是可以的,不过需要Hackintosh的Clover EFI
Loader,这个Loader可以在不支持(U)EFI的主板模拟(U)EFI,从而骗过操作系统。只不过Clover似乎并不能单独提取出来,因此差不多只有需要Hackintosh和Windows双系统的用户才会用到。
Q:为何Linux/BSD等操作系统不需要(U)EFI即可从GPT启动?
A:仔细研究下GPT的组成结构就不难发现,GPT的第一个扇区是一份出于兼容考虑而保留的保护性MBR(PMBR)。有些操作系统从GPT启动依赖的就是这份PMBR,而不是(U)EFI。在涉及PMBR时,其操作和BIOS/MBR完全一样。因此,Linux/BSD等操作系统是“以传统MBR方式”从GPT启动的。
BIOS与UEFI的更多相关文章
- BIOS与UEFI、MBR和GPT介绍
操作步骤: UEFI是取代传统BIOS的,全称“统一的可扩展固件接口”.MBR则是传统的分区表类型,最大的缺点则是不支持容量大于2T的硬盘.GPT则弥补了MBR这个缺点,最大支持18EB的硬盘,是基于 ...
- 如何确定windows启动类型是bios还是uefi
原文地址:http://www.kqidong.com/bios/3728.html 如何确定windows启动类型是bios还是uefi?随着装机越来越简单,大家对安装系统充满信心,但是了解到启动类 ...
- BIOS + MBR > UEFI + GPT
BIOS + MBR > UEFI + GPT硬件接口系统与磁盘分区UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR. 名词解释: BIOS (Basic Input/Output S ...
- 操作系统的启动与引导问题 BIOS、UEFI、MBR、GPT
关于ISO.WIM.GHO三者的正确理解. ISO(Isolation)文件一般以ISO为扩展名,是复制光盘上全部信息而形成的镜像文件. WIM是英文Microsoft Windows Imaging ...
- BIOS/MBR UEFI/GPT关系与区别-资料整理
---恢复内容开始--- 关于 BIOS/MBR UEFI/GPT他们之间的关系一直比较疑惑, 首先一点前提 BIOS UEFI 是一类,是控制硬件,引导启动的:MBR GPT是硬盘的分区定义.. 后 ...
- 【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()
[我所认知的BIOS]-> uEFI AHCI Driver(8) - Pci.Read() LightSeed 6/19/2014 社会一直在变.不晓得是不是社会变的太苦开,而我没变所以我反而 ...
- Linux磁盘管理——BIOS和UEFI
参考:BIOS and UEFI - CompTIA A+ 220-901 - 1.1 BIOS and UEFI As Fast As Possible 严格上来说BIOS和UEFI除了在搜索boo ...
- BIOS、UEFI、Boot Loader都是些什么
BIOS.UEFI.Boot Loader都是些什么 目录 BIOS.UEFI.Boot Loader都是些什么 什么是BIOS 基本的输入输出是什么 自检程序"检"了什么 系统自 ...
- 【干货】BIOS、UEFI、MBR、GPT、GRUB 到底是什么意思?
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 01 前言 在学习 Linux 系统启动原理之前,我们先了解下与操作系统启动相关的几个概念. 02 与操作系统启动相关的几个 ...
随机推荐
- 044、Java中逻辑运算之向左边移位2位实现功能
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- Django(一)基础:安装环境、创建项目、视图、创建一个项目的应用(app)
一.安装环境 参考: https://docs.djangoproject.com/zh-hans https://www.runoob.com/django/django-install.html ...
- 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类
import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...
- CAN分帧接收实现
该版本程序实现了上电后先发送MACID检测功能,如果网络上有应答.则一直进行死循环,直到用户更改了本机的ID地址 才可以跳出循环体. 本单片机设置为双滤波 ,使目标地址为0X1F 实现了建立连接命令 ...
- flask邮箱注册问题
app/models.py self.confirmed = True db.session.add(self) db.session.commit() 这里的数据修改完后必须commit提交上去,不 ...
- CentOS7 静默安装Oracle XE 11g
Oracle XE简介 Oracle Database 11g 快捷版 (Oracle Database XE) 是一款基于 Oracle Database 11g 第 2 版代码库的小型入门级数据库 ...
- 【转】AutoMapper对象映射
什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...
- vzray服务端配置
打开securecrt登陆服务器 输入命令:bash <(curl -s -L https://git.io/vzray.sh)1 回车tcp 回车端口 回车默认 回车
- js基础学习之-js全局对象
声明的三种方式: 第一种: var test; //或var test = 5; 第二种: test = 5; 第三种: window.test; //或window.test = 5; //只是使用 ...
- java基础源码 (2)--StringBuilder类
Serializable(接口): 是一个IO的序列化接口,实现了这个接口,就代表这个类可以序列化或者反序列化,该接口没有方法或者字段,仅用于标识可串行话的语义. Appendable(接口): /* ...