>>DOS分区体系的硬盘也叫MBR硬盘,0号扇区是主引导记录MBR,DOS分区体系的硬盘用分区表记录每个分区的类型起始位置和分区的大小。其中,分区表就在0号扇区内,所以0号扇区如果损坏,那么这个硬盘就不能正确识别分区。
>>DOS分区的使用范围:windows系统,Linux系统以及基于IA32平台FreeDBS和OpenDBS等操作系统都使用DOS分区体系。
>>Boot Sector(引导扇区)
Boot Sector也就是硬盘的第一个扇区,它由 MBR(Master Boot Record),DPT (Disk Partition Table)和Boot Record ID三部分组成。
1)主引导记录MBR 占用Boot Sector的前446个字节( 0 to 0x1BD ),存放系统主引导程序(它负责从活动分区中装载并运行系统引导程序)。
2)DPT 即主分区表 占用64个字节 (0x1BE to 0x1FD),记录了磁盘的基本分区信息,主分区表分为四个分区项,每项16字节,分别记录了每个主分区的信息(因此最多可以有四个主分区)。
3)Boot Record ID 即引导区标记 占用两个字节(0x1FE and 0x1FF),对于合法引导区,它等于0xAA55,这是判别引导区是否合法的标志。
winhex打开如下图:
下面研究分区表和Boot Record ID:
1、分区表:
首先,我的虚拟机磁盘结构如下:
>分区表结构如下:
下面用winhex看看分区表:
> 04 (分区类型):
00 未使用分区项
01 DOS12一种fat表为12位的分区主要用于早期小硬盘和部分软盘
05 EXTEND扩展分区的一种
06 BIGDOS即FAT16分区分区表为16位,每簇最大为32K,最大分区为2G
07 NTFS分区
0B FAT32分区分区表为32位
0C FAT32X分区与FAT32基本相同
0E BIGDOSX即FAT16分区扩展分区表为16位,每簇最大可以超过32K
0F EXTENDX扩展分区的一种
82 Linux主分区
83 Linux交换分区
>08-0B:分区的起始扇区号,
我打开虚拟机里的C盘后,发现我的第一分区不是63扇区开始,而是2048,
原因如下:
win7系统对硬盘的分区管理有所改变了。很多时候会在硬盘起始部分占用部分扇区数。这就造成了这种情况的出现。如果系统正常,不用太在意。不过如果出现问题。一定不要随意使用修复工具修复。因为很多修复工具是按照以前的63扇区起始来计算修复的。错误的操作会破坏数据的。
>0C-0F(分区大小):
打开C盘,查看C盘大小:
>再来看看第4个分区(扩展分区):
转到该扇区:
可以看到主扩展分区表(即记录逻辑分区的表)(关于主分区,扩展分区,逻辑分区可看上一篇随笔):
其中有一条表项,分区类型是07-->NTFS,第一个扇区2048
分区大小:20480:
顺便计算一下,一个扇区是512Byte(即0.5M),20480个扇区就是10240Byte(即10M)。正确对上实际值。
2、Boot Record ID
如果引导区标志不是0xAA55,将出现严重后果。
用winhex打开之前建立的虚拟磁盘,修改标志为0A55,然后保存
打开设备管理器,刷新设备(先卸载虚拟磁盘然后扫描)
然后打开磁盘管理界面就发现,显示虚拟磁盘没有初始化:
最后修改回0xAA55,重复上述步骤,虚拟磁盘变回可用的了。
原文地址:https://www.cnblogs.com/yxqxx/p/8972301.html