浅析现代计算机启动流程

文章目录

    • 前言
    • 启动流程概述
    • 磁盘分区格式
      • MBR磁盘
      • GPT磁盘
        • 隐藏分区
    • 传统BIOS引导
      • 传统BIOS启动流程
    • UEFI引导
      • UEFI引导程序
      • UEFI启动流程
    • 引导加载程序
    • 启动操作系统
    • 相关参考

前言

现代计算机的启动是一个漫长的流程,这个流程中会涉及到各种硬件的配置与交互,包括硬件状态检测、设备配置等,并最终引导到用户可操作的操作系统界面。

启动流程概述

现代计算机的启动流程总体上可以分成三个阶段:BIOS/UEFI启动阶段、引导加载程序以及启动操作系统。如下:
在这里插入图片描述

其中:

  • BIOS/UEFI阶段:完成上电自检、基本硬件初始化,选择引导介质,并将控制权移交到引导介质上的加载程序;
  • 引导加载程序:负责完成操作系统的选取,并引导对应的操作系统;
  • 启动操作系统:操作操作正式开始接管计算机,并对硬件继续进行初始化、加载驱动以及拉起系统服务,并最终进入人机交互界面。

对于普通计算机而言,主要还是从硬盘引导操作系统。
在这里插入图片描述

磁盘分区格式

BIOS和UEFI引导方式与磁盘采用的分区格式有对应的关系,因此在说明计算机启动流程之前,有必要对磁盘分区格式进行一定的了解。通常,我们在使用磁盘时都会对磁盘进行分区,并在分区上创建文件系统之后进行使用,这里涉及到了磁盘是如何管理这些分区信息的。目前有两个标准的分区技术可以被使用:MBR分区格式和GPT分区格式。

MBR磁盘

早期计算机基本都是采用MBR磁盘格式,并配合传统BIOS引导方式进行启动。MBR,全称Master Boot Record,即主引导记录,是一种将磁盘引导程序和磁盘分区信息保存在磁盘第一个扇区(扇区大小512B)的磁盘分区格式,其结构示意如下:
在这里插入图片描述
主引导扇区存储的内容包括:

  • 引导程序:基于传统BIOS方式启动的计算机,在上电时会从磁盘第一个扇区加载引导程序到内存指定位置,并进行启动。主引导记录可支持存储最长引导程序大小为448字节;
  • DPT分区表:主引导记录使用64字节大小的空间,最多可记录4个分区的信息,这也是在windows系统下最多只能创建4个主分区的原因,但可以将其中主分区信息设置成扩展分区,扩展分区又可以继续划分成多个逻辑分区;
  • 结束符:主引导扇区结束标识。

由于MBR只使用磁盘的第一个扇区来保存分区表信息,这导致了一系列限制,例如划分的主分区数量不能超过4,最大只能识别2TB左右的分区空间。此外,若第一个扇区遭到损坏,所有的分区信息都会丢失。

GPT磁盘

为了破除只有512个字节的MBR分区表的许多限制,技术人员对硬盘分区表的标准进行了升级,提出了新的 GUID Partition Table(全局唯一标识磁盘分区表),简称 GPT 分区表。GPT磁盘的结构示意如下:
在这里插入图片描述

对GPT磁盘的关键结构进行说明如下:

  • 保护MBR:GPT磁盘为了保持与MBR磁盘的兼容性,将磁盘的第一个扇区定义为保护MBR。GPT分区技术本身不会使用到这个扇区。同时为了防止一些MBR磁盘工具破坏GPT磁盘的分区信息;
  • GPT头:
  • GPT分区表:从第2扇区到第33扇区,用于记录分区表信息;
  • 分区区域:磁盘数据分区;
  • GPT备份区域:包含GPT分区表备份和GPT头备份,若GPT头部和分区表遭到损坏,可以通过备份区域进行恢复。
隐藏分区

GPT磁盘还包含了两个隐藏分区:

  • ESP分区:EFI系统分区,主要用于在EFI平台上引导操作系统,可以存放EFI引导程序、驱动程序以及系统维护工具等;
  • MSR分区:微软保留分区,与Windows操作系统相关,其它操作系统可以不关心。

传统BIOS引导

BIOS,Basic Input System,即基本输入输出系统,是一组固化在计算机主板上一个只读存储器芯片的程序,保存着计算机最初始的系统配置信息、上电自检程序和系统初始化程序。
在这里插入图片描述

传统BIOS启动流程

BIOS的工作流程和功能可以分为以下几个主要方面:

  1. 上电自检:系统上电后,会首先加载BIOS程序执行。BIOS程序启动后会进行上电自检;
  2. 准备硬件:BIOS设置并准备好电脑的主要硬件,比如CPU和硬盘,为启动操作系统做好准备。
  3. 引导过程:BIOS确定从哪个设备(硬盘、U盘等)启动电脑,并开始加载操作系统。
  4. 系统设置:BIOS提供一个界面,让用户可以设置或更改电脑的硬件配置。

UEFI引导

UEFI,统一可扩展固件接口,用于替代传统BIOS的引导方式。
在这里插入图片描述

UEFI引导程序

UEFI引导方式主要与GPT磁盘进行配合完成计算机的启动。在前面提到过,GPT磁盘中包含了ESP隐藏分区,用于存放EFI引导程序。EFI引导程序会在计算机启动后,被UEFI固件加载继续执行引导流程。对于不同处理器平台,UEFI规范定义的EFI引导程序名称存在差异。

硬件平台文件名PE可执行机器类型
32-bitBOOTIA32.EFI0x14c
x64BOOTx64.EFI0x8664
AArch32BOOTARM.EFI0x01c2
Aarch64BOOTAA64.EFI0xAA64

在此以Armv8平台为例,可以查看ESP分区(通常会被挂载到/boot/efi目录)下的EFI引导程序信息:

[root@localhost BOOT]# file BOOTAA64.EFI
BOOTAA64.EFI: MS-DOS executable PE32+ executable (EFI application) Aarch64 (stripped to external PDB), for MS Windows

UEFI启动流程

UEFI的启动流程相对简化了很多,在系统上电后,UEFI固件被加载执行,在UEFI完成基本的系统配置后,会从ESP分区查找指定的EFI引导程序并执行,随后所有的流程便由EFI引导程序接管。

引导加载程序

启动操作系统

相关参考

  • 《Gentoo Handbook》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456150.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel 导出 The maximum length of cell contents (text) is 32767 characters

导出excel报错。错误日志提示::The maximum length of cell contents (text) is 32767 characters 排查后,发现poi有单元格最大长度校验,超过32767会报错。 解决方案: 通过java反射机制,设置单元格最大校验限制为Int…

XxlJob深度性能优化实践

一、背景 天画项目的数据工厂目前在与xxl-job对接自动化数据生成任务,另外我司也在使用该组件做业务,所以想深入了解下XxlJob。在跟进了社区的github等仓库issue发现开发迭代停滞了一段时间,思来想去准备开个下游分支做一些性能优化和特性开发等,于是fork了下源码,将其作…

亚马逊社媒营销指南:提升品牌曝光与销售额的5大关键策略

随着互联网的快速发展,社交媒体营销已成为品牌推广和销售增长的重要手段。对于亚马逊卖家来说,利用社交媒体平台进行营销不仅可以提高品牌知名度,还能有效提升销售额。本文Nox聚星将和大家探讨亚马逊卖家如何巧妙运用社交媒体策略&#xff0c…

行业应用科普 | 患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求,已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行,例如医生办公室、健康中心,还有越来越普遍的住家。尤其是需要长期看护的患者,所需的科技…

第3节、电机定速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍用定时器定时的方式,精准控制脉冲时间,从而控制步进电机速度。 一、计算过程 电机每一步的角速度等于走这一步所花费的时间,走一步角度等于步距角&#xff…

python介绍,安装Cpython解释器,IDE工具pycharm的使用

python介绍 官方的Python解释器本质是基于C语言开发的一个软件,该软件的功能就是读取以py.结尾的文件内容,然后按照Guido定义好的语法和规则去翻译并执行相应的代码。这种C实现的解释器被称为Cpython。 python解释器的种类:Jython IPyth…

BUGKU-WEB Simple_SSTI_2

03 Simple_SSTI_2 题目描述 解题思路 进入场景后,显示: You need pass in a parameter named flag翻译即为:你需要传入一个名为flag的参数 查看源码,没有发现什么特别的: 结合第一题Simple_SSTI_1,对其…

MQ,RabbitMQ,SpringAMQP的原理与实操

MQ 同步通信 异步通信 事件驱动优势: 服务解耦 性能提升,吞吐量提高 服务没有强依赖,不担心级联失败问题 流量消峰 ​ 小结: 大多情况对时效性要求较高,所有大多数时间用同步。而如果不需要对方的结果,且吞吐…

【知识整理】一文理解系统服务高可用

一、如何理解高可用 1、什么是高可用 高可用性(英语: High Availability,缩写为 HA),指系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 2、决定可用性的两…

选择冒泡排序

有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果要求要以数组A作为函数的入口&#xff0c;请用冒泡和选择各写一遍 #include <stdio.h> void maopao() {int arr[5] {10,11,15,13,20};int i0,j0,temp;int len sizeof(arr)/sizeof(arr[0]);for(…

大白话介绍循环神经网络

循环神经网络实质为递归式的网络&#xff0c;它在处理时序任务表现出优良的效果&#xff0c;毕竟递归本来就是一步套一步的向下进行&#xff0c;而自然语言处理任务中涉及的文本天然满足这种时序性&#xff0c;比如我们写字就是从左到右一步步来的鸭&#xff0c;刚接触深度学习…

Windows显示空的可移动磁盘的解决方案

123  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式…