wiki:GSoC/2011/ISO9660_Filesystem

Version 6 (modified by Christophe Huriaux, on 07/06/11 at 23:34:42) (diff)

Diagram of the iso9660 volume structure

ISO9660 Filesystem

Status: Work in progress (C. Huriaux mentored by Chris Johns as part of GSoC 2011)

Development blog: http://gsoc2011-rtems-iso9660.blogspot.com/ (GSoC 2011)

Introduction: This project will implement the ISO9660 file system on RTEMS. This is the filesystem used on CD-ROMs and DVD-ROMs. It may be possible to port an implementation from another OS or project (with appropriate license).

Goal: The goal is to be able to read CD-ROMs and DVD-ROMs on RTEMS.

Requirements: The person(s) implementing this should at least be familiar with the POSIX system calls used to interact with individual files since they will be implementing a file system which supports these operations. They will likely also have to ensure that the current ATA/IDE driver supports CD and DVD drivers or implement any missing support.

Resources: Current RTEMS developers, papers, etc that may help you in this project.

Acknowledgements

  • None yet.

About the project

ISO9660

ISO9660<ref>http://en.wikipedia.org/wiki/ISO_9660</ref> is an ISO standard describing a pre-mastered file-system aimed to be used in read-only medium (also known as WORM - Write Once Read Many). It is widely used nowadays in optical disks (CD and DVD) as well as file snapshots of these disks, commonly known as iso files. The last revision of the standard, ISO9660:1999, is freely and publicly available as the ECMA-119<ref>http://www.ecma-international.org/publications/standards/Ecma-119.htm</ref> standard.

An ISO9660 volume is intrinsically designed for optical drives thanks to his sequential layout. Since the volumes are created in one pass and thereafter never modified, they keep their optimized structure.

Hardware level

From the optical drive point of view, the smallest block readable from the disk is 24 bytes long and is called a frame. These frames are aggregated in various arrangement depending on whether the data contained on the disk is tolerant to errors or not. The standard for computer data was described years ago in the Yellow Book and consists of 98-frames sectors : 12 frames are used for error detection while the 86 remaining frames contains 12 bytes of synchronization, a 4 bytes header and 2048 bytes for the user application.

400px?

File-system structure

The user available sector size is thus 2048 bytes wide and is the standard entity on a ISO9660 volume. The volume itself doesn't start at the first sector of the disk : 16 sectors (32,768 bytes) are reserved for system use and are not used by the ISO9660 volume at all, nor described in the standard.

700px?

Development application

The actual code could be retrieved through the dedicated Google Code project. The SVN repository could be used to check out the code.

References

<references/>

Other sections: If you have more to say about the project that doesn't fit in the proposed sections of this template, feel free to add other sections at will.