ISO 9660: Difference between revisions
[unchecked revision] | [unchecked revision] |
m adding See Also link + better wikipedia link |
Added initial ISO 9660 information. I am continuing to work on this article over the next few days... |
||
Line 1:
{{Filesystems}}
'''ISO 9660''' is the standard filesystem for CD-ROMs.
{{In Progress}}
== Overview and Caveats ==
ISO 9660 is not a complex file system, but has a few quirks that are worth remembering. It seems that some operating systems also create non-compliant CD's, so beware! The main example of this is the character set that is available for file names. Strictly, this consists of A-Z (upper case only!), digits and underscores. Many operating systems also allow lower case letters and other characters. Linux's [[VFS]] displays lower case filenames to the user despite the cd contents actually containing upper case characters.
Another quirk of the system is that it has several numbering formats and multi-byte numbers are often represented in "both-endian" format (that is, LSB first followed by MSB first). For this reason, 32 bit LBA's often appear in 8 byte fields.
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.
== Volume Descriptors ==
When preparing to mount a CD, your first action will be reading the volume descriptors (specifically, you will be looking for the Primary Volume Descriptor).
Sectors 0x00-0x0F of the CD are reserved for system use. This means that the Volume Descriptors can be found starting at sector 0x10. The format of the volume descriptors is as follows:
{| {{wikitable}}
! Offset
! Length (bytes)
! Field Name
! Meaning
|-
| 0 || 1 || Type || Volume Descriptor type code (see below).
|-
| 1 || 5 || Identifier || Always 'CD001'.
|-
| 6 || 1 || Version || Volume Descriptor Version (0x01).
|-
| 7 || 2041 || Data || Depends on the volume descriptor type.
|}
This means that each volume descriptor is therefore one sector (2KiB) long.
=== Volume Descriptor Type Codes ===
{| {{wikitable}}
! Value
! Meaning
|-
| 0 || Volume descriptor is a Boot Record
|-
| 1 || Primary Volume Descriptor
|-
| 2 || Supplementary Volume Descriptor
|-
| 3 || Volume Partition Descriptor
|-
| 4-254 || Reserved
|-
| 255 || Volume Descriptor Set Terminator
|}
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.
== See Also ==
|
Revision as of 11:58, 25 August 2009
Filesystems |
---|
Virtual Filesystems |
Disk Filesystems |
CD/DVD Filesystems |
Network Filesystems |
Flash Filesystems |
ISO 9660 is the standard filesystem for CD-ROMs.
Overview and Caveats
ISO 9660 is not a complex file system, but has a few quirks that are worth remembering. It seems that some operating systems also create non-compliant CD's, so beware! The main example of this is the character set that is available for file names. Strictly, this consists of A-Z (upper case only!), digits and underscores. Many operating systems also allow lower case letters and other characters. Linux's VFS displays lower case filenames to the user despite the cd contents actually containing upper case characters.
Another quirk of the system is that it has several numbering formats and multi-byte numbers are often represented in "both-endian" format (that is, LSB first followed by MSB first). For this reason, 32 bit LBA's often appear in 8 byte fields.
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.
Volume Descriptors
When preparing to mount a CD, your first action will be reading the volume descriptors (specifically, you will be looking for the Primary Volume Descriptor).
Sectors 0x00-0x0F of the CD are reserved for system use. This means that the Volume Descriptors can be found starting at sector 0x10. The format of the volume descriptors is as follows:
Offset | Length (bytes) | Field Name | Meaning |
---|---|---|---|
0 | 1 | Type | Volume Descriptor type code (see below). |
1 | 5 | Identifier | Always 'CD001'. |
6 | 1 | Version | Volume Descriptor Version (0x01). |
7 | 2041 | Data | Depends on the volume descriptor type. |
This means that each volume descriptor is therefore one sector (2KiB) long.
Volume Descriptor Type Codes
Value | Meaning |
---|---|
0 | Volume descriptor is a Boot Record |
1 | Primary Volume Descriptor |
2 | Supplementary Volume Descriptor |
3 | Volume Partition Descriptor |
4-254 | Reserved |
255 | Volume Descriptor Set Terminator |
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.
See Also
Articles
- El-Torito, a standard for creating bootable CD-ROMs