Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/index.php on line 54

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebStart.php on line 63

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 94

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 97

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 100

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 103

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Defines.php on line 187

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 115

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 134

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 137

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 139

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 144

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 145

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 153

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 150

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 157

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 381

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 382

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 383

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 384

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/json/FormatJson.php on line 12

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007
ISO 9660 - Just Solve the File Format Problem

ISO 9660

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(Software)
 
(25 intermediate revisions by 5 users not shown)
Line 2: Line 2:
 
|formattype=electronic
 
|formattype=electronic
 
|subcat=Filesystem
 
|subcat=Filesystem
 +
|extensions={{ext|iso}}, {{ext|cdr}}
 +
|mimetypes={{mimetype|application/x-iso9660-image}}
 +
|kaitai struct=iso9660
 +
|released=1986 (as ECMA-119), 1988 (as ISO 9660)
 
}}
 
}}
 
'''ISO 9660''' is a read-only [[filesystem]] often used on [[CD-ROM|CD-ROMs]]. It is also common to encounter files containing an [[ISO image|image]] of an ISO 9660 filesystem.
 
'''ISO 9660''' is a read-only [[filesystem]] often used on [[CD-ROM|CD-ROMs]]. It is also common to encounter files containing an [[ISO image|image]] of an ISO 9660 filesystem.
  
== Details ==
+
== Format details ==
The standard limits filenames to the DOS 8.3 style. Several extensions – [[TRANS.TBL]], [[Rock Ridge]], and [[Joliet]] – were developed to remove this restriction.
+
The ISO 9660 format uses a sequence of fixed-size sectors, almost always 2048 bytes each. Many CD-ROM image files (especially '''.iso''' files) are simply a dump of this sector data.
  
The size of a file is limited to 4GB (2GB in some implementations). This is irrelevant with respect to CD-ROMs, because of their small capacity, but it is a reason to avoid using ISO 9660 on [[DVD-ROM|DVD-ROMs]] and other media. (An extension called "multiple extents" makes larger files possible, but support for it is limited.)
+
However, an actual CD-ROM has additional data before and after the 2048 data bytes, and some CD-ROM image files use a more-raw format that retains this extra data. This can be necessary when the CD also contains non-ISO 9660 data, such as audio data. So, the file will consist of blocks that are larger than 2048 bytes (often 2336 or 2352 bytes), with the ISO 9660 data bytes appearing in the middle of each block. For example, see [[CUE and BIN|CUE/BIN]] format, in which the CUE file specifies the layout of the BIN file.
 +
 
 +
=== File name ===
 +
The standard specifies a very limited filename format. At its strictest interchange level, it only allows DOS-style "8.3" names, uppercase only. At less strict levels, filenames can be up to 31 characters. Several extensions, mainly [[Rock Ridge]] and [[Joliet]], were developed to mitigate these limitations.
 +
 
 +
The filenames also have a VMS-style version number, so sometimes they are shown with a ";1" suffix.
 +
 
 +
=== File size ===
 +
The size of a file is limited to 4GB (2GB in some implementations). This is irrelevant with respect to CD-ROMs, because of their small capacity, but it is a reason to avoid using ISO 9660 on [[DVD-ROM|DVD-ROMs]] and other media. (A feature called "multiple extents" makes larger files possible, but support for it may be limited.)
 +
 
 +
== Identification ==
 +
For the usual ISO 9660 image file format, the ASCII string "{{magic|CD001}}" appears at offset 32769, and also 2048 bytes later at offset 34817.
 +
 
 +
The first 32768 bytes are not used. Be aware that hybrid filesystems are possible. Just because something is a valid ISO 9660 image, doesn't mean it can't also be a valid file of some other type.
 +
 
 +
== Extensions ==
 +
Some extensions to ISO 9660 are listed here.
 +
 
 +
See also: [[Wikipedia:Category:ISO 9660 extensions]]
 +
 
 +
=== SUSP ===
 +
Main article: [[System Use Sharing Protocol]]
 +
 
 +
=== Rock Ridge ===
 +
Main article: [[Rock Ridge]]
 +
 
 +
SUSP-based.
 +
 
 +
=== Joliet ===
 +
Main article: [[Joliet]]
 +
 
 +
=== El Torito ===
 +
Main article: [[El Torito]]
 +
 
 +
=== CD-ROM XA ===
 +
Main article: [[CD-ROM XA]]
 +
 
 +
=== Apple extensions ===
 +
Main article: [[Apple ISO 9660 extensions]]
 +
 
 +
Signature "{{magic|AA}}" or "{{magic|BA}}" in directory record system use area. "AA" is SUSP/Rock Ridge-like.
 +
 
 +
=== Amiga extensions ===
 +
SUSP/Rock Ridge "{{magic|AS}}" signature.
 +
 
 +
* [http://www.estamos.de/makecd/Rock_Ridge_Amiga_Specific Amiga "AS" extension]
 +
 
 +
=== AAIP ===
 +
Main article: [[AAIP]]
 +
 
 +
SUSP-based; "{{magic|AL}}" signature.
 +
 
 +
=== zisofs extensions ===
 +
Main article: [[zisofs]]
 +
 
 +
SUSP/Rock Ridge "{{magic|ZF}}" signature.
 +
 
 +
=== isofs transparent compression ===
 +
Main article: [[isofs transparent compression]]
 +
 
 +
SUSP/Rock Ridge "{{magic|ZZ}}" signature.
 +
 
 +
=== RISC OS extensions ===
 +
Main article: [[ARCHIMEDES ISO 9660 extension]]
 +
 
 +
Signature "{{magic|ARCHIMEDES}}" in directory record system use area.
 +
 
 +
=== TRANS.TBL ===
 +
Main article: [[TRANS.TBL]]
  
 
== See also ==
 
== See also ==
 
* [[ISO image]]
 
* [[ISO image]]
* [[UDF]] - The successor to ISO 9660
+
* [[High Sierra]] - Predecessor
 +
* [[Universal Disk Format]] (UDF) - A successor to ISO 9660
 +
* Hybrids of [[Apple Partition Map]] and ISO 9660 are common.
 +
* See [[Disk Image Formats#Optical Disc Image Formats]] for formats that might contain this format.
 +
 
 +
== Specifications ==
 +
* [https://www.ecma-international.org/publications/standards/Ecma-119.htm ECMA-119]
 +
* [https://www.iso.org/standard/17505.html ISO 9660:1988] (not free to download)
 +
* [https://wiki.osdev.org/ISO_9660 OSDev Wiki: ISO 9660]
  
 
== Software ==
 
== Software ==
=== Reading ===
+
=== Decoding ===
* [http://www.7-zip.org/ 7-Zip]
+
''(software known to have a convenient feature to extract all files from an unmounted .iso image file)''
Operating systems often include drivers for ISO 9660. On Linux, an ISO 9660 image file can be mounted using a loopback driver (<code>mount -t iso9660 -o loop ...</code>).
+
* [[7-Zip]], [http://unix.stackexchange.com/questions/70738/what-is-the-fastest-way-to-extract-an-iso see here for an example]
 +
* [https://www.libarchive.org/ libarchive] → bsdtar
 +
* [[The Unarchiver]]
 +
* {{Deark}} (with <code>-zip</code> option)
  
=== Writing ===
+
=== Other ===
* [http://www.cdrkit.org/ cdrkit] genisoimage
+
* [http://linux.die.net/man/1/isoinfo isoinfo] can perform basic operations and some validation.
* Countless CD burning applications
+
* [https://www.gnu.org/software/libcdio/ libcdio] (<code>iso-info</code>, <code>iso-read</code>, ...)
 +
* Operating systems often have filesystem drivers for ISO 9660. On Linux, an ISO 9660 image file can be mounted using a loopback driver (<code>mount -t iso9660 -o loop ...</code>).
 +
* [https://github.com/KBNLresearch/isolyzer isolyzer] is a tool that verifies if the file size of an ISO image is consistent with the information in its filesystem-level headers. This can be useful for detecting incomplete (e.g. truncated) ISO images. Apart from ISO 9660, isolyzer also supports UDF, HFS and HFS+, as well as hybrids of all of these filesystems.
 +
* cdrkit ([[Wikipedia:Cdrkit|Wikipedia article]]) (genisoimage, wodim, etc.)
 +
* [http://cdrtools.sourceforge.net/private/cdrecord.html Cdrtools] (mkisofs, cdrecord, etc.)
 +
* [https://dev.lovelyhq.com/libburnia/web/wikis/home libburnia] (xorriso, etc.)
  
 
== Links ==
 
== Links ==
* [[Wikipedia:ISO 9660|Wikipedia: ISO 9660]]
+
* [[Wikipedia: ISO 9660]]
* [[Wikipedia:TRANS.TBL|Wikipedia: TRANS.TBL]]
+
* [[Wikipedia:Rock Ridge|Wikipedia: Rock Ridge]]
+
* [[Wikipedia:Joliet_(file_system)|Wikipedia: Joliet]]
+

Latest revision as of 14:54, 2 December 2024

File Format
Name ISO 9660
Ontology
Extension(s) .iso, .cdr
MIME Type(s) application/x-iso9660-image
Kaitai Struct Spec iso9660.ksy
Released 1986 (as ECMA-119), 1988 (as ISO 9660)

ISO 9660 is a read-only filesystem often used on CD-ROMs. It is also common to encounter files containing an image of an ISO 9660 filesystem.

Contents

[edit] Format details

The ISO 9660 format uses a sequence of fixed-size sectors, almost always 2048 bytes each. Many CD-ROM image files (especially .iso files) are simply a dump of this sector data.

However, an actual CD-ROM has additional data before and after the 2048 data bytes, and some CD-ROM image files use a more-raw format that retains this extra data. This can be necessary when the CD also contains non-ISO 9660 data, such as audio data. So, the file will consist of blocks that are larger than 2048 bytes (often 2336 or 2352 bytes), with the ISO 9660 data bytes appearing in the middle of each block. For example, see CUE/BIN format, in which the CUE file specifies the layout of the BIN file.

[edit] File name

The standard specifies a very limited filename format. At its strictest interchange level, it only allows DOS-style "8.3" names, uppercase only. At less strict levels, filenames can be up to 31 characters. Several extensions, mainly Rock Ridge and Joliet, were developed to mitigate these limitations.

The filenames also have a VMS-style version number, so sometimes they are shown with a ";1" suffix.

[edit] File size

The size of a file is limited to 4GB (2GB in some implementations). This is irrelevant with respect to CD-ROMs, because of their small capacity, but it is a reason to avoid using ISO 9660 on DVD-ROMs and other media. (A feature called "multiple extents" makes larger files possible, but support for it may be limited.)

[edit] Identification

For the usual ISO 9660 image file format, the ASCII string "CD001" appears at offset 32769, and also 2048 bytes later at offset 34817.

The first 32768 bytes are not used. Be aware that hybrid filesystems are possible. Just because something is a valid ISO 9660 image, doesn't mean it can't also be a valid file of some other type.

[edit] Extensions

Some extensions to ISO 9660 are listed here.

See also: Wikipedia:Category:ISO 9660 extensions

[edit] SUSP

Main article: System Use Sharing Protocol

[edit] Rock Ridge

Main article: Rock Ridge

SUSP-based.

[edit] Joliet

Main article: Joliet

[edit] El Torito

Main article: El Torito

[edit] CD-ROM XA

Main article: CD-ROM XA

[edit] Apple extensions

Main article: Apple ISO 9660 extensions

Signature "AA" or "BA" in directory record system use area. "AA" is SUSP/Rock Ridge-like.

[edit] Amiga extensions

SUSP/Rock Ridge "AS" signature.

[edit] AAIP

Main article: AAIP

SUSP-based; "AL" signature.

[edit] zisofs extensions

Main article: zisofs

SUSP/Rock Ridge "ZF" signature.

[edit] isofs transparent compression

Main article: isofs transparent compression

SUSP/Rock Ridge "ZZ" signature.

[edit] RISC OS extensions

Main article: ARCHIMEDES ISO 9660 extension

Signature "ARCHIMEDES" in directory record system use area.

[edit] TRANS.TBL

Main article: TRANS.TBL

[edit] See also

[edit] Specifications

[edit] Software

[edit] Decoding

(software known to have a convenient feature to extract all files from an unmounted .iso image file)

[edit] Other

  • isoinfo can perform basic operations and some validation.
  • libcdio (iso-info, iso-read, ...)
  • Operating systems often have filesystem drivers for ISO 9660. On Linux, an ISO 9660 image file can be mounted using a loopback driver (mount -t iso9660 -o loop ...).
  • isolyzer is a tool that verifies if the file size of an ISO image is consistent with the information in its filesystem-level headers. This can be useful for detecting incomplete (e.g. truncated) ISO images. Apart from ISO 9660, isolyzer also supports UDF, HFS and HFS+, as well as hybrids of all of these filesystems.
  • cdrkit (Wikipedia article) (genisoimage, wodim, etc.)
  • Cdrtools (mkisofs, cdrecord, etc.)
  • libburnia (xorriso, etc.)

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007