固件:BIOS和UEFI

固件:开机时运行,进行硬件初始化、引导操作系统、为操作系统和程序提供运行环境的程序

主要分为传统的BIOS和新式UEFI两类。

1. BIOS

BIOS :(Basic Input Output System),基本输入输出系统。它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。简单来说就是电脑开机后最先启动的一种程序,为操作系统的启动做准备,比如初始化cpu、内存、主板等各个部分,然后将操作系统加载到内存启动操作系统。

 1.1 BIOS引导操作系统流程

BIOS首先会进行硬件自检,自检完成后BIOS根据启动顺序尝试第一个设备的启动引导,若失败则尝试第二设备启动引导。

在启动引导过程中,首先加载MBR开头的启动代码。其作用是检索MBR分区表,寻找是否有活动分区存在,若存在活动分区则尝试加载活动分区的VBR

VBR:(Volume boot record,卷引导记录):它可能位于未分区的存储器开头(如光盘)或某个分区的开头(即PBR)
PBR(Partition boot record,分区引导记录):作用为尝试加载存储器上的boot loader

Boot loader: 引导操作系统时加载的第一个由操作系统生产商提供,存储在分区中,用户在操作系统中可见的程序。
NT5(XP系统)的boot loader是NTLDR,一个无扩展名的文件,位于系统分区根目录
NT6(win7系统)的boot loader是Windows boot manager,一个无扩展名的文件,文件名为BootMgr,位于系统分区根目录

Windows boot manager被加载后会进行如下操作:

  • 如果之前Windows进入了待机状态,则会调用winresume.exe将系统恢复,该程序位于系统分区:\windows\system32
  • 否则会读取BCD文件。BCD文件描述了所有已安装的系统和其启动参数。其位于活动主分区:\boot\ 。Windows boot manager会列出一个列表,然后根据用户的选择,加载并运行对应系统的winload.exe(位于系统分区:\windows\system32)winload.exe加载系统内核,提供启动参数,移交控制权,至此引导流程结束。

2. UEFI

2.1 基本知识

UEFI: (Unified Extensible Firmware Interface)统一可扩展固件接口,是操作系统与固件交互的新模式。

是一个跨平台的固件标准。UEFI要求操作bootloader的位宽和UEFI固件的位宽一致,而UEFI固件的位宽取决于CPU的位宽,所以64位PC的UEFI只能引导64位的Windows。目前PC机CPU一般都是64位。

UEFI固件一般配合GPT磁盘使用。

UEFI applications (.efi可执行文件)
UEFI可以运行独立的UEFI应用。独立是指UEFI应用可以独立于操作系统运行,类似于Windows下的.exe可执行文件。一个UEFI应用可以被UEFI的boot manager或者另一个UEFI应用启动。一类常见的UEFI应用就是操作系统的boot loader,如Windows boot manager等。UEFI引导流程即一系列efi可执行文件的运行结果。

UEFI引导系统时访问的一部分文件保存在ESP分区上。

NVRAM
UEFI固件中的一块区域。其保存了决定UEFI启动行为的一些信息。NVRAM可以被操作系统访问和修改,因此可以在操作系统中更改UEFI的启动行为。UEFI固件可以根据NVRAM中保存的信息,列举所有可用的启动项,并按顺序尝试各启动项。

NVRAM中的启动选项分为两类:

  1. 第一类对应于操作系统生厂商提供的.efi文件。这类启动选项可以指定efi文件的路径和其在启动列表界面显示的名称。例如Windows的启动管理器Windows boot manager,其对应的efi文件位于ESP分区:\efi\microsoft\boot\bootmgfw.efi,在启动列表界面显示的名称是“Windows Boot Manager”
  2. 第二类对应于各个存储器。每个外存(硬盘、光驱、USB存储器等)都会有一个对应的选项。对硬盘来说这类选项代表其ESP分区中的默认启动文件,位于ESP分区:\efi\boot\boot.efi 。其中指机器类型的短名,32位PC是ia32,完整文件名为bootia32.efi,64位PC是x64,完整文件名是bootx64.efi 。

UEFI Boot manager
Boot manager在被启动后,首先检索ESP中所有的.efi文件,更新启动选项列表。之后, Boot manage在用户没有干预的情况下会自动按照启动选项列表中的顺序尝试加载.efi程序。除非用户在开机时按下指定的快捷键, boot manager会提供一个列表以供用户选择加载哪一个.efi程序。

对于NT6操作系统来说,应当加载的启动项是Windows Boot Manager,位于ESP分区:\efi\microsoft\boot\bootmgfw.efi
Windows Boot Manager被加载后,会进行如下操作:

  • 如果之前Windows进入了待机状态,则会调用winresume.efi将系统恢复,该程序位于系统分区:\windows\system32
  • 否则会读取BCD文件,列出一个列表,然后根据用户的选择,加载并运行对应系统的winload.efi。其位于系统分区:windows\system32,Winload.efi加载系统内核,提供启动参数,移交控制权,至此引导流程结束。

2.2 UEFI兼容性设置

Secure Boot
Secure boot是UEF12.3.1 C标准中规定的一种安全措施。开启Secure Boot后,被UEFI boot manager启动的.efi程序会被要求提交一份Key, UEFI会将其与主板内保存的Key比对,如果不相符,则不会向.efi程序移交控制权。这样就可以起到避免加载恶意的.efi文件。
CSM
Compatibility Support Module, UEFl中的兼容模块。其功能有两个部分

  • 第一部分是为不兼容UEFI标准的硬件或者操作系统提供兼容性支持,使其能够使用UEFI-GPT booting
  • 第二部分是模拟BIOS环境。这部分功能开启后, UEFI会完全模拟BlOS固件的工作模式。
  • 在实际的固件设置中, CSM选项一般控制前者的开关,而后者则会由一个表述为Boot Mode的开关控制

Win7使用UEFI-GPT booting的问题
Win7不完整支持UEFI标准,不支持Secure Boot
所以使用UEFI-GPT booting引导Win7时需要打开CSM并关闭Secure boot


3. BOOTICE的使用

Bootice是一种软件,可以修改,恢复和备份本地驱动器和USB驱动器的分区引导记录和主引导记录,支持BIOS和UEFI启动项配置。


参考文献
ETdA的B站视频:分区与固件——Windows安装原理篇

你可能感兴趣的:(系统安装及问题)