ISO 9660

From OSDev.wiki
Revision as of 11:58, 25 August 2009 by osdev>Aj (Added initial ISO 9660 information. I am continuing to work on this article over the next few days...)
Jump to navigation Jump to search
Filesystems
Virtual Filesystems

VFS

Disk Filesystems
CD/DVD Filesystems
Network Filesystems
Flash Filesystems

ISO 9660 is the standard filesystem for CD-ROMs.

This page is a work in progress.
This page may thus be incomplete. Its content may be changed in the near future.

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

External links