|
|
=============================================================================== |
|
|
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. |
|
|
|
|
|
|
|
|
|