2.3.2 Apple磁盘布局

2.3.2  Apple磁盘布局

由于Apple的构造不同,Apple磁盘没有MBR磁盘中所特有的主引导记录,所以它的0号扇区只用于记录磁盘的一些基本信息。如图2.23所示为一个Apple磁盘的0号扇区(为节省篇幅,只显示了该扇区的前面部分,后面全部为0的部分省略)。可以看到,Apple磁盘的0号扇区只有很少的内容,图2.23中加底纹部分的含义如下。

(1) 0x00~0x01:2个字节,这两个字节一定为0x4552(ER)。

(2) 0x02~0x03:2个字节,每扇区字节数,一般为512。

(3) 0x04~0x07:4个字节,本磁盘扇区数。

下面给出其数据结构定义,有兴趣的读者可以自行研究:

Struct Block0{ 
  1. Uint16 sbSig;         //标识0X4552
    Uint16 sbBlkSize;     //扇区(逻辑块)大小0200,即512字节
    Uint32 sbBlkCount;    //扇区数00008200,即33280个扇区
    Uint16 sbDevType;
    Uint16 sbDevID;
    Uint32 sbData;
    Uint16 sbDrvrCount;
    Uint32 ddBlock;
    Uint16 ddSize;
    Uint16 ddType;
    Uint16 ddPad[134];
}; 
typedef struct Block() Block0;

Apple磁盘也不像MBR磁盘那样在引导扇区中建立分区表,而是单独使用一部分扇区存储分区表项(通常起始于整个磁盘的第二个扇区),而且这个分区表区域也有一个分区表项指向它,描述它的起始位置及大小信息,所以我们也可以把分区表区域称为"分区表分区"。 
提示:Apple分区体系没有分区数量限制,它的分区表可以描述任意个分区。

一个Apple磁盘的总体布局大致如图2.24所示。

可以看到,在Apple磁盘内,除0号扇区外,其他所有的区域都有分区表项指向它,包括分区表分区本身以及磁盘尾部的空闲空间。

2.3.3  分区表项数据结构