原先博客放弃使用,几篇文章搬运过来

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内容解析的更多相关文章

  1. gradle相关配置内容解析

    gradle 项目的构建工具,基于groovy语言.主要用于管理依赖包. as中一般将gradle下载在C:\Documents and Settings<用户名>.gradle\wrap ...

  2. Android 之内容提供者 内容解析者 内容观察者

    contentProvider:ContentProvider在Android中的作用是对外提供数据,除了可以为所在应用提供数据外,还可以共享数据给其他应用,这是Android中解决应用之间数据共享的 ...

  3. YOLOv3-darknet 内容解析

    目录 Yolov3-darknet 内容解析 多标签分类预测 跨尺度预测 网络结构改变 reference Yolov3-darknet 内容解析 YOLOv3是到目前为止,速度和精度最均衡的目标检测 ...

  4. YOLOv2-darknet 内容解析

    目录 YOLOv2-darknet 内容解析 1. 改进之处 2. Better 3. Faster 4. Stronger 5. 总结 reference YOLOv2-darknet 内容解析 1 ...

  5. YOLOv1-darknet 内容解析

    目录 YOLOv1-darknet 内容解析 1. 核心思想 2. 特点 3. 缺点 4. 算法流程 5. 详细内容 6. 主要参考 YOLOv1-darknet 内容解析 1. 核心思想 目标检测分 ...

  6. JVM系列文章(三):Class文件内容解析

    作为一个程序猿,只知道怎么用是远远不够的.起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP. ...

  7. Web 前端性能优化相关内容解析

    Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...

  8. Web 前端性能优化相关内容解析[转]

    Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...

  9. 爬虫实战【6】Ajax内容解析-今日头条图集

    Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然 ...

随机推荐

  1. 保存数据到Excel中

    调用的方法传值 Export(dt, "Cal_Report_" + DateTime.Now.ToString("yyyyMMddhhmmss") + &qu ...

  2. linux如何复制文件夹和移动文件夹

    linux下文件的复制.移动与删除命令为:cp,mv,rm一.文件复制命令cp 命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)cp [option ...

  3. 官方解析Cookies和Session的区别

      官方理解: Cookie机制 Cookie机制 Cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器. IETF RFC 2965 HTTP状态管理机制是一种通用的coo ...

  4. rpc调用过程

    在openstack中,各个组件之间的调用遵循RESTful风格,而组件内部各服务之间的相互调用采用rpc远程调用,比如nova-conductor和nova-compute rpc原理: 首先了解什 ...

  5. session and cookie简析

    无状态应用程序(cookies.session等机制出现的背景) Web应用程序服务器通常是“无状态的”: 每个HTTP请求都是独立的; 服务器无法判断2个请求是来自同一个浏览器还是用户. Web服务 ...

  6. git pull时解决分支分叉(branch diverged)问题

    git pull时出现分支冲突(branch diverged) $ git status # On branch feature/worker-interface # Your branch and ...

  7. Python:Fintech产品的第一语言

    来源商业新知,原标题:为什么说Python是Fintech与金融变革的秘密武器 人生苦短,不止程序员,Python正在吸引来自金融领域大佬们的青睐目光. 金融科技的风口下,无数传统金融人都想从中掘一桶 ...

  8. 微信小程序---setData

    data:{ obj:{ name:'hello' } } 对data中obj的name字段进行重新赋值. onLoad: function (option) { var value = 'obj.n ...

  9. 查看oracle的执行计划

    基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...

  10. spring和springmvc配置分离

    在配置springmvc的时候,我们可以把所有配置配置到springmvc的xml文件中, 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件. 但是,通常情况下 ...