2023年11月25日发(作者:)

学习笔记

UEFIGPTUEFI boot 以及UEFI boot WIN7&8的安装

1 UEFI的概念

UEFI是跟BIOS平行的一个概念,是传统BIOS的替代品,UEFI更先进,能让OEM

发固件更省事,也能让硬件在OS没有加载前能够更好的被利用,从而提升用户在Pre

OS界面中的体验,拓展这部分的功能等等。

类似于传统BIOS支持的磁盘格式是MBRUEFI也有自己支持的一种磁盘格式,叫做

GUID分区表”,英文缩写为GPT

2 GPT的概念

MBR一样,GPT也是组织磁盘物理存储区域一种形式。GPT的优点很多,例如支持

超大容量的硬盘,可以支持上百个分区等等。而传统MBR的磁盘就只能支持到2.2T

的硬盘,以及4个分区。

3 UEFI Boot

UEFI Boot是指在UEFI模式下进行电脑的启动和操作系统的加载,而不是传统BIOS

启动电脑并加载OS的那套程序,二者在流程上有着根本的不同。虽然具体做了哪些事

情,仔细一看可能有不少类似的,但是差别还是很大的。

UEFI Boot有着自己的特点,同时也有自己的规矩。UEFI Boot的特点是,UEFI下可执

行的程序不仅可以放在CMOS里,也可以放在硬盘上。UEFI程序的运行,是基于一种

通用的驱动程序模型,使得UEFI程序几乎可以无限制的使用硬件资源,包括CPU

源、内存、硬盘、网络等等,彻底摆脱了传统BIOS运行在16bit实模式的束缚。因此

UEFI程序的执行效率相对于传统BIOS也得到了大幅的提高。

UEFI boot的规矩简单说是这样,在GPT磁盘里,必须有一个EFI System Partition

ESP),UEFI会在这个磁盘分区里找启动OS的引导程序。这个分区必须是FAT

式的,所以一般都用FAT32来格式化。这个启动OS的引导程序,扩展名为EFI,必须

存放在这个路径中:“EFIBoot”,文件命名也有规矩,叫:BOOT{架构名}.EFI,对

64PC来说,架构名是“x64”。其他的,比如intel的安腾架构的电脑,则架构

名为“IA64”。所以,对于普通电脑来说,UEFI引导文件是

”。

4 UEFI boot WIN7&8的安装

Windowswin7开始支持UEFI Boot下的安装,并且安装好之后,操作系统便仅支持

UEFI boot引导操作系统。

那么无论是windows的安装过程,还是今后的正常启动,以UEFI Boot方式运行,带

来的好处是能够加快系统的启动速度,在未来版本的windows中,还能够利用UEFI

的特性来实现更高的安全性等等。

UFEI之所以能够提供更快的启动速度,我觉得主要是源于以下几点:

a) UEFI运行在32/64bit模式下,而BIOS运行在16bit实模式下,效率不可同日而

语。16bit实模式只能使用64KB内存,而UEFI则几乎可以无限制的使用硬件资源。

b) UEFI与硬件打交道的能力比BIOS强很多,例如UEFI使用EFI Block I/O协议,

以块形式读数据,一次可以读1MB的数据,而实模式的BIOS通过int13读数据,

一次最多64KB

c) UEFI启动的时候省略了一些BIOS启动所需的步骤??(不敢确定)

d) Win8Boot Manager做了特殊的优化??(臆测)

那么除了满足以上几个以UEFI Boot的条件之外,windows对于GPT磁盘的管理也有

自己的一套规矩。

Windows下对于一个可启动的GPT磁盘,至少要包含三个分区。按照分区的物理位置,

划分如下:

System,就是之前提到的EFI System Partiton,简称ESP分区。这个分区必须是

FAT32格式,以便UEFI能够识别。别且这个分区里包含了Windows系统启动的EFI

程序以及其他windows的系统程序文件。这个分区最小为100M,可以更大无所谓。

MSR,则被称作Microsoft Reserved Partition,这个分区没有文件格式,在windows

系统里一般也不可见,主要用于兼容windows里面利用原MBR磁盘的隐藏扇区所实现

的各种功能。这个分区大小为128M,并且隐藏,用户不可对其内容进行操作。

再就是普通的分区了,但至少得有一个,用来存放windows操作系统。

所以,如果想用UEFI Boot方式引导安装windows,那么首先安装镜像的媒体里要有

能够被UEFI识别的启动程序,用来引导windows installer。而且媒体的分区必须是

FAT32。当然光盘除外,UEFI能够识别ISO 9960以及UDF格式的光盘。

需要注意的是Win7的安装镜像并没有默认就将UEFI Boot所需的引导文件准备好,需

要手工更改一下镜像才能够实现UEFI Boot