磁盘分区与固件启动

扇区是磁盘读写的基本单位,是磁头从磁盘中读取数据的最小单位,一般是512B(现代磁盘还有4

KB),多个相邻的扇区组合在一起形成一个簇。其中磁盘的第一个扇区特别重要,它存储了磁盘分区表。

早期磁盘的第一个扇区里面含有的磁盘分区表我们称为MBR(Master Boot Record)格式,由于磁盘容量不断扩大,大于2TB以上的磁盘分区已经让某些操作系统无法存取,因此后来又多了一个新的磁盘分区格式,称为GPT(GUID Partition table)

一、 MBR分区与BIOS启动

早期的操作系统采用MBR的方式来引导程序与分区表,引导程序(bootloader)与分区表放在磁盘的第一个扇区,这个扇区通常是512Bytes,主引导记录(MBR)就是这第一个扇区。

 引导程序占446字节,其后64字节描述了分区表,每个分区占用16字节,故可以描述4个分区。最后两个字节是结束标识55AAH。

其中描述每个分区的16字节各字节表示的含义如下:

 第一个字节是引导标志,指示哪个分区是活动的,即哪个分区包含引导加载程序,有一个活动分区也是BIOS判断该设备可以作为启动设备的标识之一。在MBR的4个分区中只有一个分区是活动分区,也就是说只有一个分区能够用作加载操作系统。

第13到16字节标识分区的总扇区数,即最多可以表示2^{32}个扇区,每个扇区为512字节,故该区最大容量为2^{32}*512B=2TB,故MBR最多使用容量位2TB的启动。

CMOS是记录了各项硬件设备参数且嵌入在主板上的存储器,BIOS会根据用户设置去分析哪个设备能够作为启动设备,如果该设备、是启动项,BIOS会读取该设备的第一个扇区的MBR的位置,并将其加载到内存中,并将控制权转给MBR的bootloader。由于MBR的boot loader只有446字节,所有bootloader是一个最小程序,当将控制权交给bootloader后会运行存储在boot分区的GRUB,GRUB启动引导阶段会找到磁盘上操作系统的内核,并将内核加载到内存中进行执行,将控制权交给操作系统内核。

BIOS的启动流程可以概括为:

BIOS启动流程:系统开机 - 上电自检(Power On Self Test 或 POST)。
POST过后初始化用于启动的硬件(磁盘、键盘控制器等)。
BIOS会运行BIOS磁盘启动顺序中第一个磁盘的首440bytes(MBR启动代码区域)内的代码。
启动引导代码从BIOS获得控制权,然后引导启动下一阶段的代码(如果有的话)(一般是系统的启动引导代码)。
再次被启动的代码(二阶段代码)(即启动引导)会查阅支持和配置文件。
根据配置文件中的信息,启动引导程序会将内核和initramfs文件载入系统的RAM中,然后开始启动内核。

二、GPT分区与UEFI启动

GPT磁盘分区使用GUID分区表,是源自EFI标准的磁盘分区表结构的标准。与普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。GPT磁盘整体的布局如下所示:

GPT分区已经没有所谓的主、扩展、逻辑分区的概念,既然每组记录可以独立存在,当然每个都可以视为主要分区,每一个分区窦可以拿来格式化使用。GPT分区使用一个16字节的GUID来表示某个分区。

如果磁盘大于2TB,系统会默认使用GPT分区,如果磁盘小于2TB,系统会默认使用MBR分区。

BIOS搭配GPT

BIOS无法识别GPT分区,主要通过GPT分区的MBR提供的兼容模式,但是BIOS能够从MBR中读取第一阶段的启动引导程序。如果启动引导程序能够支持GPT,BIOS同样可以读取到操作系统内核。如果是类似GRUB这样不支持GPT的启动引导程序的话,就得额外分区出一个BIOS boot分布区,该分区存放其它开机程序。

与BIOS模式相比,UEFI可以直接获得GPT的分区表,不过最好拥有BIOS boot的分区支持,这样更加灵活,这样你就可以安装BIOS模式下的grub,然后以任意模式(UEFI/BIOS)进行启动引导。

UEFI可以同时识别MBR分区和GPT分区,所以在UEFI下,MBR磁盘和GPT磁盘都可用于启动操作系统和数据存储。不过微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。

仅从系统启动原理方面来讲,UEFI之所以比BIOS强大,是因为UEFI本身已经相当于一个微型操作系统,其优点为:

1、UEFI已具备文件系统的支持,他能直接读取FAT分区中的文件

2、可开发出直接在UEFI下运行的应用程序,这类程序文件通常以efi结尾

由于UEFI既可以直接识别FAT分区中的文件,又可以直接运行其应用程序,那么完全可以将操作系统安装程序做成efi类型的应用程序,然后把它放到任意fat分区中直接运行即可。而BIOS必须先从MBR中读取启动引导程序,在从活动分区中引导启动操作系统,对扇区的操作远比不上对分区中文件的操作更直观更直接。只要将安装文件到一个FAT32(主)分区/U盘中,然后从这个分区/U盘启动,安装操作系统就变得简单

UEFI启动流程概括为:

系统开机 - 上电自检(Power On Self Test 或 POST)。
UEFI 固件被加载,并由它初始化启动要用的硬件。
固件读取其引导管理器以确定从何处(比如,从哪个硬盘及分区)加载哪个 UEFI 应用。
固件按照引导管理器中的启动项目,加载UEFI 应用。
已启动的 UEFI 应用还可以启动其他应用(对应于 UEFI shell 或 rEFInd 之类的引导管理器的情况)或者启动内核及initramfs(对应于GRUB之类引导器的情况),这取决于 UEFI 应用的配置

(UEFI 引导管理器,boot manager) 

UEFI包含一个引导管理器,它允许从UEFI定义的文件系统上的任何文件或通过使用UEFI定义的映像加载服务加载按照该规范编写的应用程序(包括操作系统第一阶段加载程序)或UEFI驱动程序。UEFI定义了NVRAM变量,用于指向要加载的文件。这些变量还包含直接传递给UEFI应用程序的特定于应用程序的数据。这些变量还包含一个人类可读的字符串,可以在菜单中显示给用户。
UEFI定义的变量允许系统固件包含一个引导菜单,该菜单可以指向所有操作系统,甚至是同一操作系统的多个版本。UEFI的设计目标是拥有一组可以驻留在平台固件中的引导菜单。UEFI仅指定用于选择引导选项的NVRAM变量。UEFI将菜单系统的实现作为增值的实现空间。

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

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

相关文章

尚硅谷----智尚代驾项目----Day7(续)------预估乘客订单数据之Drools

Hello uu 们!感谢你们的收看,话不多说,今天开始我们的Drools之旅 Drools介绍 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文…

Dapper 如何确保数据的安全性和防止 SQL 注入攻击?

一、什么是SQL注入攻击 SQL注入攻击是一种常见的网络攻击手段,它利用了应用程序中安全措施不足的问题,允许攻击者插入或“注入”一个或多个SQL语句到原本的查询中。这种攻击可以用于获取、篡改或删除数据库中的数据,甚至可以执行一些数据库管…

springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

项目实战:构建高效可扩展的Flask Web框架:集成Flask-SQLAlchemy、Marshmallow与日志管理

前言 在Web开发中,构建一个既高效又可扩展的框架是项目成功的基石。Flask作为一个轻量级的Web应用框架,凭借其易用性和灵活性,特别适合快速开发和原型设计。结合Flask-SQLAlchemy(为Flask提供SQLAlchemy ORM支持的扩展&#xff0…

前端基础面试题·第四篇——Vue(其一)

1.v-if 和 v-show的区别 在Vue中这两个命令都用于控制元素的显示与隐藏。 (1) v-if 动态控制元素显示与隐藏,本质上是动态销毁或者重建元素,会触发浏览器重排与重绘。在切换状态时有一个局部编译/卸载的过程会适当重建或者销毁内部的事件监听、子组件。…

数据结构与算法实验9 实现无向连通图的最小生成树

文章目录 1.上机名称2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件 Graph.h 内容如下:4.1.2 实现文件 Graph.cpp 内容如下:4.1.3 源文件 main.cpp 内容如下: 4.2 运行结果 5.上机体会 1.上机名称 实现无向…

如何使用Git管理项目工程

目录 安装git 注册gitee gitee注册示例 git账户配置 使用git仓库 在本地生成一个git仓库 创建文件并增加commit 命令详解 git status git add git commit git remote git push git pull git fetch git log git branch 安装git windows下安装git可以直接上git…

distinct导致sql超时

前言 昨天敲着敲着代码,小杨哥跑过来给我说,快看他们大会议室演示报错了,还是一堆错了。完了啊在演示的时候报错!!!接下来我们分析一下是什么原因吧。 问题分析 查看日志: 从日志打印看明显的…

Gin框架简易搭建(3)--Grom与数据库

写在前面 项目地址 个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍 但是它在环境搭建阶段对于初学者而言不是很友好,尤其是使用mysql指令稍有不同,以及更新的方法和依赖问题都是很让人头疼的,而且这些报错并非逻辑上的&#xf…

用大模型优化大模型预训练数据,节省20倍计算量,实现显著性能提升!

生成式人工智能研究实验室(GAIR,主页:https://plms.ai/)是国内首个聚焦于生成式人工智能的高校研究组。汇聚了来自于 CMU、复旦、交大(ACM 班、IEEE 试点班等)等顶尖高校的年轻本硕博人才。实验室专注于三大…

大数据-150 Apache Druid 安装部署 单机启动 系统架构

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

从‘盲管’到‘智网’,漫途精准构建排水管网监测方案

在城市错综复杂的基础设施网络中,排水管网作为城市的“血脉”,其高效、稳定运行直接关系到城市生活的安宁与财产的安全。面对日益频繁的雨季挑战与气候变化的不确定性,传统“盲管”管理模式已难以满足现代城市治理的需求。 漫途排水管网监测…

LED显示屏如何通过FMEA进行风险分析:打造无忧显示新境界

LED显示屏作为高科技产品,其性能受到多种因素的影响,包括但不限于设计缺陷、材料质量、制造工艺、使用环境等。任何环节的疏漏都可能导致显示屏出现亮度不均、色彩失真、故障频发等问题,进而影响用户体验和品牌形象。因此,通过FME…

Linux标准IO(四)-格式化I/O输入

C 库函数提供了 3 个格式化输入函数&#xff0c;包括&#xff1a;scanf()、fscanf()、sscanf()&#xff0c;其函数定义如下所示&#xff1a; #include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(c…

Spring Web MVC课后作业

目录 1.加法计算器 2.⽤户登录 3.留⾔板 1.加法计算器 &#xff08;1&#xff09;需求分析 加法计算器功能, 对两个整数进⾏相加, 需要客⼾端提供参与计算的两个数, 服务端返回这两个整数计算 的结果。 &#xff08;2&#xff09;接⼝定义 请求路径&#xff1a; calc/sum 请…

爬取元气手机壁纸简单案例(仅用于教学,禁止任何非法获利)

爬虫常用的库 爬虫&#xff08;Web Scraping&#xff09;是一种从网页上提取数据的技术。在 Python 中&#xff0c;有许多库可以帮助实现这一目标。以下是一些常用的爬虫库&#xff0c;以及对 BeautifulSoup 的详细介绍。 常用爬虫库 1.Requests ​ a.功能&#xff1a;用于发…

spark计算引擎-架构和应用

一Spark 定义&#xff1a;Spark 是一个开源的分布式计算系统&#xff0c;它提供了一个快速且通用的集群计算平台。Spark 被设计用来处理大规模数据集&#xff0c;并且支持多种数据处理任务&#xff0c;包括批处理、交互式查询、机器学习、图形处理和流处理。 核心架构&#x…

ChatGPT Sidebar 浏览器插件配置指南

随着聊天机器人技术的不断进步&#xff0c;越来越多的人开始依赖这些强大的工具来提高工作效率、获取信息和解决问题。OpenAI 的 ChatGPT 是其中最受欢迎的聊天机器人之一。为了方便用户在浏览网页时随时与 ChatGPT 互动&#xff0c;开发者们设计了一款名为 ChatGPT Sidebar 的…

Latex——一行的划线 如何分开

代码&#xff1a; \cmidrule(r){3-4} \cmidrule(r){5-6} \cmidrule(r){7-8}效果&#xff1a; 参考文章&#xff1a; LaTeX技巧653&#xff1a;如何隔开LaTeX表格邻近\cline表格线&#xff1f;

四,MyBatis-Plus 当中的主键策略和分页插件的(详细实操使用)

四&#xff0c;MyBatis-Plus 当中的主键策略和分页插件的(详细实操使用) 文章目录 四&#xff0c;MyBatis-Plus 当中的主键策略和分页插件的(详细实操使用)1. 主键策略1.1 主键生成策略介绍 2. 准备工作&#xff1a;2.1 AUTO 策略2.2 INPUT 策略2.3 ASSIGN_ID 策略2.3.1 雪花算…