Kevin Kilbride's email
I had been very startled when I put a CD in a Red Hat Linux system that all the file names had been converted to lower case, which meant that all the links in my HTML files no longer worked. I asked Kevin about this -- here is our email exchange:
My email to Kevin:
Kevin, I need help with a UNIX question.
An ISO-9660 format CD has filenames that are all upper-case. I mounted a CD on my Red Hat 6.1 system and was quite startled to see that all the file names are reported as lower-case, which means all my HTML links are broken (because I made them upper-case to match the ISO-9660 file names).
My question is this: Do all UNIX flavors convert file names on an ISO-9660 CD to lower-case? Or is this peculiar to only a few?
I'm trying to create a CD that supplements a web site I'm constructing (the CD has hundreds of pictures that are slow to download), and I want that CD to work even on the various varieties of Linux, FreeBSD, and other UNIX flavors. It works with all versions of Windows and the Macintosh, but the Red Hat surprise makes me wonder if I will be able to make it work for most of the UNIX variants as well.
Thank you for your time,
--Dana
Kevin's response:
At 11:50 PM 6/6/01 -0700, you wrote:
>My question is this: Do all UNIX flavors convert file names on an
>ISO-9660 CD to lower-case? Or is this peculiar to only a few?
No, but Linux does.
The default for the mount command is to map all characters to lower case and to drop the instance specifier (the ";1" that is appended to virtually every filename in 9660 format). You can turn this off with a "map=off" option given to the mount command, but then you wind up with upper-case names AND the stupid instance specifier.
What you need to do is to create a hybrid CD-ROM that has index information in four formats: ISO-9600, Joliet, HFS and Rock Ridge. The ISO-9660 index data is mandatory for all CD-ROMs, but will be ignored by most operating system flavors if their pet index extension is present. For Windows98/2K, that extension is Joliet, which enables long filenames, unicode characters, etc. For the Mac, the alternative index used is the HFS tree. For UNIX-derived systems, the extended index is stored in a Rock Ridge table, which enables long filenames, extended permissions, etc. (similar to Joliet, but specific to UNIX).
Later versions of the Linux mount command and kernel support Joliet, but if you want to be _sure_ that your CD-ROM will mount without problems on all systems, you should add the Rock Ridge table to the CD. With these four index tables, the CD will expose the original name symbols to Windows, Mac and UNIX boxes.
You can create the hybrid CD described above with one of the Linux-based image mastering utilities (like mkisofs or mkhybrid, q.v.), but many PC-based burning utilities also now support the creation of Rock Ridge tables. When you put a Rock Ridge CD-ROM into a UNIX box, it will automatically use the extended index data, which will have filenames in upper or lower case (without a semicolon) as you chose originally.
Cheers,
| Kevin M. Kilbride
| Sapient Systems Laboratories
| 259-B Burton Mesa Blvd.
| Lompoc, CA 93436-1471
| chandra@ssl.org