Там и файловые системы и размеры партиций и бутовые приоритеты и все остальное по аналогии с mbr на x86тых. Формат полный я кстати кидал в артикле про загрузку оси (где логи снупи показывающие как и что загружается). Там в самом начале речь про rdb идет. Если по русски то:
--
Если вы делаете на винте более одну или больше партиций, то автоматически будете иметь RDB (RigidDiskBlock) в котором содержится много интересной информации включая такую как:
a). сколько имеется партиций на винте
b). где находятся бутблоки этих партиций. (или один бутблок если партиция одна)
c). физическая и логическая инфа о винте
d). и тд.
Полная структура RDB описана в include/devices/hardblocks.h (осевые инклуды идущие или в NDK, или с компиляторами, или как угодно еще).
- Код: Выделить всё
struct RigidDiskBlock {
ULONG rdb_ID; /* 4 character identifier (ID) */
ULONG rdb_SummedLongs; /* size of this checksummed structure */
LONG rdb_ChkSum; /* block checksum (longword sum to zero) */
ULONG rdb_HostID; /* SCSI Target ID of host */
ULONG rdb_BlockBytes; /* size of disk blocks */
ULONG rdb_Flags; /* see below for defines */
/* block list heads */
ULONG rdb_BadBlockList; /* optional bad block list */
ULONG rdb_PartitionList; /* optional first partition block */
ULONG rdb_FileSysHeaderList; /* optional file system header block */
ULONG rdb_DriveInit; /* optional drive-specific init code */
/* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
ULONG rdb_Reserved1[6]; /* set to $ffffffff */
/* physical drive characteristics */
ULONG rdb_Cylinders; /* number of drive cylinders */
ULONG rdb_Sectors; /* sectors per track */
ULONG rdb_Heads; /* number of drive heads */
ULONG rdb_Interleave; /* interleave */
ULONG rdb_Park; /* landing zone cylinder */
ULONG rdb_Reserved2[3];
ULONG rdb_WritePreComp; /* starting cylinder: write precompensation */
ULONG rdb_ReducedWrite; /* starting cylinder: reduced write current */
ULONG rdb_StepRate; /* drive step rate */
ULONG rdb_Reserved3[5];
/* logical drive characteristics */
ULONG rdb_RDBBlocksLo; /* low block of range reserved for hardblocks */
ULONG rdb_RDBBlocksHi; /* high block of range for these hardblocks */
ULONG rdb_LoCylinder; /* low cylinder of partitionable disk area */
ULONG rdb_HiCylinder; /* high cylinder of partitionable data area */
ULONG rdb_CylBlocks; /* number of blocks available per cylinder */
ULONG rdb_AutoParkSeconds;/* zero for no auto park */
ULONG rdb_HighRDSKBlock; /* highest block used by RDSK */
/* (not including replacement bad blocks) */
ULONG rdb_Reserved4;
/* drive identification */
char rdb_DiskVendor[8];
char rdb_DiskProduct[16];
char rdb_DiskRevision[4];
char rdb_ControllerVendor[8];
char rdb_ControllerProduct[16];
char rdb_ControllerRevision[4];
ULONG rdb_Reserved5[10];
};
struct PartitionBlock {
ULONG pb_ID; /* 4 character identifier */
ULONG pb_SummedLongs; /* size of this checksummed structure */
LONG pb_ChkSum; /* block checksum (longword sum to zero) */
ULONG pb_HostID; /* SCSI Target ID of host */
ULONG pb_Next; /* block number of the next PartitionBlock */
ULONG pb_Flags; /* see below for defines */
ULONG pb_Reserved1[2];
ULONG pb_DevFlags; /* preferred flags for OpenDevice */
UBYTE pb_DriveName[32]; /* preferred DOS device name: BSTR form */
/* (not used if this name is in use) */
ULONG pb_Reserved2[15]; /* filler to 32 longwords */
ULONG pb_Environment[20]; /* environment vector for this partition */
ULONG pb_EReserved[12]; /* reserved for future environment vector */
};
Например у меня была fastata3, и я из своего 40гигового винта зделал 10винтов по 4гига (потому как scsi.device в связи с тем какие дрова и как это все прикручено считал что это не 10 партиций, а 10 винтов).
Вот мой RDB в "первого" (если так можно сказать) винта:
- Код: Выделить всё
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 52 44 53 4B 00 00 00 40 54 6E E4 C2 00 00 00 07 RDSK...@Tn¤‚....
00000010 00 00 02 00 00 00 00 10 FF FF FF FF 00 00 00 01 ........пппп....
00000020 00 00 00 02 FF FF FF FF FF FF FF FF FF FF FF FF ....пппппппппппп
00000030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF пппппппппппппппп
00000040 00 00 20 82 00 00 00 3F 00 00 00 10 00 00 00 01 .. '...?........
00000050 00 00 20 82 00 00 00 00 00 00 00 00 00 00 00 00 .. '............
00000060 00 00 20 82 00 00 20 82 00 00 00 03 00 00 00 00 .. '.. '........
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000080 00 00 00 00 00 00 07 DF 00 00 00 02 00 00 20 81 .......џ...... _
00000090 00 00 03 F0 00 00 00 00 00 00 00 D1 00 00 00 00 ...а.......‘....
000000A0 53 54 33 34 30 30 31 36 41 20 20 20 20 20 20 20 ST340016A
000000B0 20 20 20 20 20 20 20 20 34 47 31 39 00 00 00 00 4G19....
000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...skip zeroes...
000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000200 50 41 52 54 00 00 00 40 62 EE 90 5A 00 00 00 07 PART...@b®_Z....
00000210 FF FF FF FF 00 00 00 01 00 00 00 00 00 00 00 00 пппп............
00000220 00 00 00 00 03 44 48 30 30 45 5F 4D 45 00 00 00 .....DH00E_ME...
...skip zeroes...
00000280 00 00 00 10 00 00 00 80 00 00 00 00 00 00 00 10 ......._........
00000290 00 00 00 01 00 00 00 3F 00 00 00 02 00 00 00 00 .......?........
000002A0 00 00 00 00 00 00 00 02 00 00 20 81 00 00 01 2C .......... _...,
000002B0 00 00 00 00 00 FF FF FF 7F FF FF FE 00 00 00 00 .....пппппо....
000002C0 53 46 53 00 00 00 00 00 00 00 00 00 00 00 00 00 SFS.............
000002D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000002E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000002F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Т.е. глазом, по чисто ascii можно глянуть, что в этом RDB указано помимо всего прочего:
1. ST340016A
2. DH0 (моя бутовая партиция)
3. она SFS
Ну и тд. В целом чтобы совсем все точно знать (если оно надо), можно взять вот этот файлик где структуры все записаны, здампить свой rdb и байт за байтом все посчитать и проверить как оно на самом деле и тд.