ISO9660
iso9660 ist ein Dateisystem das extra zur Benutzung auf CDROMs entworfen wurde. Es ist ähnlich wie FAT aufgebaut, außer das normalerweise Dateien nicht fragmentiert werden und dass man damit rechnet, dass nicht geschrieben wird.
Inhaltsverzeichnis
Dateien
Die Form und Art der Dateien ähneln sich sehr, der von FAT. Dateinamen sind auf 8.3 Zeichen (8 Zeichen Name, 1 Punkt und 3 Zeichen Erweiterung) beschränkt. Außerdem dürfen Dateinamen nur aus Großbuchstaben, Ziffern oder dem Untestrich gebildet werden. Es gibt maximal 8 Ebenen an Verzeichnissen.
BothEndian
Viele Multibytewerte werden bei iso9660 also BothEndian gespeichert. D.h erst kommt der Wert in LittleEndian dann in BigEndian. Multibytewerte werden in diesem Artikel wie folgt bezeichnet:
* Little Endian (LE) * Big Endian (BE) * Both Endian (XE)
Zu beachten ist natürlich dass z.B ein 4byte großer BothEndian-Wert nur ein Word ist.
Allgemeiner Aufbau
Die ersten 16 Sektoren sind Systemspezifisch, danach folgen in einigen Sektoren die sogenannten Volume-Deskriptoren. Ein Sektor hat normalerweise eine Größer von 2048 Bytes, kann aber auch eine Andere Größe haben. Nach den Volume-Deskriptoren liegen Pathtables und Datensektoren (Sektoren die Datei oder Verzeichnis-Informationen enthalten).
Volume-Deskriptoren
Es gibt 2 wichtige Typen an Volume Deskriptoren:
* Primäre Volume-Deskriptoren: Enthalten wichtige Informationen über das Dateisystem * Terminierender Volume-Deskriptor: Zeigt das Ende der Volume-Deskriptoren an.
Volume-Deskriptoren füllen immer einen ganzen Sektor aus und fangen mit dem Typ und der Signatur an:
| Offset | Größe | Beschreibung |
|---|---|---|
| 0x00 | 1 | Typ |
| 0x01 | 6 | Signature |
Danach folgen Typabhängige Daten.
Primärer Volume-Deskriptor
| Offset | Größe | Beschreibung |
|---|---|---|
| 0x00 | 1 | Typ |
| 0x01 | 6 | Signature |
| 0x07 | 1 | Null |
| 0x08 | 32 | System-Identifizierer* |
| 0x28 | 32 | Volume-Identifizierer* |
| 0x48 | 8 | Null |
| 0x50 | 8 | Number of sectors (XE) |
| 0x58 | 32 | Null |
| 0x78 | 4 | Setgröße (XE) |
| 0x7C | 4 | Sequenznummer (XE) |
| 0x80 | 4 | Sektorgröße (XE) |
| 0x84 | 8 | Pathtablegröße (XE) |
| 0x8C | 4 | Sektor der 1. Pathtable (LE) |
| 0x90 | 4 | Sektor der 2. Pathtable (LE) |
| 0x94 | 4 | Sektor der 1. Pathtable (BE) |
| 0x98 | 4 | Sektor der 2. Pathtable (BE) |
| 0x9C | 34 | Verzeichniseintrag des Rootverzeichnis |
| 0x118 | 128 | Volume-Set-Identifizierer |
| 0x198 | 128 | Hersteller-Identifizierer |
| 0x218 | 128 | Data-Preparer-Identifizierer |
| 0x318 | 128 | Application-Identifizierer |
| 0x418 | 37 | Copyright-Identifizierer |
| 0x43D | 37 | Abstract-File-Identifizierer |
| 0x462 | 37 | Bibliographical-File-Identifizierer |
| 0x487 | 17 | Erstellungsdatum |
| 0x498 | 17 | Modifikationsdatum |
| 0x4A9 | 17 | Ablaufdatum |
| 0x4BA | 17 | Effektivdatum |
| 0x4CB | 1 | One (1) |
| 0x4CC | 1 | Zero |
| 0x4CD | 512 | Reserviert für Application-Benutzung |
| 0x6CD | 653 | Zero |
- Diese Namen werden mit Leerzeichen (0x20) aufgefüllt um alle 32 Byte zu füllen