EBR内容解析
原先博客放弃使用,几篇文章搬运过来
EBR(Extended Boot Record)即扩展分区引导记录.类似于主引导记录MBR.因为MBR的四条分区信息的限制,可以使用EBR方便扩展.
它的结构与MBR类似于,但是没有引导程序和磁盘签名,仅仅保留了分区表和结束标志.
下面以实例分析:
新建一个512MB虚拟磁盘,进行分区,如下图:

依次来看一下分区表:
MBR截图:

- 图中黄色部分表示第一个分区的分区表项,也就是盘符I.这不是一个活动分区,它的分区类型为0BH(即:FAT32),起始扇区为:00 00 00 80H(即:128),总扇区数为:00 03 20 00H(即:204,800).
- 图中橙色部分表示第二个分区表项,它的分区类型为05H(即:扩展分区),它的起始扇区为:00 03 28 00H(即:206,848),总扇区数为:00 0C D8 00H(即:841,728).
- 同时第一个分区表项的总长度(00 03 20 00H),加上第二个分区表项的总长度(00 0C D8 00H),再加上第一个分区表项前面预留的部分(00 00 00 08H)正好为512MB.
跳转到EBR1,也就是206,848扇区,截图如下:

- EBR中没有引导程序和磁盘签名,EBR1中第一个分区表项如黄色标出,分区类型为:0BH(即:FAT32),它的起始位置为:00 00 00 3FH(即:63),这个值是相对于206,848也就是当前扇区的,总扇区数为:00 03 1F C1H(即:204,737).206848+63=206911,我们跳转到这个扇区,找到了这个分区:

- EBR1中第二个分区表项已使用橙色标出,它的起始扇区为:00 03 20 00H(即:204,800),这个值也是相对于当前扇区(EBR1所在扇区)的,总扇区数为:00 03 20 00H(即:204,800),也就是204,848*512/2^20=100MB.
跳转到206848+204800=411648扇区找到了EBR2.
- EBR2(扇区411,648)分区表部分截图:

- EBR2中第一个分区表型的分区类型为:06H(即:FAT16),起始扇区为:00 00 08 00H(2048),这个值是相对于当前扇区也就是411,648扇区的,总扇区数为:00 03 18 00H(203,752).
- 第二个分区表项的分区类型为:05H(即:Extended),起始扇区为:00 06 40 00H(409,600),这个值是相对于EBR1的起始扇区204,848的,而不是相对于当前扇区的.
- 第一分区表项总长度(202,752)+第一个分区前预保留的扇区数(2048)=EBR1中第二个分区表项的长度(204,800)
跳转到206848+409600=616448扇区,就看到了EBR3:
- 其中的第一个分区的起始扇区也是相对于当前扇区的,第二个分区表项的起始位置是相对于EBR1的起始扇区的.
- EBR3第一个分区的前面保留扇区数(2048)+EBR3第一个分区的长度(202,752)=EBR2分区表第二项的总长度(204,800)
- 第二个分区表项的起始扇区为:00 09 60 00H(614,400),总扇区数为:00 01 90 00H(102,400)
这样根据206848+614400=821248便找到了EBR4:
- EBR4的第二个分布表项的起始扇区为:00 0A F0 00H(716800),总扇区数为:00 01 E8 00H(124928).
- EBR4第一个分区的前面保留扇区数(2048)+EBR4第一个分区的长度(100352)=EBR3分区表第二项的总长度(102,400).
同理,可以找大EBR5的起始扇区:206848+716800=923648,截图如下:

- EBR5第一个分区的前面保留扇区数(2048)+EBR5第一个分区的长度(122880)=EBR3分区表第二项的总长度(124,928).
总结:
- MBR中扇区的起始位置都是相对于0偏移的.
- EBR中第一个分区表项的表示的为逻辑磁盘时,起始位置都是相对于当前的扇区的(也就是EBR所在的扇区).
- EBRi 中的分区表项表示下一个扩展分区时,它的起始位置都是相对于EBR1的.
- EBRi+1中的扇区总数=EBRi中指向EBRi+1的分区表项的总扇区数.
EBR内容解析的更多相关文章
- gradle相关配置内容解析
gradle 项目的构建工具,基于groovy语言.主要用于管理依赖包. as中一般将gradle下载在C:\Documents and Settings<用户名>.gradle\wrap ...
- Android 之内容提供者 内容解析者 内容观察者
contentProvider:ContentProvider在Android中的作用是对外提供数据,除了可以为所在应用提供数据外,还可以共享数据给其他应用,这是Android中解决应用之间数据共享的 ...
- YOLOv3-darknet 内容解析
目录 Yolov3-darknet 内容解析 多标签分类预测 跨尺度预测 网络结构改变 reference Yolov3-darknet 内容解析 YOLOv3是到目前为止,速度和精度最均衡的目标检测 ...
- YOLOv2-darknet 内容解析
目录 YOLOv2-darknet 内容解析 1. 改进之处 2. Better 3. Faster 4. Stronger 5. 总结 reference YOLOv2-darknet 内容解析 1 ...
- YOLOv1-darknet 内容解析
目录 YOLOv1-darknet 内容解析 1. 核心思想 2. 特点 3. 缺点 4. 算法流程 5. 详细内容 6. 主要参考 YOLOv1-darknet 内容解析 1. 核心思想 目标检测分 ...
- JVM系列文章(三):Class文件内容解析
作为一个程序猿,只知道怎么用是远远不够的.起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP. ...
- Web 前端性能优化相关内容解析
Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...
- Web 前端性能优化相关内容解析[转]
Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...
- 爬虫实战【6】Ajax内容解析-今日头条图集
Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然 ...
随机推荐
- C语言数据结构基础学习笔记——基础线性表
线性表是指具有相同数据类型的n(n>=0)个数据元素的有限序列,它具有一个表头元素和一个表尾元素,并且每一个数据元素最多只有一个直接前驱和一个直接后继. 线性表的顺序存储也叫作顺序表,它的特性是 ...
- java多线程中最佳的实践方案是什么?
java多线程中最佳的实践方案是什么? 给你的线程起个有意义的名字.这样可以方便找bug或追踪.OrderProcessor, QuoteProcessor or TradeProcessor 这种名 ...
- Chapter3 复杂度分析(上):如何分析,统计算法的执行效率和资源消耗
数据结构解决的问题:“快” + “省”,即为时间,空间复杂度分析 1:为什么需要复杂度分析? 因为通过统计手段分析的结果受到两个因素的影响,一:测试结果非常依赖测试环境,二:测试结果受数据规模的影响很 ...
- 性能测试Jmeter扩展学习-添加自定义函数
我们在使用jmeter的时候有时候会碰到jmeter现有插件或功能也无法支持的场景,比如前端加密,此时我们就需要自己手动编写函数并导入了,下面就是手动修改并导入的过程. 首先我们需要下载jmeter源 ...
- 62.纯 CSS 创作一只蒸锅(感觉不好看呀)
原文地址:https://segmentfault.com/a/1190000015389338 HTML code: <!-- steamer: 蒸锅: lid: 盖子: pot: 锅 --& ...
- leetcode4
public class Solution { public double FindMedianSortedArrays(int[] nums1, int[] nums2) { var nums = ...
- leetcode621
public class Solution { public int LeastInterval(char[] tasks, int n) { Dictionary<char, int> ...
- R语言-线图(二)
1.线图示例 plot()为高水平作图命令,axis().lines().legend()都为低水平作图命令 > rain<-read.csv("cityrain.csv&q ...
- Truthy真值
在 JavaScript 中,Truthy (真值)指的是在 布尔值 上下文中转换后的值为真的值.所有值都是真值,除非它们被定义为 falsy (即除了 false,0,"",nu ...
- NLTK 统计词频
import nltk Freq_dist_nltk = nltk.FreqDist(list) for k,y in Freq_dist_nltk: print str(k),str(y)