当前位置: 首页 > news >正文

浅析现代计算机启动流程

文章目录

    • 前言
    • 启动流程概述
    • 磁盘分区格式
      • 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》

相关文章:

浅析现代计算机启动流程

文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程,这个流程中会涉及到各种硬件的配置与交互,包…...

七月论文审稿GPT第2.5和第3版:分别微调GPT3.5、Llama2 13B以扩大对GPT4的优势

前言 自去年7月份我带队成立大模型项目团队以来,我司至今已有5个项目组,其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第…...

Android Studio导入项目 下载gradle很慢或连接超时

AS最常见的问题之一就是下载gradle非常慢,还经常出现下载失败的情况,没有gradle就无法build项目,所以一定要先解决gradle的下载问题,下面教大家两种常用方法 手动下载压缩包并替换 1、关闭Android Studio,复制下面的网…...

如何使用VSCode上运行Jupyter,详细案例过程出可视化图

Python作为最受AI喜欢的语言之一,我们与大家共同学习下如何在VS Code上运行Jupyter,并且用简单案例实现出图。 环境 VS Code version: 1.80.1 Python: 3.12.0 小白安装过程: 在准备好基础环境,小白心想,AI可是霸占科…...

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内存(mmap) 套接字(socket)过时的IPC通信方式 System V IPC 共享内存(sh…...

[SWPUCTF 2021 新生赛]easyupload1.0

发现是上传文件第一想到是文件木马 <?php eval ($_POST[123]);?>木马上传burp修改后缀发现flag里面这个是假的 我们猜想是在phpinfo我们上传<?php eval(phpinfo(););?>木马上传burp修改后缀里面 CtrlF 发现flag...

【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器&#xff09; 一.创建套接字二.绑定网络信息1.构建通信类型2.填充网络信息①网络字节序的port②string类型的ip地址 3.最终绑定 三.读收消息1.服务器端接收消息recvfrom2.服务器端发送消息sendto3.客户端端发送消息sendto4.客户端…...

【Rust】字符串,看这篇就够了

这节课我们把字符串单独拿出来讲&#xff0c;是因为字符串太常见了&#xff0c;甚至有些应用的主要工作就是处理字符串。比如 Web 开发、解析器等。而 Rust 里的字符串内容相比于其他语言来说还要多一些。是否熟练掌握 Rust 的字符串的使用&#xff0c;对 Rust 代码开发效率有很…...

单片机和 ARM 的区别

单片机和 ARM 在功能和使用上有一些区别&#xff0c;因此哪个更好用取决于具体的需求和场景。 单片机是一种集成了微处理器、存储器和外设接口的集成电路芯片&#xff0c;通常具有体积小、功耗低、可靠性高、成本低等特点。单片机广 泛应用于各种领域&#xff0c;如智能仪表、工…...

JavaScript从入门到精通系列第三十一篇:详解JavaScript中的字符串和正则表达式相关的方法

文章目录 知识回顾 1&#xff1a;概念回顾 2&#xff1a;正则表达式字面量 一&#xff1a;字符串中正则表达式方法 1&#xff1a;split 2&#xff1a;search 3&#xff1a;match 4&#xff1a;replace 知识回顾 1&#xff1a;概念回顾 正则表达式用于定义一些字符串的…...

23、数据结构/查找相关练习20240205

一、请编程实现哈希表的创建存储数组{12,24,234,234,23,234,23},输入key查找的值&#xff0c;实现查找功能。 代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h> #include<math.h> typedef struct Node {int data;struct n…...

【VSTO开发-WPS】下调试

重点2步&#xff1a; 1、注册表添加 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\kingsoft\Office\WPP\AddinsWL] "项目名称"""2、visual studio 运行后&#xff0c;要选中附加到调试&#xff0c;并指定启动项目。 如PPT输入WPP搜…...

git 的基本概念

当使用Git时&#xff0c;一些基本概念包括&#xff1a; 1. **仓库&#xff08;Repository&#xff09;&#xff1a;** 存储项目文件和版本历史的地方。可以是本地仓库&#xff08;在你的计算机上&#xff09;或远程仓库&#xff08;在服务器上&#xff09;。 2. **提交&#…...

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第6章 逻辑斯谛回归与最大熵模型(1)6.1 逻辑斯谛回归模型

文章目录 第6章 逻辑斯谛回归与最大熵模型6.1 逻辑斯谛回归模型6.1.1 逻辑斯谛分布6.1.2 二项逻辑斯谛回归模型6.1.3 模型参数估计6.1.4 多项逻辑斯谛回归 《统计学习方法&#xff1a;李航》笔记 从原理到实现&#xff08;基于python&#xff09;-- 第3章 k邻近邻法 《统计学习…...

Go 中如何检查文件是否存在?可能产生竞态条件?

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 技巧第十三篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 Go 中如何检查文件是否存在呢&#xff1f; 如果你用的是 Python&#xff0c;可通过标准库中 os.path.exists 函数实现。遗憾的是&#xff0c;Go 标准库没有…...

红日靶场1搭建渗透

环境搭建 下载好镜像文件并解压&#xff0c;启动vmware 这里我用自己的win7 sp1虚拟机作为攻击机&#xff0c;设置为双网卡NAT&#xff0c;vm2 其中用ipconfig查看攻击机ip地址 设置win7 x64为双网卡&#xff0c;vm1&#xff0c;vm2 设置win08单网卡vm1&#xff0c;win2k3为单…...

ChatGPT之搭建API代理服务

简介 一行Docker命令部署的 OpenAI/GPT API代理&#xff0c;支持SSE流式返回、腾讯云函数 。 项目地址&#xff1a;https://github.com/easychen/openai-api-proxy 这个项目可以自行搭建 OpenAI API 代理服务器工具&#xff0c;该项目是代理的服务器端&#xff0c;不是客户端。…...

Kotlin手记(一):基础大杂烩

Kotlin简介 2011年7月&#xff0c;JetBrains推出Kotlin项目&#xff0c;这是一个面向JVM的新语言 2012年2月&#xff0c;JetBrains以Apache 2许可证开源此项目。 2016年2月15日&#xff0c;Kotlin v1.0发布&#xff0c;这被认为是第一个官方稳定版本。 在Google I/O 2017中&am…...

redis源码之:集群创建与节点通信(2)

在上一篇redis源码之&#xff1a;集群创建与节点通信&#xff08;1&#xff09;我们可知&#xff0c;在集群中&#xff0c;cluster节点之间&#xff0c;通过meet将对方加入到本方的cluster->nodes列表中&#xff0c;并在后续过程中&#xff0c;不断通过clusterSendPing发送p…...

2024.2.5 寒假训练记录(19)

文章目录 牛客 寒假集训2A Tokitsukaze and Bracelet牛客 寒假集训2B Tokitsukaze and Cats牛客 寒假集训2D Tokitsukaze and Slash Draw牛客 寒假集训2E Tokitsukaze and Eliminate (easy)牛客 寒假集训2F Tokitsukaze and Eliminate (hard)牛客 寒假集训2I Tokitsukaze and S…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...