MBR分区表的简介

news/2024/7/8 2:17:21

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

参考内容

(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://lihuaxi.xjx100.cn/news/140117.html

相关文章

个税计算器

第1关:个税计算器 任务描述 输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ 输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬…

Linux xargs 命令学习

xargs的基本功能如下, xargs,是给命令传递参数的一个过滤器,也是组合多个命令的一个工具; xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据; …

Spring mvc中Controller如何设置接受参数的默认值呢?

转自: Spring mvc中Controller如何设置接受参数的默认值呢? 在spring日常开发中,我们如何为方法设置参数的默认值呢,下文笔者将一一道来,如下所示 实现思路:使用RequestParam注解借助defaultValue属性即可设置默认值例: public ResponseBody Object query(RequestParam(va…

springboot图书借阅管理系统 java读书心得借书卡管理系统

本系统的读者可分为前台普通读者、后台管理员两类。 本系统共分成两个界面:一个界面用于管理员登录,主要负责进行扣减金额和查看更新图书管理;另外一个界面用于普通读者登录,主要负责浏览图书种类,图书借阅之后方可进行…

蓝桥杯入门即劝退(六)等差素数数列

九层之台,起于垒土,你我皆是垒土人✔ 愿我的文章对你有所帮助! 欢迎关注点赞评论,共同学习,共同进步! 一、题目 2,3,5,7,11,13,.... 是素数序列。 类似:7,37,67,97,127,157, 这样完全由素数组成…

python模拟退火算法(应用篇1)--求解一元函数极值

目录算法模型基本思想带约束条件的一元函数函数表达式及图像退火算法实现求解过程可视化求解过程分析算法模型 解空间bound、目标函数func、初始解s 基本思想 设置参数:初始温度T、初始解s0s_0s0​、降温系数δ\deltaδ,定义目标函数func,…

Leetcode《图解数据结构》刷题日志【第三周】(2022/10/31-2022/11/06)

leetcode《图解数据结构》刷题日志【第三周】(2022/10/31-2022/11/06)1. 剑指Offer 59 -II.队列的最大值1.1 题目1.2 解题思路1.3 数据类型功能函数总结1.4 java代码2. 剑指Offer 67.将字符串转换成整数2.1 题目2.2 解题思路2.3 数据类型功能函数总结2.4…

源码分析:tb-core 的作用

通过前面的kafka消息队列分析,其他服务会将消息发送给 tb-core 【tb-core消息生产端】 TbClusterService.java 有下列相关的地方会将消息推送给tb-core: public interface TbClusterService { //推送消息到tb-core public void pushMsgToCore(TopicPartitionInfo var1, UU…