ISO 9660: Difference between revisions

5,924 bytes added ,  14 years ago
Added the Primary Volume Descriptor table.
[unchecked revision][unchecked revision]
(Added initial ISO 9660 information. I am continuing to work on this article over the next few days...)
(Added the Primary Volume Descriptor table.)
Line 10:
 
It should be noted that an ISO 9660 sector is 2KiB (2048 bytes) long. The term "extent" is used to describe a sequential series of sectors.
 
Another (perhaps little-known and little-utilised) feature of the ISO 9660 file system is that a single file system can span multiple CD's. This is dealt with via "set numbers".
 
== Volume Descriptors ==
Line 20 ⟶ 22:
! Length (bytes)
! Field Name
! Description
! Meaning
|-
| 0 || 1 || Type || Volume Descriptor type code (see below).
Line 36 ⟶ 38:
{| {{wikitable}}
! Value
! Description
! Meaning
|-
| 0 || Volume descriptor is a Boot Record
Line 52 ⟶ 54:
 
When starting out with a basic CD, we are going to be interested in the Primary Volume Descriptor, which points us to the root directory and path tables, which both allow us to find any file on the CD. Using the path table is ideal for minimal implementations which do not wish to search the directory heirarchy node by node. This is slower (string comparisons across the entire filesystem) but easier to implement.
 
Note that the Volume Descriptor Set Terminator does not currently define bytes 7-2047 of its' Volume Descriptor. This means that the only fields in use for the volume set terminator are the type code (255, 0xFF), the standard identifier ('CD001') and the descriptor version (0x01).
 
=== The Boot Record ===
The first type of Volume Descriptor is the "Boot Record". The descriptor format is as follows:
 
{| {{wikitable}}
! Offset
! Length (bytes)
! Field Name
! Value
! Description
|-
| 0 || 1 || Type || 0 || Zero indicates a boot record.
|-
| 1 || 5 || Identifier || 'CD001' || Always 'CD001'.
|-
| 6 || 1 || Version || 0x01 || Volume Descriptor Version (0x01).
|-
| 7 || 32 || Boot System Identifier || (string) || ID of the system which can act on and boot the system from the boot record in a-characters.
|-
| 39 || 32 || Boot Identifier || (string) || Identification of the boot system defined in the rest of this descriptor in a-characters.
|-
| 71 || 1977 || Boot System Use || Unspecified || Custom - used by the boot system.
|}
 
=== The Primary Volume Descriptor ===
This is a lengthy descriptor, but it contains some very useful information for reading the rest of the file system.
{| {{wikitable}}
! Offset
! Length (bytes)
! Field Name
! Description
|-
| 0 || 1 || Type Code || Always 0x01 for a Primary Volume Descriptor.
|-
| 1 || 5 || Standard Identifier || Always 'CD001'.
|-
| 6 || 1 || Version || Always 0x01.
|-
| 7 || 1 || Unused || Always 0x00.
|-
| 8 || 32 || System Identifier || The name of the system that can act upon sectors 0x00-0x0F for the volume in a-characters.
|-
| 40 || 32 || Volume Identifier || Identification of this volume in d-characters.
|-
| 72 || 8 || Unused Field ||
|-
| 80 || 8 || Volume Space Size || Number of Logical Blocks in which the volume is recorded. This is a 32 bit value in both-endian format.
|-
| 88 || 32 || Unused Field ||
|-
| 120 || 4 || Volume Set Size || The size of the set in this logical volume (number of disks). This is a 16 bit value in both-endian format.
|-
| 124 || 4 || Volume Sequence Number || The number of this disk in the Volume Set. This is a 16 bit value in both-endian format.
|-
| 128 || 4 || Logical Block Size || The size in bytes of a logical block in both-endian format. NB: This means that a logical block on a CD could be something other than 2KiB!
|-
| 132 || 8 || Path Table Size || The size in bytes of the path table in 32 bit both-endian format.
|-
| 140 || 4 || Location of Type-L Path Table || LBA location of the path table, recorded in LSB-first (little endian) format. The path table pointed to also contains LSB-first values.
|-
| 144 || 4 || Location of the Optional Type-L Path Table || LBA location of the optional path table, recorded in LSB-first (little endian) format. The path table pointed to also contains LSB-first values. Zero means that no optional path table exists.
|-
| 148 || 4 || Location of Type-M Path Table || LBA location of the path table, recorded in MSB-first (big-endian) format. The path table pointed to also contains MSB-first values.
|-
| 152 || 4 || Location of Optional Type-M Path Table || LBA location of the optional path table, recorded in MSB-first (big-endian) format. The path table pointed to also contains MSB-first values.
|-
| 156 || 34 || Directory entry for the root directory. || Note that this is not an LBA address, it is the actual Directory Record, which contains a zero-length Directory Identifier, hence the fixed 34 byte size.
|-
| 190 || 128 || Volume Set Identifier || Identifier of the volume set of which this volume is a member in d-characters.
|-
| 318 || 128 || Publisher Identifier || The volume publisher in a-characters. If unspecified, all bytes should be 0x20. For extended publisher information, the first byte should be 0x5F, followed by an 8.3 format file name. This file must be in the root directory and the filename is made from d-characters.
|-
| 446 || 128 || Data Preparer Identifier || The identifier of the person(s) who prepared the data for this volume. Format as per Publisher Identifier.
|-
| 574 || 128 || Application Identifier || Identifies how the data are recorded on this volume. Format as per Publisher Identifier.
|-
| 702 || 38 || Copyright File Identifier || Identifies a file containing copyright information for this volume set. The file must be contained in the root directory and is in 8.3 format. If no such file is identified, the characters in this field are all set to 0x20.
|-
| 740 || 36 || Abstract File Identifier || Identifies a file containing abstract information for this volume set in the same format as the Copyright File Identifier field.
|-
| 776 || 37 || Bibliographic File Identifier || Identifies a file containing bibliographic information for this volume set. Format as per the other File Identifier fields.
|-
| 813 || 17 || Volume Creation Date and Time || Date and Time format as specified below.
|-
| 830 || 17 || Volume Modification Date and Time || Date and Time format as specified below.
|-
| 847 || 17 || Volume Expiration Date and Time || Date and Time format as specified below. After this date and time, the volume should be considered obsolete. If unspecified, then the information is never considered obsolete.
|-
| 847 || 17 || Volume Effective Date and Time || Date and Time format as specified below. Date and time from which the volume should be used. If unspecified, the volume may be used immediately.
|-
| 881 || 1 || File Structure Version || An 8 bit number specifying the directory records and path table version (always 0x01).
|-
| 882 || 1 || Unused || Always 0x00.
|-
| 883 || 512 || Application Used || Contents not defined by ISO 9660.
|-
| 1395 || 653 || Reserved || Reserved by ISO.
|}
 
== See Also ==
Anonymous user