浅析现代计算机启动流程

news2024/11/17 4:43:29

文章目录

    • 前言
    • 启动流程概述
    • 磁盘分区格式
      • 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.coloradmin.cn/o/1435736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(基于xml配置Aop)学习Spring的第十五天

一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…

机器学习之DeepSequence软件使用学习1

简介 DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入&#xff0c;它可以用来预测可获得的突变&#xff0c;提取监督式学习的定量特征&#xff0c;并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非…

【C/C++】字符串长度 ☞ ‘sizeof‘ ‘strlen‘ ‘.length()‘

在C或C中&#xff0c;strlen和sizeof是两个经常被用到的&#xff0c;但作用完全不同的函数或操作符。 结论写在前面&#xff1a; strlen用于获取字符串的实际长度&#xff08;不包含结尾的空字符&#xff09;&#xff0c;而sizeof用于获取变量或类型的内存占用大小。对于std:…

肯尼斯·里科《C和指针》第10章 结构和联合(1)结构的基础知识

聚合数据类型(aggregate data type)能够同时存储一个以上的单独数据。C提供了两种类型的聚合数据类型&#xff1a;数组和结构。 数组是相同类型的元素的集合&#xff0c;它的每个元素是通过下标引用或指针间接访问来选择的。 结构也是一些值的集合&#xff0c;这些值称为它的成…

EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)

目录 小球视频 图像输出函数 loadimage用于从文件中读取图片 putimage在当前设备上绘制指定图像。 initgraph 函数 图片输出 代码详解&#xff1a; 1. 初始化图形界面 2. 设置背景颜色并清除屏幕 3. 加载并显示图片 4. 等待用户输入并退出程序 图形界面中的小球 1…

AI新工具(20240205) AI 对联/春联 - 输入描述,自动生成春联图片;AI写作引擎;满分简历

AI 对联/春联 - 输入描述&#xff0c;自动生成春联图片 AI 对联/春联 AI 对联/春联是一个由YunYouJun开发的开源项目&#xff0c;用于生成春节对联。 https://github.com/YunYouJun/ai-sfc 满分简历 - HR在7秒内决定一份简历去留&#xff0c;让你的简历脱颖而出 满分简历 …

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品

计算机设计大赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数&#xff1a;2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

优思学院|杰克·韦尔奇谈领导的角色是什么?

杰克韦尔奇作为通用电气公司前任董事长及首席执行官的职业轨迹极为辉煌。在他的领导下&#xff0c;通用电气在20年的时间里市值飙升&#xff0c;从130亿美元跃升至高达4,800亿美元&#xff0c;使其成为世界上市值最高的公司之一。他一生获得了无数荣誉&#xff0c;被誉为“世纪…

《动手学深度学习(PyTorch版)》笔记7.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

电商开放API商品采集接口、关键字搜索接口,获取商品ID、商品主图接口

API是application programming interface&#xff08;应用程序接口&#xff09;的简称&#xff0c;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。…

2024年【A特种设备相关管理(电梯)】报名考试及A特种设备相关管理(电梯)免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;电梯&#xff09;报名考试是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;电梯&#xff09;免费试题&#xff0c;安全生产模拟考试一点通上A特种设备相关管理…

版本管理git及其命令介绍-附带详细操作

前言 在版本管理时代之前&#xff0c;人们写软件的方式如下图1所示 图1 无版本管理的代码 其坏处就是软件版本随着时间越来越多&#xff0c;每个版本修改了什么内容&#xff0c;修改了哪些文件&#xff0c;如果没有详细记录也不知道。这样久会导致如果我们想回退到某个版本内…

C语言——联合体类型

&#x1f4dd;前言&#xff1a; 在前面两篇文章&#xff1a;C语言——结构体类型&#xff08;一&#xff09;和C语言——结构体&#xff08;二&#xff09;中&#xff0c;我们讲述了C语言中重要的数据类型之一&#xff1a;结构体类型&#xff0c;今天我们来介绍一下C语言中的另…

BVH动画绑骨蒙皮并在Unity上展示

文章目录 Blender绑定骨骼Blender蒙皮Blender中导入bvh文件将FBX导入Unity Blender绑定骨骼 先左上角红框进入model模式&#xff0c;选中要绑定的模型&#xff0c;然后进入Edit模式把骨骼和关节对齐。 &#xff08;选中骨骼&#xff0c;G移动&#xff0c;R旋转&#xff09; 为…

苹果手机如何录屏?这里告诉你答案!

苹果公司的iPhone以其卓越的性能和用户体验受到了全球消费者的喜爱&#xff0c;而录屏功能作为手机的一项重要功能&#xff0c;能够帮助我们记录手机屏幕上的操作&#xff0c;分享游戏技巧、制作教程视频等。本文将为您介绍苹果手机如何录屏&#xff0c;帮助您更好地掌握录屏技…

零售新业态,让老牧区焕发新生命

敦煌老马一声魔性“浇给”勾起了无数人对羊肉的食欲&#xff0c;而当大家集体涌入餐厅或者在网上下单&#xff0c;都想要尝一尝网红同款的时候&#xff0c;可能并没有想过这样一个问题——为什么在今天&#xff0c;即便是远离牧区的现代大城市&#xff0c;草原羊肉却一样能触手…

双向链表的插入、删除、按位置增删改查、栈和队列区别、什么是内存泄漏

2024年2月4日 1.请编程实现双向链表的头插&#xff0c;头删、尾插、尾删 头文件&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int datatype; enum{FALSE-1,SUCCSE}; typedef str…

【宝藏系列】嵌入式入门概念大全

【宝藏系列】嵌入式入门概念大全 0️⃣1️⃣操作系统&#xff08;Operating System&#xff0c;OS&#xff09; 是管理计算机硬件与软件资源的系统软件&#xff0c;同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输…