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

主要分为传统的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<MACHINE_TYPE_SHORT_NAME>.efi 。其中<MACHINE_TYPE_SHORT_NAME>指机器类型的短名,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安装原理篇

固件:BIOS和UEFI相关推荐

  1. 联想计算机BIOS开启Intel-vx,如何在计算机BIOS或UEFI固件中启用Intel VT-x | MOS86

    现代CPU包括硬件虚拟化功能,可帮助加速在VirtualBox,VMware,Hyper-V和其他应用程序中创建的虚拟机.但是这些功能都是 虚拟机是美好的事情.使用虚拟化应用程序,您可以在当前系统的窗 ...

  2. legacy bios与uefi两种模式安装windows8操作系统的方法

    在Legacy BIOS与UEFI 两种模式安装Windows 8操作系统的方法 作者:佚名 字体:[增加 减小] 来源:互联网 时间:01-10 16:18:23 我要评论 不是所有WIN8都可以安 ...

  3. 联想服务器系统安装bios设置,Windows 8操作系统如何通过Legacy BIOS与UEFI两种模式安装...

    Win8系统相对于Win7系统在开机速度上有相当大的提升,这是因为Win8系统为了提升系统性能和对硬件的优化,加入了诸如开机引导及应用预缓存等技术.而其中的UEFI BIOS引导,则能使平台开机更智能 ...

  4. 如何把平板的虚拟键盘关掉_想知道Win10电脑启动使用的是BIOS还是UEFI,这该如何分辨?...

    BIOS(基本输入输出系统)是存储在主板上芯片上的一小段软件,用于指示系统启动和配置系统硬件的步骤,如硬盘.键盘.鼠标.处理器.内存和其他. 尽管BIOS已经存在很多年了,并且可以帮助操作系统与硬件进 ...

  5. BIOS 和 UEFI

    BIOS 和 UEFI 是电脑的两种启动模式,也就是开机后最先执行的程序.它们都是固件,程序已经预先写入到芯片中.BIOS是传统的启动方式,UEFI是一种新的启动方式,现在的出的电脑基本都是用的UEF ...

  6. uefi下的开机顺序_科普贴:BIOS和UEFI的启动项

    先插一句话,现在很多人用UEFI BIOS这个称呼.这里为了区分:BIOS一律指传统BIOS, UEFI BIOS一律称呼为UEFI. UEFI下的BIOS设置,一律称为UEFI设置. 写这篇的原因 ...

  7. BIOS和UEFI区别,以及Boot Loader【上】

    BIOS和UEFI定义和区别 1.BIOS就是BIOS,UEFI就是UFEI.但因为传统习惯的力量,有时候传统BIOS或者UEFI BIOS都会被简称为BIOS. 2.PC的启动固件的引导流程从IBM ...

  8. BIOS和UEFI的区别,系统安装引导以及MBR和GPT磁盘分区

    前言 安装系统是计算机专业的日经操作,然而就算你是身经百战,也可能会遇到各种各样棘手的问题,对系统的启动流程也是似懂非懂(俺也一样),每次碰到问题都会花去大量的时间去查询解决方案,最后很多时候都免不了 ...

  9. 安装grub到U盘分区,实现多系统引导(BIOS,UEFI)

    目录 1.分区工具及分区类型 1.1 显示分区表和分区信息 1.1.1 fdisk -l 1.1.2 gdisk -l 1.1.3 parted -l 1.2 常见分区类型 1.3 分区样例 1.3. ...

最新文章

  1. ZOJ 2747 Paint the Wall(离散化+暴力)题解
  2. # W3C 中文离线教程 2016 年版
  3. Python Xml类
  4. BOOL 值在 debug 和 release 模式下初始化不一样!!!
  5. java 序列化 uid,Java中的序列化版本uid
  6. 遇到问题的时候,要学会问问题
  7. 苹果手机关于推送的查看LOG的一种解决办法
  8. java多分支流程图_Java 流程控制 之 分支结构(条件判断)
  9. 【小教程】steam长展柜制作
  10. 软件 测试试用期转正申请,软件工程师试用期工作总结及转正申请
  11. 预测模型如何改进自动化决策
  12. 查2个服务器之间网络延迟,科普一下!如何查看网络延迟与服务器LAG以及解决方法!...
  13. Minio Utils
  14. 游戏-虚幻引擎-初识
  15. flask-sqlalchemy一对多 知了传课 flask web全栈开发实战 黄勇
  16. js中常见的Json解析
  17. 计算机wps系统的造字程序在哪里,Windows10系统自带造字程序在哪
  18. keil的sct文件_STM32 分散加载文件 .sct 解析
  19. 用Vue实现腾讯新闻页面
  20. 2022年下半年信息系统项目管理师上午真题及答案解析

热门文章

  1. c++ mupdf 提取pdf文件里面图片
  2. 人工智能 α-β剪枝
  3. 【邱锡鹏-神经网络与深度学习】第一章绪论 知识点汇总
  4. 游戏类型分类-游戏的分类有哪些
  5. 沙特阿美以246亿元收购荣盛石化10%股份,还将在中国东北建设大型炼化一体化项目...
  6. tree--树,最常见的复杂关系结构
  7. 为什么raw图是绿色的?
  8. C++中出现[Error] ‘rand‘ was not declared in this scop报错
  9. (83)FPGA减法器设计(多位减法器)
  10. Ubuntu安装桌面