[TOC]

0x00 快速入门

描述:英特尔已经宣布计划在2020年之前将所有芯片组完全替换为UEFI,所以说BIOS即将迎来生命周期的最后一个周期;但是我们现在UEFI附带的新电脑仍将其称为“BIOS”,符合用户的叫法;

2007年,英特尔,AMD,微软和PC制造商就新的统一可扩展固件接口(UEFI)规范达成一致。 这是一个全行业标准管理的统一扩展固件接口,并不完全由英特尔推动。

UEFI和BIOS都是低级软件,所谓低级软件就是指它们会在引导操作系统之前启动时启动,但UEFI是更现代的解决方案,支持更大的硬盘驱动器,更快的启动时间,更多的安全功能以及方便的图形和鼠标游标。

说到操作系统的引导就不得不提到操作系统的文件系统,为下面的知识进行一个扩展;

File System
File System(文件系统)是存储媒介中文件存储的组织方式。

  • 不同的文件系统类型有不同的速度,灵活性,安全性和占用空间。
  • 不同操作系统只支持特定的文件系统类型。
    常见的文件系统类型有 FAT16,FAT32,NTFS,EXT3,EXT4,HFS, xfs 等。


BIOS

什么是BIOS?
答: BIOS 英文全称(Basic Input Output System)即基本输入输出系统,它是位于计算机主板上的芯片中的低级软件且已经存在很长时间了,计算机启动时BIOS加载,BIOS负责唤醒计算机的硬件组件,确保它们正常运行然后运行引导加载程序来引导Windows或任何其他已安装的操作系统。并且可以在BIOS设置屏幕中配置各种设置。诸如计算机硬件配置,系统时间和引导顺序等;
启动流程:

  • 开机-POST或者开启自检-查找引导设备上存储的主引导记录和MBR-加载BootLoader-进入系统

局限性:

  • 只能从2.1TB或更少的驱动器启动,限制是由于BIOS的主引导记录(MBR分区)系统的工作方式
  • 必须以16位处理器模式运行,并且只有1 MB空间可供执行,导致初始化多个硬件设备时会出现问题,所以就是单项单项检查导致启动时间较慢;

补充:CMOS缩写代表互补金属氧化物半导体,指BIOS在主板上存储各种设置的以电池供电的存储器,在现代系统中这种方法已被闪存(也称为EEPROM)取代

传统启动方式:即是我们所说的 Legacy 模式


UEFI

什么是UEFI?
答: UEFI(Unified Extensible Firmware Interface )即通一扩展引导接口,它还以更标准化的方式引导启动EFI可执行文件,而不是从驱动器的主引导记录运行代码。

特点:

  • UEFI支持图形化操作包括图形和鼠标光标支持
  • 启动时间大幅缩短
  • 支持更大硬盘驱动器(2.1TB以上),理论限制为9.4ZB zettabytes
  • UEFI可以以32位或64位模式运行,并具有比BIOS更多的可寻址地址空间,意味着您的引导过程更快/BIOS设置更加清晰
  • 支持安全启动可以检查操作系统的有效性,以确保没有恶意软件篡改引导进程。
  • UEFI固件本身支持网络功能有助于进行远程故障排除和配置


常见组合:

  • UEFI + GPT(分区)启动方案
  • BIOS + MBR(分区)启动方案

硬盘的分区结构:

  • MBR分区表:Master Boot Record即硬盘主引导记录分区表,只支持容量在 2.1TB 以下的硬盘只能管理2.1TB,最多只支持4个主分区或三个主分区和一个扩展分区,扩展分区下可以有多个逻辑分区。
  • GPT分区表:GPT全局唯一标识分区表(GUID Partition Table),与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区,GPT可管理硬盘大小达到了18EB。只有基于UEFI平台的主板才支持GPT分区引导启动
  • ESP分区:EFI system partition分区用于采用了EFI BIOS的电脑系统用来启动操作系统。分区内存放引导管理程序、 驱动程序、系统维护工具等。如果电脑采用了EFI系统或当前磁盘用于在EFI平台上启动操作系统,建议ESP分区为FAT16格式,容量最好大于100M,无其他特殊要求
  • MSR分区:即微软保留分区,是GPT磁盘上用于保留空间以备用的分区,例如在将磁盘转换为动态磁盘时需要使用这些 分区空间。

UEFI启动为什么那么快?
UEFI相比传统的启动方式少了一个启动时候自检的过程,所以启动时间大幅度缩短;

WeiyiGeek.启动流程

WeiyiGeek.启动流程


对比补充

BIOS vs UEFI
BIOS(Basic Input/Output System)和 UEFI(Unified Extensible Firmware Interface )是不同的计算机启动固件(Fireware),需要硬件(通常为主板)支持,相互代替的,其中 UEFI 是比较新的方式。

  • BIOS
    经典的启动固件,会调用磁盘的 MBR,然后由 MBR 中的 loader 继续加载操作系统。

  • UEFI
    UEFI 用来代替 BIOS,并克服 BIOS 的缺点,大多数的 UEFI 固件会提供兼容 BIOS 的启动方式。


MBR vs GPT
描述:MBR 与 GPT 用于存储硬盘的分区信息,是不同的硬盘分区表类型

  • MBR
    MBR 表示 MBR 分区表,MBR 分区表在硬盘开头处存放了特殊的启动分区,称为 MBR(Master Boot Record,主启动记录),包含 Boot Loader 和硬盘逻辑分区。MBR 支持最大约2T的硬盘,最多能划分4个主分区,更多分区需要使用拓展分区实现。
    (MBR在行文中可以表示 MBR 分区表和主启动记录两个意思,注意甄别。)
  • GPT
    GPT 表示 GUID(Globally Unique Identifier) 分区表,是 UEFI 规范的一部分,用于替换 MBR 的分区方式。GPT 没有分区数和分区大小限制。


简单描述磁盘发展史
Wikipedia 上有许多关于磁盘的资料,在磁盘分区上,我猜测的发展脉络是这样的:

  • 1.磁盘跟内存一样直接物理寻址去访问数据;
  • 2.为了方便,建立数据 Index,有了 File System;
  • 3.需要多个分区,搞出了 Partition Tabel。

注意事项:

  • (1) 磁盘分区表类型与磁盘文件系统类型不是同一个事物,前者是比如指代 MBR/GPT 分区类型。后者指代NTFS;
  • (2) BIOS/UEFI 跟 MBR/GPT 是不同层级的,BIOS/UEFI 是 Fireware,MBR/GPT 是分区表。
  • (3) Windows 通常会要求 UEFI 的启动方式使用 GPT,不然不给继续安装。推荐的使用方式: BIOS + MBR 或 UEFI + GPT:

0x01 设置传统与UEFI模式

描述:我们需要进入BIOS或者主板启动进行设置:

1
2
3
4
5
6
7
8
9
10
11
#老机器引导配置 (不启动UEFI)
Fast Boot : Enabled
Launch CSM : Disabled

#新机器(启用UEFI)
UEFI/Legacy Boot: UEFI BIOS
SECURE BOOT :Disabled #关闭才能从U盘启动,Windows 8 中增加了一个新的安全功能,Secure Boot内置于UEFI BIOS中,用来对抗感染MBR、BIOS的恶意软件
#Windows 8 缺省将使用Secure Boot,在启动过程中,任何要加载的模块必须签名(强制的),UEFI固件会进行验证, 没有签名或者无法验证的,将不会加载。

#其他方式
比如在Windows8以上可能需要通过Windows启动选项菜单访问UEFI设置屏幕,而不是在计算机启动时按下某个键;

WeiyiGeek.UEFI

WeiyiGeek.UEFI

Auto(自动)/Both:自动按照启动设备列表中的顺序启动优先采用UEFI方式
UEFI only(仅UEFI):只选择具备UEFI启动条件的设备启动全新的启动模式
Legacy only(仅Legacy):只选择具备Legacy启动条件的设备启动最传统的模式
CSM选项:兼容模块专为兼容只能在legacy模式下工作的设备以及不支持或不能完全支持UEFI的操作系统而设置(老显卡、老设备)

传统BIOS模式启动引导修复:

  • NTbootAutoFix引导修复工具

流行UEFI模式启动引导修复:(需要进入UEFI模式的PE)

  • UEFix(UEFI 引导修复)
  • BOOTICE 编辑器(注意需先挂载:ESP分区)
  • Linux 系统 UEFI 编辑工具 efibootmgr

传统BIOS引导模式改为UEFI引导模式并修复流程

0.对已有磁盘进行调整分区大小,将磁盘的两端各留1GB的空闲空间;

1.转换该磁盘的分区表类型为GUID格式并且保存

2.选择前面的1GB的空闲分区,右键再选择”建立ESP(300MB)/MSR分区”,并且格式化分区;

- ESP分区(UEFI System Partition):用于才有UEFI BIOS的电脑系统来启动操作系统;分区内存存放 `引导管理程序,驱动程序,系统维护工具等等`
- MSR分区(微软保留分区)是GPT磁盘上用于保留空间以备用的分区;例如在将磁盘转换成为冬天磁盘时候会采用这些空间;

3.给ESP分区分配盘符,然后打开UEFI的 引导修复文件;选择刚刚分配的ESP分区的盘符,然后在选择”开始修复”,选择Window目录

注意事项:

  • 尽量不要选择自动模式,因为在确定自己的启动方式后,安装系统所用的U盘,甚至硬盘引导都要配套
  • VMware设置客户端操作系统 版本可以影响引导启动: 虚拟机设置 -> 常规 - > 选择客户端操作系统
  • VMware 修改固件类型(支持UEFI):虚拟机设置 -> 选项 -> 高级 -> 固件类型进行选择


0x02 设置U盘引导

Step1.下载PE工具箱并生成引导ISO文件:

WeiyiGeek.生成PE引导箱

WeiyiGeek.生成PE引导箱

Step2.采用软媒魔方得USB引导制作工具:

WeiyiGeek.多PE系统引导

WeiyiGeek.多PE系统引导


0X03 引导修复

UEFI引导基本原理:

  • efi文件结构

    1
    2
    3
    #注意需要先挂载ESP分区
    efi\boot\bootx64.efi
    efi\microsoft\boot\bcd
  • efi启动过程 :UEFI-BIOS启动时候自动查找硬盘下ESP分区的bootx64.efi,然后又bootx64.efi引导下的BCD文件,由BCD引导指定系统文件c:\windows\system32\winload.efi


(1)采用BCDboot自动修复:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#(1)指定esp分区修复环境为64位8PE,bios/uefi启动进入下都可以
Step1.启动64位8PE,并用esp分区挂载器或diskgenuis挂载esp分区
Step2.打开cmd命令行,输入以下命令并运行
$bcdboot c:\windows /s o: /f uefi /l zh-cn
# 其中:c:\windows 硬盘系统目录,根据实际情况修改
# /s o: 指定esp分区所在磁盘,根据实际情况修改
# /f uefi 指定启动方式为uefi
# /l zh-cn 指定uefi启动界面语言为简体中文
# 注:64位7PE不带/s参数,故7PE不支持bios启动下修复


#(2)不指定esp分区修复
#\环境为64位7或8PE,只有uefi启动进入PE才可以不用挂载esp分区,直接在cmd命令行下执行:
bcdboot c:\windows /l zh-cn
# 其中 c:\windows 硬盘系统目录,根据实际情况修改
# /l zh-cn 指定uefi启动界面语言为简体中文
# 注:在8PE中我们也可以在uefi启动进入pe后,挂载esp分区用方法


(2)采用BOOTICE进行UEFI修复
Step1.打开diskgenius软件有没有这两个分区:ESP和MSR如果没有需要建立并进行挂载;
Step2.打开BOOTICE引导管理,1.选择:BCD编辑2.点:其它BCD文件3.点引号内“…”打开
Step3.找到ESP分区盘符efi>microsoft>boot>BCD打开BCD
Step4.找到后找智能编辑,如果没有启动项就需要添加新建引导保存当前系统设置,如果有则跳过

WeiyiGeek.智能编辑

WeiyiGeek.智能编辑


Step5.设置启动设备、属性等,启动分区就是系统安装的分区;
Step6.UEFI再点修改启动顺序:
WeiyiGeek.UEFI

WeiyiGeek.UEFI

  • 1.点:Windows boot manager(这个就是Windows启动项)。
  • 2.启动分区:选择ESP盘符。
  • 3.启动文件:\EFI\Microsoft\Boot\bootmgfw.efi,如果不是,把这串路径复制到红框3内。
  • 4.点:保存当前启动设置,最好把“下一次启动该项”打勾。
    WeiyiGeek.bootManager

    WeiyiGeek.bootManager

补充:uefi添加修复启动项设置完毕,如果是双系统需要添加启动项(安装上述即可),在修复UEFI的时候必须进入UEFI模式;

1
2
3
控制启动管理器: bcdedit  
主启动代码更新: bootsect
启动文件修复:bcdboot

其它问题:

  • 1.手工运行ghost并不会修复esp分区
  • 2.用老大们的一键还原,现在慢慢加上了还原后esp引导修复功能,如实测深山的一键还原就自带esp分区uefi引导修复
  • 3.用微软原版系统光盘安装或PE下安装,当然都会自动修复esp引导。


0x0n 补充参考

推荐工具:

注意WePE安装至开机启动项详细规格:http://www.wepe.com.cn/learnmore.html

  • Legacy启动时:可安装到32和64位系统开机启动项
  • EFI启动时:只可安装到64位系统开机启动项,支持PE密码最长16位