Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
ISO 9660
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Specifications == The following is the rough overall structure of the ISO 9660 file system. [[Multi-byte]] values can be stored in three different formats: [[little-endian]], [[big-endian]], and in a concatenation of both types in what the specification calls "both-byte" order. Both-byte order is required in several fields in the volume descriptors and directory records, while path tables can be either little-endian or big-endian.<ref name="iso9660-simplified" /> === Top level === {| class="wikitable" |+ ISO 9660 file system |- | System area (32,768 B) | ''Unused by ISO 9660'' |- | rowspan=3 | Data area |- | Volume descriptor set |- | Path tables, directories and files |} The ''system area'', the first 32,768 data bytes of the disc (16 sectors of 2,048 bytes each), is unused by ISO 9660 and therefore available for other uses.<ref name="iso9660-simplified">{{cite web| url = https://pierrelib.pagesperso-orange.fr/filesystems/iso9660_simplified.html| title = ISO9660 Simplified for DOS/Windows}}</ref> While it is suggested that they are reserved for use by [[booting|bootable media]],<ref>{{cite web| url = http://www.brankin.com/main/technotes/Notes_ISO9660.htm| title = ISO9660}}</ref> a CD-ROM may contain an alternative file system descriptor in this area, and it is often used by [[hybrid CD]]s to offer [[classic Mac OS]]-specific and [[macOS]]-specific content.{{citation needed|date=November 2020}} === Volume descriptor set === The ''data area'' begins with the ''volume descriptor set'', a set of one or more ''volume descriptors'' terminated with a ''volume descriptor set terminator''. These collectively act as a [[header (computing)|header]] for the data area, describing its content (similar to the [[BIOS parameter block]] used by [[File Allocation Table|FAT]], [[High Performance File System|HPFS]] and [[NTFS]] formatted disks). {| class="wikitable" |+ Volume descriptor set |- | Volume descriptor #1 |- | ... |- | Volume descriptor #N |- | Volume descriptor set terminator |} Each volume descriptor is 2048 bytes in size, fitting perfectly into a single Mode 1 or Mode 2 Form 1 sector. They have the following structure: {| class="wikitable" |+ Volume descriptor (2,048 bytes) |- ! Part | Type | Identifier | Version | Data |- ! Size | 1 byte | 5 bytes (always 'CD001') | 1 byte (always 0x01) | 2,041 bytes |} The data field of a volume descriptor may be subdivided into several fields, with the exact content depending on the type. Redundant copies of each volume descriptor can also be included in case the first copy of the descriptor becomes corrupt. Standard volume descriptor types are the following: {| class="wikitable" |+ Basic volume descriptor types |- ! Value ! Type |- | 0 | Boot record volume descriptor |- | 1 | Primary volume descriptor |- | 2 | Supplementary volume descriptor, or enhanced volume descriptor |- | 3 | Volume partition descriptor |- | 255 | Volume descriptor set terminator |} An ISO 9660 compliant disc must contain at least one ''primary volume descriptor'' describing the file system and a ''volume descriptor set terminator'' for indicating the end of the descriptor sequence. The ''volume descriptor set terminator'' is simply a particular type of volume descriptor with the purpose of marking the end of this set of structures. The primary volume descriptor provides information about the volume, characteristics and metadata, including a root directory record that indicates in which sector the root directory is located. Other fields contain the description or name of the volume, and information about who created it and with which application. The size of the logical blocks which the file system uses to segment the volume is also stored in a field inside the primary volume descriptor, as well as the amount of space occupied by the volume (measured in number of logical blocks). In addition to the primary volume descriptor(s), ''supplementary volume descriptors'' or ''enhanced volume descriptors'' may be present. * Supplementary volume descriptors describe the same volume as the primary volume descriptor does, and are normally used for providing additional code page support when the standard code tables are insufficient. The standard specifies that [[ISO 2022]] is used for managing code sets that are wider than 8 bytes, and that [[ISO 2375]] escape sequences are used to identify each particular code page used. Consequently, ISO 9660 supports international single-byte and multi-byte character sets, provided they fit into the framework of the referenced standards. However, ISO 9660 does not specify any code pages that are guaranteed to be supported: all use of code tables other than those defined in the standard itself are subject to agreement between the originator and the recipient of the volume. * Enhanced volume descriptors were introduced in ISO 9660, Amendment 1. They relax some of the requirements of the other volume descriptors and the directory records referenced by them: for example, the directory depth can exceed eight, file identifiers need not contain '.' or file version number, the length of a file and directory identifier is maximized to 207. === Path tables === Path tables summarize the directory structure of the relevant directory hierarchy. For each directory in the image, the path table provides the directory identifier, the location of the extent in which the directory is recorded, the length of any extended attributes associated with the directory, and the index of its parent directory path table entry. The parent directory number is a 16-bit number, limiting its range from 1 to 65,535.<ref>ISO9660 sections 6.9 and 9.4.4</ref> === Directories and files === [[File:Iso9660directoryTree.png|thumb|Overview of the ISO 9660 directory structure]] Directory entries are stored following the location of the root directory entry, where evaluation of filenames is begun. Both directories and files are stored as [[Extent (file systems)|extents]], which are sequential series of sectors. Files and directories are differentiated only by a file attribute that indicates its nature (similar to [[Unix]]). The attributes of a file are stored in the directory entry that describes the file, and optionally in the extended attribute record. To locate a file, the directory names in the file's path can be checked sequentially, going to the location of each directory to obtain the location of the subsequent subdirectory. However, a file can also be located through the path table provided by the file system. This path table stores information about each directory, its parent, and its location on disc. Since the path table is stored in a contiguous region, it can be searched much faster than jumping to the particular locations of each directory in the file's path, thus reducing seek time. The standard specifies three nested levels of interchange (paraphrased from section 10): * Level 1: File names are limited to eight characters with a three-character extension. Directory names are limited to eight characters. Files may contain one single file section. * Level 2: File Name + '.' + File Name extension or Directory Name may not exceed 31 characters in length (sections 7.5 and 7.6). Files may contain one single file section. * Level 3: No additional restrictions than those stipulated in the main body of the standard. Files are also allowed to consist of multiple non-contiguous sections (with some restrictions as to order). Additional restrictions in the body of the standard: The depth of the directory hierarchy must not exceed 8 (root directory being at level 1), and the path length of any file must not exceed 255. (section 6.8.2.1). The standard also specifies the following name restrictions (sections 7.5 and 7.6):<ref name="ISO9660" /> * All levels restrict file names in the mandatory file hierarchy to upper case letters, digits, underscores ("_"), and a dot. (See also section 7.4.4 and Annex A.) * If no characters are specified for the File Name then the File Name Extension shall consist of at least one character. * If no characters are specified for the File Name Extension then the File Name shall consist of at least one character. * File names shall not have more than one dot. * Directory names shall not use dots at all. A CD-ROM producer may choose one of the lower Levels of Interchange specified in chapter 10 of the standard, and further restrict file name length from 30 characters to only 8+3 in file identifiers, and 8 in directory identifiers in order to promote interchangeability with implementations that do not implement the full standard.{{citation needed|date=November 2020}} All numbers in ISO 9660 file systems except the single byte value used for the GMT offset are unsigned numbers. As the length of a file's [[extent (file systems)|extent]] on disc is stored in a 32 bit value,<ref>ISO 9660 section 9.1.4</ref> it allows for a maximum length of just over 4.2 [[gigabyte|GB]] (more precisely, one byte less than 4 [[GiB]]). It is possible to circumvent this limitation by using the multi-extent (fragmentation) feature of ISO 9660 Level 3 to create ISO 9660 file systems and single files up to 8 TB. With this, files larger than 4 GiB can be split up into multiple extents (sequential series of sectors), each not exceeding the 4 GiB limit. For example, the free software such as [[InfraRecorder]], [[ImgBurn]] and [[mkisofs]] as well as [[Roxio Toast]] are able to create ISO 9660 file systems that use multi-extent files to store files larger than 4 GiB on appropriate media such as recordable DVDs.{{citation needed|date=August 2020}} [[Linux]] supports multiple extents.<ref>{{cite mailing list | url = http://lists.freebsd.org/pipermail/freebsd-bugs/2006-April/017786.html| title = kern/95222: File sections on ISO9660 level 3 CDs ignored | author = Pete | mailing-list = freebsd-bugs | date = 2 April 2006}}</ref> Since amendment 1 (or ECMA-119 3rd edition, or "JIS X 0606:1998 / ISO 9660:1999"), a much wider variety of file trees can be expressed by the EVD system. There is no longer any character limit (even 8-bit characters are allowed), nor any depth limit or path length limit. There still is a limit on name length, at 207. The character set is no longer enforced, so both sides of the disc interchange need to agree via a different channel.<ref name=ecma119.3/> === Volume size === An ISO 9660 volume can be up to 8 tebibytes (nearly 8.8 terabytes) in size, owing to the 32-bit sector count for the volume size, and its allocation unit size which spans 2048 bytes, matching a logical sector on optical discs. The highest number representable in a 32-bit field is 2<sup>32</sup>-1, limiting the volume size to (2<sup>32</sup>-1)Γ2048 bytes. "Logical" means it is the sector size exposed to the operating system, not necessarily the physical sector size on a disc. DVD and Blu-ray discs have maintained the logical sector size of the CD-ROM, 2048 bytes, to try to maintain reading compatibility with computers and software predating them.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
ISO 9660
(section)
Add topic