120 lines
5.2 KiB
Plaintext
120 lines
5.2 KiB
Plaintext
|
===============================================================================
|
|||
|
ISO/IEC 9660:1999 Cookbook
|
|||
|
===============================================================================
|
|||
|
|
|||
|
Creation date: 2008-Jan-14
|
|||
|
Author: Vreixo Formoso
|
|||
|
_______________________________________________________________________________
|
|||
|
|
|||
|
Contents:
|
|||
|
---------
|
|||
|
|
|||
|
1. References
|
|||
|
2. General
|
|||
|
3. Features
|
|||
|
4. Implementation
|
|||
|
5. Known implementation bugs and specification ambiguities/problems
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
1. References:
|
|||
|
|
|||
|
ISO/IEC DIS 9660:1999(E) "Information processing. Volume and file structure of
|
|||
|
CD-ROM for Information Interchange"
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
2. General
|
|||
|
|
|||
|
ISO 9660:1999, also known as ISO-9660 version 2 is an update of the old
|
|||
|
ISO 9660:1988 standard for writing data images for CD.
|
|||
|
|
|||
|
In the same way Joliet does, it is based on a Secondary Volume Descriptor (that
|
|||
|
is called Enhanced Volume Descriptor), that provides a second tree where the
|
|||
|
new file information is recorded.
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
3. Features
|
|||
|
|
|||
|
It makes some improvements with respect to ECMA-119, mainly related to relax
|
|||
|
the constraints imposed by its predecessor.
|
|||
|
|
|||
|
- It removes the limit to the deep of the directory hierarchy (6.8.2.1).
|
|||
|
However, it still keep a limit to the path length, of 255 characters as in
|
|||
|
ECMA-119.
|
|||
|
|
|||
|
- File names don't need the version number (;1) anymore, and the "." and ";",
|
|||
|
used as SEPARATORS for extension and version number, have no special meaning
|
|||
|
now.
|
|||
|
|
|||
|
- The file name max length is incremented to 207 bytes.
|
|||
|
|
|||
|
- The file name is not restricted to d-characters.
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
4. Implementation
|
|||
|
|
|||
|
ISO 9660:1999 is very similar to old ISO 9660:1988 (ECMA-119). It needs two
|
|||
|
tree hierarchies: one, identified by the Primary Volume Descriptor, is recorded
|
|||
|
in the same way that an ECMA-119 structure.
|
|||
|
|
|||
|
The second structure is identified by a Enhanced Volume Descriptor (8.5). The
|
|||
|
structure is exactly like defined in ECMA-119, with the exceptions named above.
|
|||
|
|
|||
|
Thus, to write an ISO 9660:1999:
|
|||
|
|
|||
|
- First 16 blocks are set to 0.
|
|||
|
- Block 16 identifies a PVD (8.4), associated with a directory structure
|
|||
|
written following ECMA-119.
|
|||
|
- It is needed a Enhanced Volume descriptor to describe the additional
|
|||
|
structure. It is much like a SVD, with version number set to 2 to identify
|
|||
|
this new version.
|
|||
|
- We can also write boot records (El-Torito) and additional SVD (Joliet).
|
|||
|
- We write a Volume Descriptor Set Terminator (8.3)
|
|||
|
- We write directory structure and path tables (L and M) for both ECMA-119
|
|||
|
tree and enhanced tree. Path table record and directory record format is
|
|||
|
the same in both structures. However, ECMA-119 is constrained by the usual
|
|||
|
restrictions.
|
|||
|
- And write the contents of the files.
|
|||
|
|
|||
|
Interchange levels 1, 2 and 3 are also defined. For PVD tree, they have the
|
|||
|
same meaning as in ECMA-119. For EVD tree, in levels 1 and 2 files are
|
|||
|
restricted to one file section (i.e., 4 GB filesize limit). In level 3 we can
|
|||
|
have more than one section per file. Level 1 does not impose other
|
|||
|
restrictions than that in the EVD tree.
|
|||
|
|
|||
|
It seems that both El-Torito and Joliet can coexist in a ISO 9660:1999 image.
|
|||
|
However, Joliet has no utility at all in this kind of images, as it has no
|
|||
|
benefit over ISO 9660:1999, and it is more restrictive in filename length.
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
5. Known implementation bugs and specification ambiguities/problems
|
|||
|
|
|||
|
- While the specification clearly states that the tree speficied by the Primary
|
|||
|
Volume Descriptor should remain compatible with ISO-9660 (ECMA-119), i.e., it
|
|||
|
should be constrained by ECMA-119 restrictions, some image generation
|
|||
|
applications out there just make both Primary and Enhanced Volume Descriptors
|
|||
|
to point to the same directory structure. That is a specification violation, as
|
|||
|
for a) the directory hierarchy specified in the Primary Volume Descriptor
|
|||
|
doesn't follow the restrictions specified in the specs, and b) the same
|
|||
|
directories are part of two different hiearchies (6.8.3 "A directory shall not
|
|||
|
be a part of more than one Directory Hierarchy.").
|
|||
|
Thus, we should keep two trees as we do with Joliet. Or are there strong
|
|||
|
reasons against this?
|
|||
|
|
|||
|
- It's not very clear what characters are allowed for files and dir names. For
|
|||
|
the tree identified in the Enhanced Volume Descriptor, it seems that a
|
|||
|
"sequence of characters rather than d-characters or d1-characters" is allowed.
|
|||
|
It also seems that the charset is determined by the escape sequence in the
|
|||
|
EVD. Anyway, leaving escape sequence to 0 and use any user-specified sequence
|
|||
|
(such as UTF-8) seems a good solution and is what many other applications do.
|
|||
|
Linux correctly mounts the images in this case.
|
|||
|
|
|||
|
- It is not clear if RR extensions are allowed in the tree identified by the
|
|||
|
Enhanced Volume Descriptor. However, it seems not a good idea. With 207 bytes
|
|||
|
filenames and XA extensions, there is no place for RR entries in the directory
|
|||
|
records of the enhanced tree. In my opinion, RR extension should be attached to
|
|||
|
the ECMA-119 tree that must also be written to image.
|
|||
|
|
|||
|
|