本文属于学习笔记,如有侵权,请联系博主删除,如有错误之处也请多多指正,谢谢!


一、基本概念解释

说到计算机启动,绕不开的两个东西叫做BIOS和UEFI,BIOS 和 UEFI 都是计算机的固件类型。BIOS 固件(主要)用于 IBM PC 兼容计算机。UEFI 的通用性更强,可用在非“IBM PC 兼容”系列的计算机上。

1、BIOS

BIOS 全名为 Basic Input Output System,即基本输入/输出系统,在上一篇对存储器的认识中提到了,它是一个固化到电脑主板上的一种 ROM 或者NOR FLASH芯片上的程序。老式主板上有一个黑色的小芯片就是存储BIOS的芯片,也叫做BIOS芯片,其中的BIOS程序也叫做系统BIOS,对于其他硬件设备(如显卡)也有各自的BIOS。系统BIOS这段程序包含了四个部分:

(1)硬件I/O和中断服务程序

系统BIOS中包含很多中断服务程序,例如显示服务、键盘服务等,给上层计算机软件提供了和底层硬件连接的接口,操作系统对外围设备的管理即建立在系统BIOS的中断基础上。程序员也可以直接调用BIOS中断服务程序。在硬件检测过程中,对硬件设备的中断、I/O端口等资源的分配也是中断服务程序完成的。

(2)POST硬件检测程序

系统BIOS代码第一件要做的事情就是POST(Power-OnSelfTest,加电自检),检测系统关键设备能否正常工作(如显卡、内存等),若检测到致命错误,BIOS会控制喇叭发出警告(没有屏幕显示信息,因为显卡在POST阶段不会初始化)。在POST完成后,系统BIOS会查找显卡和其他设备的BIOS及其相应的初始化代码进行硬件初始化,然后系统BIOS进行CPU、内存的检测和信息显示,检测系统中安装的一些标准硬件设备和即插即用设备并进行资源分配。

(3)CMOS设置程序

CMOS设置也就是我们常说的BIOS设置,需要按键进入(不同电脑进入BIOS设置界面的按键不一致),设置结束后,若进行保存操作,则更新后的硬件信息会存入CMOS中并重新进行自检,否则继续完成本次自检后续的过程。我理解的CMOS设置程序就相当于是通过中断触发(用户通过按键),在不进行BIOS设置时,CMOS中的设置是默认的,在硬件初始化完成后的ESCD更新阶段就会直接读取CMOS中存储的硬件配置数据。

COMS是个RAM芯片,里面存的是电脑硬件配置信息和电脑其他有关的东西,电脑启动了就由电脑电源为其供电,电脑关闭则由一个后备电池供电保证数据不丢失。这个芯片一般都是集成到主板的南桥芯片组里,看不见。CMOS和BIOS之间应该描述为:用存储在BIOS芯片中的BIOS程序中的CMOS设置程序段对CMOS进行设置。所以正确的说法应该是“CMOS设置”。BIOS程序本身不需要任何设置,但为了跟上对硬件的支持,需要对BIOS芯片进行更新(老式的BIOS芯片是ROS更新不了,目前而言,NOR FLASH完全替代了ROM成为了可以刷新的BIOS芯片),这区别于CMOS设置。

(4)系统启动引导程序

在ESCD检测或更新结束后,BISO会读取你在BIOS设置中设置的启动顺序(硬盘、U盘等设备),排在第一位的存储设备得到控制权后,计算机会读取该设备的第一个扇区,大小是512字节,倘若该扇区最后两个字节为0x55和0xAA则表明这个设备可以用于启动;否则将控制权交给你在设置的“启动顺序”中的下一个设备。启动什么系统(Windows或Linux)就取决于这512字节了,几乎就跟BIOS没啥关系了。

2、MBR

启动存储器以硬盘为例:这512字节就是硬盘的第一个扇区(LBA0)也叫做主引导记录MBR(Master boot record )或引导扇区,==“启动装载程序”==便存在这个扇区里面。将主引导记录的内容加载到内存中并将控制权交给“启动装载程序”。(偷这位老哥一张图):

  • “启动装载程序”占446B(图中“MBR代码”),MBR分区表占64B,最后的Magic Number占2B(即以0x55 0xAA结尾的标识符)。
  • 因为每个分区只有16B大小的分区表记录,所以寻址最大只能到2.2TB,并且由于分区表总共只占64B,所以MBR分区表最多4个分区,即硬盘最多4个主分区。分区表中16个字节中的第一个字节表示该分区是否为激活分区,若该字节为0x80则代表该分区为”活动分区“,要将控制权交给这个分区,因此四个主分区里面只能有一个是激活的。后面的15个字节用于保存对应分区的大小和位置信息。
  • PBR:即Partition Boot Record,每个分区都存在各自的引导记录,位置在每个磁盘分区的开始部分,占用扇区不定。这个扇区一般保存着操作系统引导程序(例如Windows的bootmgr或Linux的grub)的所在位置。上图的红色部分。PBR会在“启动装载程序”控制下被加载到内存。
  • File System:操作系统对磁盘的所有操作都需要经过文件系统,删除文件指的是在文件系统里删除文件的索引条目,创建文件就是在在文件系统里添加索引条目并将具体数据写入磁盘。文件系统位置一般在PBR之后。上图黄色部分。

MBR通过“启动装载程序”加载“PBR”,“PBR”在运行后加载操作系统的引导程序到内存运行,当操作系统引导程序运行后,操作系统内核就会被加载运行。这就是标准化的操作系统启动的过程,完成了两个核心任务:一是让计算机知道系统存储在那个存储设备上(由BIOS完成);另一个就是让计算机知道那个分区是“活动分区”,好去引导操作系统内核(这一步由MBR完成)。在上面描述的传统的BIOS+MBR启动方式中,不难看出计算机会读唯一的活动分区的第一个扇区,这种也叫做"卷引导记录"启动方式。

但是问题来了,硬盘不同的分区可以安装不同的操作系统,难道还是采用“活动分区”来引导操作系统的方法吗,这好像存在硬盘到底哪个区是“活动分区”的问题?

所以设置“活动分区”是单一启动方式,为什么单一,因为多个操作系统不好设置“活动分区”,所以出现了启动管理器(BOOT Loader),让计算器读取MBR的前446字节的机器码之后,不把控制权交个某一个分区,而是运行“启动管理器”(boot loader),由用户自行选择启动哪一个操作系统,这样就可以放弃“活动分区”的概念了,广义上认为MBR的“启动装载程序”这段空间不足以容纳某些启动装载程,这些启动装载程序会将自身的一小部分安装在 MBR 中,而将其他部分安装到磁盘上的可用空间中,所以常常把两部分合起来称为boot loader,MBR中只占一部分。NTLOADER、lilo、grub都属于boot loader,在x86架构中,用grub引导不同操作系统(windows、linux)是主流。

3、UEFI

Intel宣布在2020之前实现在芯片上将传统BIOS全部替换为UEFI

既然都要替代了,那上面讲传统BIOS那些不都是废话吗,我觉得也是。。。哈哈哈,我觉得了解一下还是好的。

UEFI(Unified Extensible Firmware Interface)即统一的可扩展固件接口,EFI是UEFI的前身和基础。UEFI可以说是传统BIOS的继承者,目的是提高互操作性以及解决BIOS的局限性,两者对比如下:

  • BIOS的核心理念是16位汇编语言代码,1M内存寻址,调用中断执行硬件初始化等任务。UEFI相当于是小型OS,由高级语言实现,它的任务也是完成硬件初始化,但是它是直接利用加载EFI驱动的方式,识别系统硬件并完成硬件初始化,彻底摒弃读各种中断执行。
  • BIOS只能在16位模式下运行,而UEFI可以在32位或64位模式下运行,意味着UEFI有更大的寻址范围,所以可以在任意内存地址存放任何信息,一般UEFI系统仅能识别FAT32,这意味着只要将引导程序放到FAT32分区里,UEFI系统就能通过分区表的指引找到这个保存着引导程序的FAT32分区,引导过程更快。区别于BIOS只能识别固定位置的磁盘引导块。
  • BIOS上的的CMOS设置程序在UEFI上是作为一个个UEFI程序来执行的,硬件设置是硬件设置程序、而启动管理则是另一个程序,保存CMOS又是另一个程序。
  • UEFI拥有传统BIOS所不具备的诸多功能,比如图形化界面、多种多样的操作方式、允许植入硬件驱动等。
  • BIOS的分区表类型为MBR,只能管理最大2.2T的硬盘,分区数上限最大为4个;而UEFI采用GPT分区表的方式后,硬盘容量和分区数目几乎没有上限。
  • UEFI向下兼容,许多 UEFI 固件可以像 BIOS 固件一样启动系统,也就是支持类型BIOS模式的启动,但是BIOS不能支持UEFI模式的启动。

4、GPT

前面描述了MBR这种分区和引导,主要是适用于BIOS的启动方式,而GPT是UEFI规范的一部分,主要用于解决MBR的局限性。再偷老哥一张图:

GPT由GPT头和GPT主体,GPT备份组成。起始于磁盘LBA1的位置。

  • Protect MBR还是处于第一个扇区(绿色),当不支持GTP的分区模式时,提供BIOS+MBR的操作兼容性,当支持GPT分区表的操作系统检测到这个MBR中的标识符后就会自动忽略并跳到LBA1读取GPT分区表。
  • GPT表头(淡蓝色)定义了分区表中分区数及每个分区大小、硬盘的容量信息、分区表头位置(总是LBA1)和大小,也包含了备份分区表头和分区表的位置和大小信息、还储存着它本身和分区表的CRC32校验。
  • 分区表(蓝色)包含每个分区的类型GUID、名称、起始终止地址以及分区属性等。
  • 备份分区表和备份GPT头(红色)在CRC32校验出错时用于恢复整个分区表。

二、计算器启动过程

通过上面的分析,由于UEFI向下兼容,所以UEFI可以支持MBR和GPT两种分区方式,而BIOS启动只支持MBR分区方式。简单例子:装windows或装LInux系统过程中,使用刻录软件进行系统盘制作时可以选择MBR或者GPT方式,然后在COMS设置中选择启动存储器时,对于MBR方式可以选择BOOT或者UEFI方式(在CMOS中设置CSM兼容enable),但是GPT只能选择BEFI方式启动,若选择BOOT会出现问题。(亲测)

  • 传统BIOS引导流程

BIOS+MBR:

  • UEFI引导流程

整个UEFI的启动详细流程描述如下:

  • 开机后,固化在ROM里的UEFI BIOS就会被加载到内存运行。
  • UEFI BIOS将引导EFI系统进行运行。
  • 在EFI系统启动后,GUID分区表就会被识别,之后EFI系统就会通过.efi文件启动Boot Loader程序加载操作系统内核。

UEFI+GPT:

UEFI+MBR:

参考

https://kknews.cc/code/2vzgyjy.html
https://blog.csdn.net/yanghaitao_1990/article/details/51636777
https://www.ithome.com/html/digi/317426.htm
https://www.ithome.com/html/win10/318460.htm
https://www.yisu.com/zixun/82989.html
https://www.tony-yin.site/2019/01/10/Talk_BIOS_UEFI_MBR_GPT_GRUB/
https://www.jianshu.com/p/75ded1a5a0bf
https://www.jianshu.com/p/75ded1a5a0bf
https://blog.csdn.net/JackLiu16/article/details/79881207

通过计算机的启动过程了解BIOS和UEFI相关推荐

  1. 计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01

    有的朋友问我,为什么读书笔记不从第一章开始写?这个问题啊-当初觉得前面的内容不是很重要,就没有写. 我真是高估自己的记忆力了,随着时间的推移,发现前面好多内容都生疏了,有的朋友问我问题我都答不上来.所 ...

  2. 【OS学习笔记】三 计算机的启动过程

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 上一篇文章迈进了汇编的大门,点击链接查看上一篇文章:汇编语言和汇编软 ...

  3. 用英语简述计算机的启动过程,计算机的启动过程(详细)

    对于使用电脑用户来说,打开电源启动电脑几乎是每天必做的事情,但计算机在显示这些启动画面的时候都在做什么呢?大多数用户都未必清楚. 下面就向大家介绍一下从打开电源到出现Windows桌面的蓝天白云,计算 ...

  4. 计算机开机启动过程详解

    计算机的开机启动过程 (1) 启动过程总览 (二)详细说明 1.CPU 供电 按下主机的电源键后,计算机开始启动,为主板部分芯片和CPU进行供电.主板上电后开始初始化其固件.固件是一些固化在芯片组上的 ...

  5. 有关计算机启动过程的书籍,操作系统—计算机的启动过程

    一 预备 在8086系统CPU中,有两个寄存器CS和IP用于保存CPU接下来需要执行的指令地址,具体计算方法为 CS<<4+IP 例如CS=0x7c0,而IP=0x0001,则CS< ...

  6. 计算机硬件 系统安装维护教程 02安装基础篇-01:启动热键、BIOS与UEFI

    文章目录 启动热键 BIOS与UEFI 启动热键 实际上来讲他可能不叫这名,但是大家都这么叫,而且我也确实不知道还有什么更合适的,如果有,我会在以后更新此文档. 首先,我们要先知道什么是启动热键,他是 ...

  7. 制作双启动(传统BIOS与UEFI均可引导的U盘)

    现在是2022年1月9日,虽然当今电脑主板基本都是默认UEFI启动的,但是也保不齐有用户设置为BIOS启动,所以为了能够保证兼容性,制作双启动的U盘工具是很有必要的. 使用微软官方制作的winpeU盘 ...

  8. 内核基础 - 实模式与保护模式下的寄存器计算机的启动过程(by quqi99)

    作者:张华  发表于:2016-03-01 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) CP ...

  9. 联想计算机usb启动怎么办,联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料...

    联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 联想电脑bios ...

最新文章

  1. 网站的高性能架构---存储性能优化
  2. python中定义类
  3. asp.net生成jason给js
  4. lua安全之关于lua扩展第三方库
  5. 如何查看一个组件的 classid是多少_如何查看iphone电池使用次数?6s电池容量多少需要更换?...
  6. UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)
  7. 华为云社区·CSDN【寻找黑马程序员】有奖征文活动,邀你挥洒才情
  8. mysql入门很简单(一)
  9. 关于echart 图表自适应问题的解决办法
  10. c语言的关键字怎么编辑,C语言的关键字
  11. 维修记录java_维修保养记录
  12. SQL常用脚本大全,建议收藏!
  13. 第三次郑州.NET俱乐部活动总结
  14. 必备的Word软件应用技巧
  15. c3p0详细配置介绍
  16. 如何将SW工程图转换成CAD格式?
  17. React之表格操作
  18. 糖尿病治疗的中西差别
  19. spark常见错误解决方案
  20. 16 - Workbench分析类型与通用求解设置

热门文章

  1. python sort给字母排序_python sort、sorted高级排序技巧
  2. Java SE 第四十八,九,五十讲 Map深入详解及遍历Map的两种实现手段 Map.Entry详解与作业要求,作业讲解...
  3. CUDA与OpenCL架构
  4. Android视图绘制流程完全解析,带你一步步深入了解
  5. YMIR-从源代码部署到页面实操
  6. Struts2+ibatis+dwz 框架实现uploadify上传文件
  7. 将java文件打成jar包
  8. centos6.5kvm虚拟化技术
  9. linux系统 说法不正确的是,下面关于Linux操作系统的说法中,不正确的是( )。
  10. 批量重命名照片为序号递增的形式