MBR分区表的简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 

参考内容

(1)S5PV210 Uboot开发与移植01:Uboot概述_麦兜的学习笔记的博客-CSDN博客 

(2)Linux系统下的硬盘分区、格式化与挂载_天糊土的博客-CSDN博客

(3)硬盘分区、寻址和系统启动过程 - 走看看

(4)硬盘基础知识_Forskamse的博客-CSDN博客

(5)MBR分区表详解_zt_xcyk的博客-CSDN博客_mbr分区

(6)硬盘主引导记录(MBR)及其结构详解 - 百度文库

(7)硬盘主引导扇区详解

(8)用winhex查看mbr分区 - 摩斯电码 - 博客园

(9)在window和linux下如何对sd卡或者u盘分区、删除分区等操作

前言

(1)关于磁盘分区的基本知识见参考内容(2),这里主要讲分区表。

(2)一块全新的硬盘,必须进行初始分区。这里的初始分区是指只对磁盘进行分区,还没有对分区进行格式化(没有指定这块硬盘的某个分区采用哪种文件系统)。广义上的分区操作,包括初始分区与格式化。

(3)初始分区分为MBR分区、GPT分区这两种方法,对应着MBR分区表和GPT分区表。这里主要讲MBR分区表。

一、主引导扇区的组成

一般而言,磁道0中的第1个扇区(扇区编号是从1开始的?见参考内容(3))是主引导扇区,在PC上BIOS会读取该扇区,并将控制权转交给这个扇区上的MBR(很多教材中以MBR指代主引导扇区,需要根据上下文区分)。

主引导扇区由三个部分组成:主引导记录(MBR,Master Boot Record)、硬盘分区表(DPT,Disk Partition Table)、引导记录标志(或者说结束标志)(BRID,Boot Record ID)。

主引导扇区大小是512字节,其中MBR占据446个字节,DPT占据64字节,BRID占据两个字节。

部分位置(hex)大小(bytes)描述
MBR部分000~161354bytesMBR代码区域
162~1BD92bytesMBR数据区域
DPT部分1BE~1CD16bytes分区表1
1CE~1DD16bytes分区表2
1DE~1ED16bytes分区表3
1EE~1FD16bytes分区表4
BRID部分1FE~1FF2bytes结束标志,必须是55AA

二、获取主引导扇区数据

1、软件下载

可以利用winhex软件获取硬盘的数据,下载链接。

2、软件使用

比如查看我的U盘的主引导扇区的数据,步骤如下。

(1)以管理员方式打开winhex软件,在菜单栏中选择工具,然后选择打开磁盘。

(2)窗口内容如下图,从中可以获知整个硬盘的数据。

或者,如果要查看某部分的内容,选中该部分然后双击即可,比如查看主引导扇区内容,双击“起始扇区”即可。

或者,选中某个部分,然后在ANSI ASCII区域下拉菜单中选择“分区表(模板)”,可以获取该部分一些信息。

 

 

三、硬盘分区表的简介

1、16字节含义

硬盘分区表由4个分区的信息组成,每个分区用16字节描述,共4*16=64字节。

每个分区的16字节表示的含义如下: 

字节编号描述
第1字节

表示分区状态,80H表示活动分区,00H表示非活动分区

第2、3、4字节

表示本分区的起始磁头号、扇区号、柱面号,其中:

        磁头号——第2字节;

        扇区号——第3字节的低6位;

        柱面号——为第3字节高2位+第4字节8位。

第5字节

表示文件系统类型,其中:

        00H——该分区没有指定;

        06H——FAT16基本分区;

        0BH——FAT32基本分区;

        05H——扩展分区;

        07H——NTFS分区;

        0FH——(LBA模式)扩展分区;

        83H——Linux分区。

第6、7、8字节

表示本分区的结束磁头号、扇区号、柱面号,其中:

        磁头号——第6字节;

        扇区号——第7字节的低6位;

        柱面号——第7字节的高2位+第8字节8位。

第9、10、11、12字节本分区的逻辑起始扇区号 ,或者说本分区之前已用的扇区数,或者说本分区起始逻辑扇区号与逻辑0扇区号之差
第13、14、15、16字节本分区总的扇区数。由此可以看出,总的扇区数用4个字节表示,所以最多有2的32次方个扇区,每个扇区512字节,则每个分区最大是2TB。

2、例子说明

(1)U盘只有一个分区时

利用winhex软件查询我的U盘,显示如下:

可知该U盘只有一个分区,分区信息是“00 20 21 00 0C FE FF FF 00 08 00 00 00 30 CA 01”,表示的含义如下:

00,表示这个分区是非活动分区,系统不会从这个分区启动。

20 21 00,其中(20)16=(0010 0000)2=(32)10,(21)16=(0010 0001)2=(33)10,(10 0001)2=(33)10,(00 0000 0000)2=(0)10,表示这个分区的起始扇区是(磁头32,柱面0,扇区33)。

0C,表示fat32文件系统。

FE FF FF,其中(FE)16=(1111 1110)2=(254)10 、(FF)16=(1111 1111)2、(11 1111)2=(63)10,(11 1111 1111)2=(1023)10,表示这个分区的结束扇区是(磁头254,柱面1023,扇区63)。

00 08 00 00,反向是00 00 08 00,转为十进制是2048,表示该分区前面已经有2048个扇区。

00 30 CA 01,反向是01 CA 30 00,转为十进制是30027776,表示该分区共有30027776个扇区,即(磁头32,柱面0,扇区33)至(磁头254,柱面1023,扇区63)共有30027776个扇区。

1个扇区512字节,所以该分区大小为30027776*512/1024/1024/1024=15G。


(2)U盘有几个分区时

假如将我的U盘分成以下4个分区(分区方法见参考内容9):

 我们利用winhex来看一下该U盘的主引导扇区的数据。

第一个分区表的信息是“80 20 21 00 07 35 70 05 00 08 00 00 00 00 40 00”,表示含义如下:

80,表示这个分区是活动分区,系统将从这个分区启动。

20 21 00,(20)16=(32)10,(21)16=(0010 0001)2,(10 0001)2=(33)10,(00 0000 0000)2=(0)10,表示这个分区的起始扇区是(磁头号32,扇区33,柱面0)。

07,表示这个分区的文件系统类型是NTFS分区。

35 70 05 ,(35)16=(53)10,(70)16=(0111 0000)2,(11 0000)2=(48)10,(01 0000 0101)2=(261)10,表示这个分区的结束扇区是(磁头号53,扇区48,柱面261)。

00 08 00 00,反过来是00 00 08 00,转化为十进制是2048,表示本分区起始的扇区号是2048。

00 00 40 00,反过来是00 40 00 00,转为十进制是4194304,表示本分区总共有4194304个扇区。一个扇区是512字节,所以本分区大小是4194304*512/1024/1024/1024=2GB,与上面相符。

 同理分析第二分区表的信息“00 35 71 05 07 60 D1 0F 00 08 40 00 00 00 80 00”可得:

下面分析第三个分区表信息“00 60 D2 0F 0F FE FF FF 00 08 C0 00 00 30 0A 01

00,表示这个分区是非活动分区。

60 D2 0F,(60)16=(96)10,(D2)16=(1101 0010)2, (01 0010)2=(18)10,(11 0000 1111)2=(783)10,这表示本分区的起始扇区是(磁头号96,扇区号18,柱面号783)。

0F,表示这个分区是扩展分区。

FE FF FF,(FE)16=(254)10,(FF)16=(1111 1111)2,(11 1111)2=(63)10,(11 1111 1111)2=(1023)10,这表示这个扩展分区的结束扇区是(磁头号254,扇区号63,柱面号1023)。

00 08 C0 00,反过来是00 C0 08 00,转为十进制是12584960,表示这个扩展分区的起始扇区号是12584960。

00 30 0A 01,反过来是01 0A 3000,转为十进制是17444864,表示这个扩展分区共有17444864个扇区,则这个扩展分区的大小是17444864*512/1024/1024/1024=8G。

扩展分区又可以划分为许多分区,比如我的U盘就分为了G区与F区。

扩展分区表中的信息,尤其是“起始扇区号”,犹如一个指针,指向(由逻辑分区所组成的磁盘的第一个扇区)“主引导扇区”,这个“主引导扇区”又包含着64字节的分区表,每16个字节表示一个逻辑分区的信息。其中某个逻辑分区又可以用作扩展分区,指向另一个“主引导扇区”,这样就形成了分区链,可以划分许多分区。

上面写到,扩展分区的起始的扇区号是12584960,偏移量是12584960*512=(180100000)16=(6443499520)10,我们在winhex中转到这个位置,如下。

分析其中一个分区表信息“00 20 21 00 07 60 D1 0F 00 08 00 00 00 00 C0 00”,如下:

00,表示这个分区是非活动分区。

20 21 00,(20)16=(32)10,(21)16=(0010 0001)2,(10 0001)2=(33)10,(00 0000 0000)2=(0)10,这表示这个分区的起始扇区是(磁头号32,扇区号33,柱面号0)。

07,表示这个分区的文件系统类型是NTFS。

60 D1 0F,(60)16=(96)10,(D1)16=(1101 0001)2,(01 0001)2=(17)10,(11 0000 1111)2=(783)10,这表示这个分区的结束扇区是(磁头好96,扇区号17,柱面号783)。

00 08 00 00,反过来是00 00 08 00,转为十进制是2048,这表示这个分区的起始逻辑扇区号是2048。

00 00 C0 00,反过来是00 C0 00 00,转为十进制是12582912,这表示这个分区总共有12582912个扇区,则这个分区的大小是12582912*512/1024/1024/1024=6G。可见,与U盘的G区的大小是一样的。

 

 

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

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

相关文章

Redis配置文件参数说明

配置文件参数说明: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile …

movi命令(do_movi函数的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、do_movi函数分析 当执行movi相关命令时,实际执行的是do_movi函数。 x210 # help movi movi init - Initialize moviNAND and show card info movi read {u-boot | kernel} {addr} - Read …

[LeetCode]Search Insert Position

原题链接:http://oj.leetcode.com/problems/search-insert-position/ 题意描述: Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You …

如何将镜像烧写至iNand(fastboot命令的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 u-boot sdfuse命令烧录分析----从SD卡加载内核_white_bugs的博客-CSDN博客 一、将镜像文件烧写至iNand的步骤 步骤1:完成准备工作。 (1)准备fastboot相关软件包…

你知道自己执行的是哪个jre吗?

多个JRE 我在做《Java日志工具之java.util.logging.Logger》的DEMO时,修改java.util.logging.Logger的配置文件,怎么修改都不起作用,因此打印了系统属性"java.home",才知道自己使用的是 C:\Program Files\Java\jre7 &am…

无需写try/catch,也能正常处理异常

对于企业应用的开发者来说,异常处理是一件既简单又复杂的事情。说其简单,是因为相关的编程无外乎try/catch/finallythrow而已;说其复杂,是因为我们往往很难按照我们真正需要的策略来处理异常。我一直有这样的想法,理想…

vs2010插件

转载于:https://www.cnblogs.com/tinytiny/p/3608030.html

leetcode1——两数之和

一、提出问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按…

如何脱离SDK,使用DW5.5和phonegap以及JQMobile搭建开发环境

也许有些人是学C出身,对于Java几乎不了解。一时心血来潮想学学android开发,于是下载了Eclipse,安装了SDK,有模有样的学习起来。也许是懒惰了,对于java一直总是提不起精神。于是确定使用DreamweaverJquery mobilePhoneg…

leetcode2——两数相加

一、提出问题 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以…

32为Linux安卓AVD启动报错

2019独角兽企业重金招聘Python工程师标准>>> 当使用android的AVD时提示以下错误:Starting emulator for AVD NexusOne ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use them you will have to do at least one of the following:…

填问卷,得《2015中国呼叫中心知识库现状与问题报告》

为了解中国呼叫中心知识库运营现状和存在的主要问题,掌握呼叫中心知识库的总体发展水平,中国知识管理中心(KMCenter)面向全国呼叫中心发起“2015中国呼叫中心知识库现状与问题调研”活动,主要通过问卷调研和典型用户访…

ARM汇编的特点

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、LDR/STR架构 ARM采用RISC架构,CPU本身不能直接读取内存,需要先将内存中的内容加载到CPU的通用寄存器中才能被CPU处理。换言之,寄存器是CPU和内存进行数据交换的中介。…

持久代是方法区还是堆中的?

2019独角兽企业重金招聘Python工程师标准>>> 昨天跟一哥们讨论,持久代在方法区,属不属于堆中的? 它的意思是持久代不属于堆,属于方法区,而我则认为持久代属于方法区也属于堆。 结果今天上网一查,还真的是。下面是解释: 持久代”仅…

Web 前端攻防(2014版)-baidu ux前端研发部

http://fex.baidu.com/articles/page2/ Web 前端攻防(2014版) zjcqoo | 20 Jun 2014禁止一切外链资源 外链会产生站外请求,因此可以被利用实施 CSRF 攻击。 目前国内有大量路由器存在 CSRF 漏洞,其中相当部分用户使用默认的管理账…

Silverlight动态设置WCF服务Endpoint

2013-02-02 05:57 by jv9, 1763 阅读, 3 评论, 收藏, 编辑 去年12月收到一位朋友的邮件,咨询Silverlight使用WCF服务,应用部署后一直无法访问的问题,通过几次交流,才发现在他的项目中,全部使用静态URL作为WCF服务的End…

第4季3:Hi3518e的sensor接口引脚复用设置(load3518e文件)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 在第2、3季的内容中,在板载系统的配置脚本即/etc/profile文件中,都有如下这句代码: ./load3518e -i -sensor ar0130 -osmem 32 -total 64 在第4季1&#xff1a…

iOS游戏开发 几个有利工具

2019独角兽企业重金招聘Python工程师标准>>> iOS游戏开发 几个有利工具 本文介绍的是iOS游戏开发 几个有利工具,为友们介绍几款开发工具,游戏爱好者记住了!先来看内容。 AD: iOS游戏开发 几个有利工具是本文要介绍的内…

关于editor网页编辑器ueditor.config.js 配置图片上传

最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的不够…

[歪谈]拽一个贵人出来给你当炮架子

[歪谈]拽一个贵人出来给你"当炮架子" 我们在古装神话剧中经常会听到某个“先知”对前来算命的人说:你会在某某时刻遇到你的贵人。而这个贵人会在事业上助你一臂之力。 这里有个问题:贵人到底是什么?我们怎样去寻找我们的贵人。 前几…