接着上次的说,我们来看看MBR中的DPT的含义。DPT就是磁盘分区表,一般我们所说的分区表都是指这里。DPT中的一项是16字节,每个字节的含义如下:
0x0000字节: 引导标志符,指明该分区是否为一个活动分区,就是可引导的分区。
0x0001字节: 开始磁头数,记录了这个分区开始的磁头数。
0x0002字节: 这个字节的前6位(0-5bit)被用来记录开始扇区数,后2位(6-7bit)用来配合记录开始柱面数
0x0003字节:这个字节和0x0003字节的高2位一起定义了开始柱面数,因此柱面数是由10bit定义的,最大数值为1023,组成柱面数的10bit中的最高2位为0x0003字节的6-7bit。
0x0004字节: 分区类型标志字节,这里定义好了各种分区类型,具体的偶下面给大家出个表。
0x0005字节: 结束磁头数,记录了这个分区结束的磁头数。
0x0006字节: 结束扇区数,同样只使用了0-5bit,高2位6-7bit被用来配合记录结束柱面数
0x0007字节: 结束柱面数,约定同开始柱面数。
0x0008-0x000B: 相对扇区数,从该磁盘的开始位置,到分区开始位置的扇区数目。
0x000C-0x000F: 本分区总扇区数,记录该分区中总共的扇区数。
可以看到,磁头数是以一个字节来存放,扇区是以6bit来存放,柱面是以10bit来存放的。那么按照CHS模型,最大可以线性寻址的磁盘空间为:
256个磁头*63个扇区*1024个柱面*每扇区52字节 = 8455716864Byte 也就是常说的,8.4GB。
那么超过8.4GB的分区怎么办呢,其实现在的OS都不再利用CHS模型来管理超过8.4GB的分区,而是使用分区表中最后的8个字节(0x0008-0x000B和0x000C-0x000F)的扇区数来进行管理,因此支持的最大分区容量为:
2^32*512=2048GB=2TB 一般来说,都够用了…… - -
因此在超过8.4GB的分区的分区表上 CHS参数是什么已经没所谓了,一般结束CHS参数用 FEH FFH FFH 来填充CHS。
分区在物理上并不是一个紧挨着一个的,一个分区和另一个分区之间,通常是有保留扇区来分隔的。保留扇区不只起到分隔的作用。通常来说是这样:
保留扇区+第一个分区+保留扇区+第二个分区…………。
保留扇区里,一般按照分区的类型保存着MBR或者EBR扇区! 注意,DBR并不保存在这里,DBR保存在分区真正起始的第一个扇区中。保留扇区的数目,是由DBR中的参数来决定的,在分区表的0x0008-0x000B字段中,是不会记入保留扇区数的。意思是:假设第一个分区占用了64个扇区,第一个分区和第二分区之间保留了16个扇区,那么第二个分区的分区表上0x0008-0x000B中记录的将是80而不是64,换言之,隐藏扇区通常是不可见的。而第二个分区的DBR就保存在80开始的扇区中,而不是保留扇区中。
理解这些概念偶觉的比较重要,它会让你明白磁盘分区的物理排布,和重要的MBR以及EBR和DBR的保存位置 :)
最后给出一张表格,列出了常见的分区类型(对应于分区表0x0004字节)
00 空
01 Fat32
02 XENIX ROOT
03 XENIX USR
04 Fat16(<32MB)
05 Extended
06 Fat16
07 HPFS/NTFS
08 AIX
09 AIC bootable
0A OS/2 Boot Manage
0B Win95 Fat32
0C Win95 Fat32
0E Win95 Fat16
0F Win95 Extended(>8GB)
10 OPUS
11 Hidden Fat12
12 Compaq Diagnost
14 Hideen Fat16(<32MB)
16 Hidden Fat16
17 Hidden HPFS/NTFS
18 AST Window Swap
1B Hidden Fat32
1C Hideen Fat32 (Using LBA-Mode INT 13 Extensions)
1E Hidden LBA VFAT partition
24 NEC DOS
3C Partition Magic
40 Venix 80286
41 PPC PreP Boot
42 SFS
4D QNX4.x
4E QNX4.x 2nd part
4F QNX4.x 3rd part
50 Ontrack DM
51 Ontrack DM6 Aux
52 CP/M
53 oNtRACK DM6 Aux
54 onTrack DM6
55 EZ-Drive
56 Golden Bow
5c Priam Edisk
61 Speed Stor
63 GNU HURD or Sys
64 Novell Netware
65 Novell Netware
70 Disk Secure Mult
75 PC/IX
80 Old Minix
81 Minix/Old Linux
82 Linux Swap
83 Linux
84 OS/2 Hidden C:
85 Linux extended
86 NTFS Volume set
87 NTFS Volume set
93 Amoeba
94 Amoeba BBT
A0 IBM Thinkpad hidden
A5 BSD/386
A6 Open BSD
A7 NextSTEP
B7 BSDI fs
B8 BSDI Swap
BE Solaris boot partition
C0 DR-DOS/Novell DOS secured partition
C1 DRDOS/sec
C4 DRDOS/sec
C6 DRDOS/sec
C7 Syrinx
DB COP/M/CTOS
E1 DOS access
E3 DOS R/O
E4 SpeedStor
EB BeOS fs
F1 SpeedStor
F2 Dos 3.3+ secondary partition
F4 SpeedStor
FE LAN step
FF BBT
以上表格来自网上,很多分区类型见都没见过,所以正确与否请大家一起修订 :) 下次偶们来看下DBR中的各种参数,DBR就是真正负责引导OS的OS引导扇区了。 :)