跳转至

电源状态、UEFI 与 MBR/GPT 引导

第三节:休眠、睡眠、待机区别

说完了计算机的启动过程,我们再来介绍下几种让电脑“休息”操作的区别吧,“待机、休眠、睡眠”这些看似差不多的名字,实际原理和效果却是有着很大不同的,我们有必要了解下这些细节。

待机(Standby):

将系统切换到该模式后,除了内存,电脑其他设备的供电都将中断,只有内存依靠电力维持着其中的数据(因为内存是易失性的,只要断电,数据就没有了)。这样当希望再次使用电脑的时候,就可以直接恢复到待机前状态。这种模式并非完全不耗电,因此如果在待机状态下供电发生异常(例如停电),那么下一次就只能重新开机,所以待机前未保存的数据都会丢失。

但这种模式的恢复速度是最快的,一般五秒之内就可以恢复。

休眠(Hibernate):

将系统切换到该模式后,系统会自动将内存中的数据全部转存到硬盘上一个休眠文件中,然后切断对所有设备的供电。这样当恢复的时候,系统会从硬盘上将休眠文件的内容直接读入内存,并恢复到休眠之前的状态。这种模式完全不耗电,因此不怕休眠后供电异常,但代价是需要一块和物理内存一样大小的硬盘空间(好在现在的硬盘已经跨越 TB 级别了,大容量硬盘越来越便宜)。

而这种模式的恢复速度较慢,取决于内存大小和硬盘速度,一般都要 1 分钟左右,甚至更久。

睡眠(Sleep):

睡眠是 Windows Vista 中的新模式,这种模式结合了待机和休眠的所有优点。将系统切换到睡眠状态后,系统会将内存中的数据全部转存到硬盘上的休眠文件中(这一点类似休眠),然后关闭除了内存外所有设备的供电,让内存中的数据依然维持着(这一点类似待机)。这样,当我们想要恢复的时候,如果在睡眠过程中供电没有发生过异常,就可以直接从内存中的数据恢复(类似待机),速度很快;

但如果睡眠过程中供电异常,内存中的数据已经丢失了,还可以从硬盘上恢复(类似休眠),只是速度会慢一点。不过无论如何,这种模式都不会导致数据丢失。这样看起来睡眠就像每天晚上困了,需要休息,第二天早晨会醒;

而休眠更像是科幻片中的星际旅行时的休眠,或者是动物的冬眠,是一个相对于睡眠更加有惰性的状态。此外,Win8 的快速开机实际上就是使用了休眠的原理,但是又和以往的休眠有所不同,在 Win8 中的关机是一种特殊的休眠,它将内存中系统内核的数据存储在硬盘中,而关闭了用户对话。这样的好处是下次启动系统时可以提高速度,又不必因为保存了大量的用户对话而占用很多的硬盘空间。

第四节:UEFI 概念、特性

一、 概念

UEFI 即 Unified Extensible Firmware Interface 的缩写,是由英特尔公司联合业界共同提出的一种欲在未来电脑系统中替代传统 BIOS 的升级解决方案。UEFI 定义了一种在操作系统和平台固件之间的接口标准,这种接口是用于使操作系统从预启动的操作环境,加载到操作系统上。这类操作系统可以是 Windows,或者是Linux。

UEFI 将提供一个明确的在操作系统与开机时启动固定于硬件中的软件平台之间的接口规范。

二、 特性

纠错特性:与 BIOS 显著不同的是,UEFI 是用模块化、C 语言风格的参数堆栈传递方式、动态链接的形式构建系统,它比 BIOS 更易于实现,容错和纠错特性也更强,从而缩短了系统研发的时间。更加重要的是,它运行于 32 位或 64 位模式,突破了传统16 位代码的寻址能力,达到处理器的最大寻址,此举克服了 BIOS 代码运行缓慢的弊端。兼容性: UEFI 体系的驱动并不是由直接运行在 CPU 上的代码组成的,而是用 EFIByte Code(EFI 字节代码)编写而成的。

Java 是以“Byte Code”形式存在的,正是这种没有一步到位的中间性机制,使 Java 可以在多种平台上运行。UEFI 也借鉴了类

原手册 UEFI 固件接口架构图

似的做法。EFI Byte Code 是一组用于 UEFI 驱动的虚拟机器指令,必须在 UEFI 驱动运行环境下被解释运行,由此保证了充分的向下兼容性。鼠标操作:UEFI 内置图形驱动功能,可以提供一个高分辨率的彩色图形环境,用户进入后能用鼠标点击调整配置,一切就像操作 Windows 系统下的应用软件一样简单。

可扩展性:UEFI 将使用模块化设计,它在逻辑上分为硬件控制与 OS(操作系统)软件管理两部分,硬件控制为所有 UEFI 版本所共有,而 OS 软件管理其实是一个可编程的开放接口。借助这个接口,主板厂商可以实现各种丰富的功能。比如我们熟悉的各种备份及诊断功能可通过 UEFI 加以实现,主板或固件厂商可以将它们作为自身产品的一大卖点。

UEFI 也提供了强大的联网功能,其他用户可以对你的主机进行可靠的远程故障诊断,而这一切并不需要进入操作系统。图形界面:目前 UEFI 主要由这几部分构成:UEFI 初始化模块、UEFI 驱动执行环境、UEFI 驱动程序、兼容性支持模块、UEFI 高层应用和 GUID 磁盘分区组成。

第五节:引导方式简述

一、 GPT 概念

GUID 磁碟分割表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被 Intel 用于替代个人计算机的 BIOS)的一部分,被用于替代 BIOS 系统中的一个 64 个字节来存储逻辑块地址和大小信息的主开机记录(MBR)分区表。

二、 MBR 与 GPT 特点

MBR 分区表在 windows 操作系统下最多支持 4 个主分区或 3 个主分区+1 个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1 个扩展分区可以划分多个逻辑分区。MBR 分区表不支持容量大于 2.2TB 的分区(一些硬盘制造商将他们的容量较大的磁盘升级到了 4KB 的扇区,这意味着 MBR 的有效容量上限提升到了 16 TB)

如下图是一个 MBR 分区表示例:

GPT 分区表对分区数量没有限制,但在 windows 系统上最多可以支持 128 个主分区。GPT 分区表突破了 MBR 最大支持 2.2T 分区的限制,貌似最大支持 18EB 的分区。

三、 两种引导方式

目前主要的系统引导方式也有两种:传统的 Legacy BIOS 和新型的 UEFI BIOS。一般来说,有如下两种引导+磁盘分区表组合方式:Legacy BIOS+MBR 和 UEFIBIOS+GPT。Legacy BIOS 无法识别 GPT 分区表格式,所以也就没有 Legacy BIOS+GPT 组合方式。

UEFI BIOS 可同时识别 MBR 分区和 GPT 分区,所以 UEFI 下,MBR 和 GPT 磁盘都可用于启动操作系统。不过由于微软限制,UEFI 下使用 Windows 安装程序安装操作系统是只能将系统安装在 GPT 磁盘中。Legacy BIOS启动顺序:Legacy BIOS→MBR→“活动的主分区”→\bootmgr→\Boot\BCD→\Windows\system32\winload.exe

原手册插图(PDF 第 68 页)

传统 Legacy BIOS 引导 windows 操作系统时,是通过一个活动的主分区下的bootmgr(启动管理器)文件导入根目录下 boot 文件夹里的 BCD(启动设置数据)文件,然后 BCD 文件根据自身的配置内容加载系统启动文件 winload.exe(位置:根目录\Windows\system32\winload.exe)来启动系统。一个 BCD 文件可以加载多个系统启动文件从而实现引导多个系统的启动。需要注意的是:MBR 磁盘格式下,windows 系统的启动文件(bootmgr、BCD)必须存放在活动的主分区内,这样才能正常引导系统启动(MBR 磁盘分区格式下,只允许有一个分区是活动的)。

如果是使用微软原版操作系统按照 windows 安装程序来进行系统安装,系统会自动创建一个隐藏的活动主分区(win7 貌似是 100M,win8 貌似是 350M)用来存放启动文件;如果采用其他安装方式来安装系统,由于系统默认并不会自动创建这个活动的主分区,启动文件将会存放我们的系统盘里。所以我们在采用其它安装方式安装第一个系统时,需要确保安装系统的分区是活动的、而且是主分区。

而安装第二个、第三个……系统时,就不必要求必须是主分区了,逻辑分区也可以。因为安装第二个、第三个……系统时,我们已经有了一个活动的主分区了(第一个系统所在的分区),这个活动的主分区下的 BCD 文件里已经包含了我们的第二个、第三个……系统的启动信息用来启动第二个、第三个……系统。UEFI BIOS启动顺序:UEFIBIOS→EFI 系统分区(FAT 格式的分区)→\efi\Microsoft\boot\bootmgfw.efi → efi\Microsoft\boot\BCD →\Windows\system32\winload.efiUEFI BIOS 引导 windows 系统时,是通过一个 FAT 格式分区下的 bootmgfw.efi 文件来导入 BCD 文件,然后 BCD 文件根据自身的配置内容加载系统引导文件winload.efi(对比 legacy 引导发现,UEFI 的引导文件为 winload.efi,而 Legacy 的引导文件为 winload.exe)

需要注意的是:GPT 磁盘格式下,windows 系统的启动文件(bootmgfw.efi、BCD)是存放在一个 FAT 格式的分区里的,有些出厂预装 win8 系统的电脑下将该FAT 分区称之为 ESP 分区或 EFI 分区如下图,ESP 和 EFI 分区一般都是隐藏的 FAT 分区,可以通过 DG 分区工具来创建ESP 分区,还可以用 DG 为该分区添加盘符让其在资源管理器下显现出来。

原手册插图(PDF 第 70 页)

原手册插图(PDF 第 70 页)

可见,UEFI+GPT 模式引导 windows 系统时,并不需要 MBR 主引导记录,也不需要活动分区,只需要你一个存放了引导启动文件的 FAT32 格式分区就可以了,这个FAT32 分区当然也可以是 U 盘等外接 USB 设备了。就目前情况而言,GPT 分区表磁盘不支持 32 位的 win7 以及 win7 之前的系统,支持64 位的 XP、win7、win8、win10 和 32 位的 win8、win10。一般地,GPT 磁盘多与64 位 windows 系统组合搭配。

来源:四川大学飞扬俱乐部《维修手册》PDF 第 64-71 页(印刷页 63-70)。