UDFの基礎を踏まえて、RD-X4のHDDを見る。 なお、IDE HDDのセクタ長は512バイトであるが、ここでは、ファイルシステムの設定どおり、セクタ長を2048バイトとして記述していく。 256セクタ目までは、 |セクタ|識別子| |0~15|未使用| |16|Beginning Extended Area Descriptor| |17|Volume Structure Descriptor(NSR03 Descriptor)| |18|Terminating Extended Area Descriptor| |19~31|未使用| |32|Primary Volume Descriptor | |33|Implementation Use Volume Descriptor| |34|Partition Descriptor| |35|Logivcal Volume Descriptor| |36|Unallocated Space Descriptor| |37|Terminating Descriptor| |38~47|未使用| |48|Logical Volume Integrity Descriptor| |49|Terminating Descriptor| |50~255|未使用| |256|Anchor Volume Descriptor Pointer| の様になっている。 Partition Descriptorには、 |Partition Starting Location|0x110| |Partition Length|0x0746944a| の値が記録されている。 これらは、論理セクタの配置で、 -論理セクタ(0)は、物理セクタ0x110から始まる -論理セクタは、0x0746944a(122065994)セクタある という意味になる。 このセクタ数に関しては、Logical Volume Integrity Descriptorでも、 |Size Table|0x0746944a| と同じ値が指定されている。 また、Anchor Volume Descriptor Pointerは、 |Main Volume Descriptor Sequence Extent|0x20セクタ| |Reserve Volume Descriptor Sequence Extent|0x07469570セクタ| と、Volume Descriptor Sequenceの開始位置を指定しているらしい。 と言う事は、0x0746944aなどの値と、Allocation情報を変える事で、500GBなどの容量にする事が出来るのか? 論理セクタ0に相当する、物理セクタ0x110は、 08 03 03 00 C9 00 00 00 B8 FB 08 00 00 00 00 00 45 69 74 00 29 8D 0E 00 00 00 00 00 00 00 00 00 と、0x0308というtag値となっていて、一見、ゴミのようにも見えるのだが、Descriptor Tagの -TagChecksum -TagLocation の各値がそれらしいものになっている。 論理セクタ466以降は、 |セクタ|識別子| |466(0x1d2)|File Set Descriptor| |467(0x1d3)|Terminating Descriptor| |468(0x1d4)|File Entry| |469(0x1d5)|File Identifier Descriptor| の様なDescriptorが記述されている。 ***File Set Descriptor ルートディレクトリを格納している識別子の位置情報などの、ファイル構造が定義されている 0000 00 01 03 00 2C 00 00 00 76 EE F0 01 D2 01 00 00 0010 1C 12 D7 07 01 15 10 32 18 56 5A 00 03 00 03 00 0020 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 0030 00 4F 53 54 41 20 43 6F 6D 70 72 65 73 73 65 64 0040 20 55 6E 69 63 6F 64 65 00 00 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070 08 54 53 42 30 30 30 33 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00F0 00 4F 53 54 41 20 43 6F 6D 70 72 65 73 73 65 64 0100 20 55 6E 69 63 6F 64 65 00 00 00 00 00 00 00 00 0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0130 08 55 44 46 20 46 69 6C 65 20 53 65 74 00 00 00 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0190 00 08 00 00 D4 01 00 00 00 00 00 00 00 00 00 00 01A0 00 2A 4F 53 54 41 20 55 44 46 20 43 6F 6D 70 6C 01B0 69 61 6E 74 00 00 00 00 00 02 00 00 00 00 00 00 -0x190(400)バイト目の、Root Directory ICBの値が、「セクタ0x1d4から0x800バイト」と記述されているので、ルートディレクトリのFile Entryが論理セクタ0x1d4にある(はず) ***File Entry ディレクトリの属性情報で、Extended Attribute Header Descriptorをパラメータとして持つことが出来る 0000 05 01 03 00 35 00 00 00 AF 5B 4C 01 D4 01 00 00 0010 00 00 00 00 04 00 00 00 01 00 00 04 D4 01 00 00 0020 00 00 20 00 FF FF FF FF FF FF FF FF D6 5A 00 00 0030 07 00 00 00 00 00 00 00 48 01 00 00 00 00 00 00 0040 01 00 00 00 00 00 00 00 1C 12 D7 07 01 15 10 32 0050 10 4A 00 00 1C 12 D7 07 01 15 10 32 10 4A 00 00 0060 1C 12 D7 07 01 15 10 32 0D 13 1E 00 01 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 2A 54 4F 53 48 49 42 41 20 52 54 52 20 46 53 0090 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00A0 00 00 00 00 00 00 00 00 A4 00 00 00 08 00 00 00 00B0 06 01 03 00 71 00 00 00 C9 C1 08 00 D4 01 00 00 00C0 38 00 00 00 FF FF FF FF 05 00 00 00 01 00 00 00 00D0 20 00 00 00 0C 00 00 00 01 00 00 00 1C 12 D7 07 00E0 01 15 10 32 0D 13 1E 00 00 08 00 00 01 00 00 00 00F0 38 00 00 00 08 00 00 00 00 2A 55 44 46 20 44 56 0100 44 20 43 47 4D 53 20 49 6E 66 6F 00 00 00 00 00 0110 00 02 00 00 00 00 00 00 48 05 00 00 03 00 00 00 0120 00 08 00 00 01 00 00 00 34 00 00 00 04 00 00 00 0130 00 2A 55 44 46 20 46 72 65 65 45 41 53 70 61 63 0140 65 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 0150 60 05 00 00 48 01 00 00 D5 01 00 00 00 00 00 00 -0xa8(168)バイト目は、Length of Extended Attribute(0xa4バイト) -0xac(172)バイト目は、Length of Allocation Descriptor(0x08バイト) -0xb0(176)バイト目からは、Extended Attribute領域で、Extended Attribute Header Descriptorが0xa4(164)バイト配置されている -0x158(344)バイト目からは、Allocation Descriptorで、このディレクトリに対するFile Identifier Descriptorの論理セクタ位置が指定されている(→ 論理セクタ0x01d5にFile Identifier Descriptorが存在する) ***File Identifier Descriptor ディレクトリや、ファイルの名前、開始位置などの情報が配列状に格納されている 0000 01 01 03 00 F1 00 00 00 53 AB 18 00 D5 01 00 00 0010 01 00 0A 00 00 08 00 00 D4 01 00 00 00 00 00 00 0020 00 00 00 00 00 00 00 00 01 01 03 00 E3 00 00 00 0030 A0 48 20 00 D5 01 00 00 01 00 02 09 00 08 00 00 0040 E0 01 00 00 00 00 00 00 12 00 00 00 00 00 08 54 0050 53 5F 4D 41 4E 47 52 00 01 01 03 00 C1 00 00 00 0060 A3 23 20 00 D5 01 00 00 01 00 02 09 00 08 00 00 0070 00 02 00 00 00 00 00 00 13 00 00 00 00 00 08 54 0080 53 5F 54 48 4D 4E 4C 00 01 01 03 00 52 00 00 00 0090 EF 68 20 00 D5 01 00 00 01 00 02 07 00 08 00 00 00A0 20 02 00 00 00 00 00 00 14 00 00 00 00 00 08 54 00B0 53 5F 4C 4F 47 00 00 00 01 01 03 00 71 00 00 00 00C0 D0 A6 20 00 D5 01 00 00 01 00 02 09 00 08 00 00 00D0 40 02 00 00 00 00 00 00 15 00 00 00 00 00 08 54 00E0 53 5F 4C 42 52 52 59 00 01 01 03 00 37 00 00 00 00F0 08 34 20 00 D5 01 00 00 01 00 02 09 00 08 00 00 0100 80 03 00 00 00 00 00 00 18 00 00 00 00 00 08 54 0110 53 5F 48 44 44 41 56 00 01 01 03 00 4F 00 00 00 0120 08 4C 20 00 D5 01 00 00 01 00 02 09 00 08 00 00 0130 20 52 04 00 00 00 00 00 21 00 00 00 00 00 08 54 0140 53 5F 50 46 44 41 54 00 00 00 00 00 00 00 00 00 -0x00バイト目は、最初のFile Identifier Descriptor --0x12(18)バイト目は、File Characteristicsで、b1:ディレクトリ、b2:親ディレクトリ情報となり、この場合、0x0aなので、親ディレクトリの情報を格納しているFile Identifier Descriptorとなる --0x14(18)バイト目は、ICBの位置で、この場合のICBは、File Entryで、論理セクタ0x1d4からの0x800バイトとなっている -0x28(40)バイト目は、二番目のFile Identifier Descriptor --0x3a(58)バイト目は、File Characteristicsで、0x02なので、ディレクトリエントリとなる --0x3c(60)バイト目は、ICBの位置で、この場合、論理セクタ0x1e0からの0x800バイトとなっている --0x4e(78)バイト目は、ディレクトリ名で、"TS_MANGR"となる TS_MANGRディレクトリのFile Entry(論理セクタ0x1e0)を見ると、 0000 05 01 03 00 7C 00 00 00 FE 47 4C 01 E0 01 00 00 0010 00 00 00 00 04 00 00 00 01 00 00 04 00 00 00 00 0020 00 00 00 00 FF FF FF FF FF FF FF FF D6 5A 00 00 0030 01 00 00 00 00 00 00 00 C0 01 00 00 00 00 00 00 0040 01 00 00 00 00 00 00 00 1C 12 D7 07 01 15 10 32 0050 37 41 3C 00 1C 12 D7 07 01 15 10 32 37 41 3C 00 0060 1C 12 D7 07 01 15 10 32 0E 14 50 00 01 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 2A 54 4F 53 48 49 42 41 20 52 54 52 20 46 53 0090 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00A0 12 00 00 00 00 00 00 00 A4 00 00 00 08 00 00 00 00B0 06 01 03 00 7D 00 00 00 C9 C1 08 00 E0 01 00 00 00C0 38 00 00 00 FF FF FF FF 05 00 00 00 01 00 00 00 00D0 20 00 00 00 0C 00 00 00 01 00 00 00 1C 12 D7 07 00E0 01 15 10 32 0E 14 50 00 00 08 00 00 01 00 00 00 00F0 38 00 00 00 08 00 00 00 00 2A 55 44 46 20 44 56 0100 44 20 43 47 4D 53 20 49 6E 66 6F 00 00 00 00 00 0110 00 02 00 00 00 00 00 00 48 05 00 00 03 00 00 00 0120 00 08 00 00 01 00 00 00 34 00 00 00 04 00 00 00 0130 00 2A 55 44 46 20 46 72 65 65 45 41 53 70 61 63 0140 65 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 0150 60 05 00 00 C0 01 00 00 F0 01 00 00 00 00 00 00 -実は、0x1d4と大差なく、Allocation Descriptorの値が、0x1f0となっている(→ 論理セクタ0x01f0にFile Identifier Descriptorが存在する) TS_MANGRディレクトリのFile Identifier Descriptor(論理セクタ0x1f0)を見ると、 0000 01 01 03 00 0C 00 00 00 53 AB 18 00 F0 01 00 00 0010 01 00 0A 00 00 08 00 00 D4 01 00 00 00 00 00 00 0020 00 00 00 00 00 00 00 00 01 01 03 00 9B 00 00 00 0030 EB 9A 20 00 F0 01 00 00 01 00 00 09 00 08 00 00 0040 60 02 00 00 00 00 00 00 16 00 00 00 00 00 08 54 0050 53 47 49 2E 49 46 4F 00 01 01 03 00 55 00 00 00 0060 F4 47 24 00 F0 01 00 00 01 00 00 0D 00 08 00 00 0070 80 02 00 00 00 00 00 00 17 00 00 00 00 00 08 54 0080 54 4C 55 54 4C 54 59 2E 49 46 4F 00 01 01 03 00 0090 EE 00 00 00 A9 2B 24 00 F0 01 00 00 01 00 00 0D 00A0 00 08 00 00 30 03 00 00 00 00 00 00 1A 00 00 00 00B0 00 00 08 54 54 44 45 54 41 49 4C 2E 49 46 4F 00 00C0 01 01 03 00 B8 00 00 00 67 3B 20 00 F0 01 00 00 00D0 01 00 00 09 00 08 00 00 30 BD 03 00 00 00 00 00 00E0 1B 00 00 00 00 00 08 44 49 53 43 2E 49 46 4F 00 00F0 01 01 03 00 83 00 00 00 AB BE 24 00 F0 01 00 00 0100 01 00 00 0C 00 08 00 00 50 BD 03 00 00 00 00 00 0110 1C 00 00 00 00 00 08 44 49 53 43 4E 4F 32 2E 49 0120 46 4F 00 00 01 01 03 00 44 00 00 00 CC 5E 24 00 0130 F0 01 00 00 01 00 00 0C 00 08 00 00 30 5B 04 00 0140 00 00 00 00 26 00 00 00 00 00 08 54 4D 50 4D 45 0150 4E 55 2E 44 41 54 00 00 01 01 03 00 0E 00 00 00 0160 41 B3 24 00 F0 01 00 00 01 00 00 0C 00 08 00 00 0170 90 93 04 00 00 00 00 00 27 00 00 00 00 00 08 55 0180 53 52 4D 45 4E 55 2E 44 41 54 00 00 01 01 03 00 0190 58 00 00 00 F2 4C 24 00 F0 01 00 00 01 00 00 0D 01A0 00 08 00 00 30 AA 04 00 00 00 00 00 28 00 00 00 01B0 00 00 08 52 53 56 44 45 54 41 49 2E 49 46 4F 00 01C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -0x00バイト目は、最初のFile Identifier Descriptor --0x12(18)バイト目は、0x0aなので、親ディレクトリの情報を格納しているFile Identifier Descriptorとなる --0x14(18)バイト目は、ICBの位置で、この場合、子ディレクトリなので、値が入っていない -0x28(40)バイト目は、二番目のFile Identifier Descriptor --0x3a(58)バイト目は、File Characteristicsで、0x00なので、ファイルとなる --0x3c(60)バイト目は、ICBの位置で、この場合のICBはファイルの内容そのもので、論理セクタ0x260からの0x800バイトとなっている --0x4e(78)バイト目は、ファイル名で、"SGI.IFO"となる