主引导记录(MBR)、硬盘分区表(DPT)、扩展引导记录(EBR)

news2024/9/21 2:43:08

前言

最近在研究使用grub引导自制操作系统时,发现grub链式引导过程中向boot传递的硬盘分区表表项数据有疑问,特此记录下。

一、主引导记录(MBR)

MBR是存储在计算机硬盘的第一个物理扇区的512字节的数据块,它包含了引导程序、分区表、主引导扇区结束标志AA55H三部分。其中引导程序占用446字节,分区表占用64字节(16字节每项×4项),主引导扇区结束标志AA55H占2字节。

二、主引导记录分区表

主引导记录分区表共4个表项,每个表项占用16字节。具体含义如下:
分区表表项
其中分区表表项0字节处标记当前是否是启动分区;
4字节处表示分区的类型,各值的具体含义如下:
00H——表示该分区未用(即没有指定);
06H——FAT16基本分区;
0BH——FAT32基本分区;
05H——扩展分区;
07H——NTFS分区;
0FH——(LBA模式)扩展分区(83H为Linux分区等)
8字节开始的4个字节表示该分区的起始扇区LBA。
注:在主引导记录的硬盘分区表中的起始扇区LBA是相对于物理0号扇区的偏移量。

三、扩展分区引导记录(EBR)

主引导记录的分区表共有4个表项,也就是说一个硬盘最多有四个主分区,当需要更多分区时怎么办呢? 微软给出的解决方案是引入扩展分区,它与主分区为并列的关系,占用主引导记录的分区表的一个表项。每个扩展分区最多可放16个逻辑分区,每个EBR对应一个逻辑分区,也就是说每个扩展分区中是有多个EBR的。扩展分区的第一个逻辑分区的EBR放在扩展分区的0号扇区
,EBR的各部分组成与MBR完全一致,但是EBR中分区表的用途不同。EBR分区表只用前两个表项,第一个表项描述了当前逻辑分区的起始扇区、扇区数目等信息,第二个表项描述的是下一个EBR所在的位置。
扩展分区的结构
如图所示,扩展分区中各个EBR的组织类似于链表的形式,分区表第一项记录着当前逻辑分区的信息,分区表第二项记录着下一个逻辑分区的EBR所在的位置,但是需要注意的是扩展分区中所有EBR的分区表表项中的起始扇区LBA 记录的是相对偏移量,是相对于上一个逻辑分区的偏移,例如主分区表中有一个扩展分区表项(假设sda2),该扩展分区下有三个逻辑分区(sda5、sda6、sda7),假设主分区表中扩展分区表项的起始扇区LBA为2048,三个逻辑分区EBR中表项的第一项的起始扇区LBA分别为128、256、512,则sda5的起始扇区LBA=2048+128,则sda6的起始扇区LBA=2048+128+256,则sda7的起始扇区LBA=2048+128+256+512

GRUB链式引导过程中向boot传递的分区表项存在的问题

当启动分区为主分区时,GRUB向boot传递的是MBR分区表中的主分区表项,该表项的起始扇区LBA就是物理扇区号。
当启动分区为扩展分区的逻辑分区时,GRUB向boot传递的是EBR分区表中的描述逻辑分区的表项,该表项中的起始扇区LBA是相对于上一个逻辑分区起始扇区的偏移量,因此grub仅仅传递扩展分区中逻辑分区的分区表表项是无法计算出当前逻辑分区的物理起始扇区的。

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

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

相关文章

【Linux】线程池|单例模式|STL、智能指针线程安全|读者写者问题

文章目录 线程池线程池代码线程池单例模式STL,智能指针和线程安全其他锁(了解)读者写者问题(了解) 线程池 我们去处理任务时,一个任务对应一个创建一个线程进行处理,效率是比较低的。我们可以预先创建一批线…

软件框架技术-实现在数据库中建立信息表,在id当中进行编写显示、查询、增加、修改、删除数据的代码,最后在localhost8080端口进行输出并显示在网页上

友情提示:本文代码较长,逻辑上较为复杂,若有需要建议详细阅读!!! 目录 前言 一、代码目录结构 二、数据库Student表的建立 三、idea代码配置 3.1 Student.java类(entity软件包中) 3.2 StudentDao接口类&#xff…

一图看懂 openai 模块:ChatGPT的API python库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 openai 模块:ChatGPT的API python库, 资料整理笔记(大全) 摘要模块图类关系图结束 摘要 全文介绍系统内置 openai ——ChatGPT的API pyt…

300张现场照片,揭秘移动云大会!

今天,中国移动主办的移动云大会,在苏州金鸡湖国际会议中心正式开幕。 移动云这两年发展很猛,营收从2020年的110多亿,到2021年的240多亿,2022年更是飙到了500多亿,每年翻番。据说,未来三年&#…

《面试1v1》java多线程

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官: 说说你对多线程的理解? 候选人: 多线程就是同时运行多个线程,实现一件事的并行处理。比如开个程序,同时下载多个文件,同时处理多个…

linux-基础语法

本篇博客使用的是 Xshell 登录的云服务器。 Xshell 使用 Alt Enter 的快捷键就可以自动全屏和 取消全屏。 Linux 基础语法 空文件也是需要存储空间的,假设我们创建一个空的 txt 文本文档,虽然我们看着文件大小是 0kb 但是 文件当中时候文件属性的&…

智能AI文档管理新方式,手把手教你打造自己的文档聊天机器人

一个快速指南,为您构建一个聊天机器人网站,可以接受外部文档作为上下文。 随着每天涌现的信息和知识在我的屏幕上呈现,我们面临着人类阅读和记忆自然限制的挑战,这使得跟上信息更新变得越来越困难。现在,像ChatGPT和Ll…

游戏企业如何做用户行为序列分析?

用户行为序列是指固定时间内单个用户按照时间顺序依次触发的部分或全部事件。通过对用户行为序列进行分析,企业可以归纳出群体用户的行为特征,辅助产品运营和迭代。 通常,企业可以将用户行为序列分析应用于所有的分析场景。比如,当…

深入解析CFS任务的负载均衡(框架篇)

本文出现的内核代码来自Linux5.4.28,如果有兴趣,读者可以配合代码阅读本文。 一、什么是负载均衡 1、什么是CPU负载(load) CPU负载是一个很容易和CPU利用率(utility)混淆的概念。CPU利用率是CPU忙闲的比例…

全面学习Selenium和Python的Web自动化测试项目实战

目录 摘要: 1.安装依赖项 2.编写测试用例 3.执行测试用例 4.结论 摘要: 随着Web应用程序的不断发展和更新,保证其质量和稳定性变得越来越重要。为了实现这一目标,Web自动化测试已经成为了必不可少的一部分。本文将介绍一个基…

二十、线索关联市场活动(一):查询市场活动

功能需求 用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口; 用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中; 用户选择要关联的市场活动,点击"关联…

SparkStreaming学习——读取socket的数据和kafka生产者的消息

目录 一、Spark Streaming概述 二、添加依赖 三、配置log4j 1.依赖下载好后打开IDEA最左侧的外部库 2.找到spark-core 3.找到apache.spark目录 4.找到log4j-defaults.properties文件 5.将该文件放在资源目录下,并修改文件名 6.修改log4j.properties第19行的…

Vue.js学习-1

一、Vue.js环境准备 官网地址:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) Vue.js v2教程:Vue.js (vuejs.org) 在浏览器中安装Vue调试工具:Installation | Vue Devtools (vuejs.org) VSCode安装见这里: 下载vue.j…

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题:AutoNeRF:使用自主代理训练隐式场景表示 作者:Pierre Marz…

macOS 13.4Beta 3(22F5049e)发布

系统介绍 4 月 26 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.4 开发者预览版 Beta 3 更新(内部版本号:22F5049e),本次更新距离上次发布隔了 14 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通…

Go | 一分钟掌握Go | 5 - 切片

作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 说明 切片和数组有点像,对于我的理解就是声明了固定长度的就是数…

「 Redis 」RDB和AOF持久化全面解析

「 Redis 」RDB和AOF持久化全面解析 参考&鸣谢 【说透Redis】10分钟彻底理解Redis的持久化机制:RDB和AOF 程序员读书 AOF 持久化是怎么实现的? xiaolinCoding Redis持久化之RDB与AOF 的区别 1024下午茶 文章目录 「 Redis 」RDB和AOF持久化全面解析前…

设计模式之解释器模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…

C语言函数大全-- q 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- q 开头的函数 1. qsort 1.1 函数说明 函数声明函数功能void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));用于将指定数组按指定顺序进行排序 参数: base : 指…

2023年,企业如何做好团队知识管理?

团队知识管理是一个组织管理中非常重要的组成部分。成熟的企业通常会非常注重团队知识管理的实践,以提高团队的协作效率和整体绩效。本文将介绍成熟企业如何做好团队知识管理,以提高企业的竞争力和创新能力。 一、了解团队知识管理的重要性 团队知识管…