Back to isolabel-0.1.0 documentation.

This page is a HTML version of readme file from isolabel-0.1.0, original (plain text) version could be found as README.txt in isolabel-0.1.0 source package.

ISOLabel

isolabel is a simple volume label editor for ISO 9660 image file, which allows you to change volume label of ISO 9660 (*.iso) image after it was already authored.

Moreover, you can specify ISO 9660 and Joliet volume label separately, taking advantage of fancy names in Joliet together with simpler, but longer name in ISO 9660; something that tools like mkisofs/genisoimage does not allow you to do in standard compliant way.

Currently, isolabel is written in pure ANSI C, with no external library dependency, thus portable to all platform with ANSI C compiler and library.

Project website: http://isolabel.sourceforge.net/

Contents

1. Background

This program was originally written because mkisofs/genisoimage didn't allow me to set ISO 9660 and Joliet volume label separately. So when I tried to use a fancy volume label (optimized for Joliet), ISO 9660 label became unreadable on some systems. When I tried to use a primitive but longer volume label (optimized for ISO 9660), Joliet label became truncated, much to my frustration.

Proprietary Nero and ImgBurn allows ISO 9660 and Joliet volume label to be specified separately, and in standard standard compliant way. So I decided to roll my own workaround for adding this functionality into mkisofs/genisoimage workflow.

2. Principle of Operation

To change a volume label of ISO 9660 image, isolabel open the image file and search for volume descriptors at sector 16 onwards, (assuming 2048 bytes/sector).

If it's a plain ISO 9660 label change, isolabel will search until found a sector with first byte equals to 0x01 (a primary volume descriptor), bytes at offset 40 to 71 of that sector (volume identifier) will be replaced by the new ISO 9660 volume label, padded to the right with spaces (byte 0x20), and re-written to the image file.

If it's a Joliet extension label change, isolabel will search until found a sector with first byte equals to 0x02 (a supplementary volume descriptor) and value of bytes at offset 88, 89, 90 equals to 0x25,0x2F,0x40 or 0x25,0x2F,0x43 or 0x25,0x2F,0x45, then bytes at offset 40 to 71 of that sector will be replaced by the new Joliet volume label, padded to the right with spaces (volume label and spaces are encoded using big-endian UCS-2), then re-written to the image file.

But if a sector with first byte equals to 0xFF was found before the desired sector, it means that volume descriptors list was ended and the desired volume descriptor cannot be found; isolabel will exit with failure status.

Further reading:

3. Installation

3.1 System Requirement

isolabel should run on any platform that have a C compiler.

For source version of isolabel; to use it you'd need:

This program have been tested using GNU C Compiler (GCC) 4.3.2, GNU Make 3.81 and ran on Debian GNU/Linux 5.0 i386. For Windows (native win32) port, tested using Borland C Compiler 5.5, and ran on Microsoft Windows XP SP3.

Note: if you've just checked out isolabel from git repository, you also need to run this command in source directory before proceeding to the next step:

$ ./autogen.sh

3.2 Compiling

To compile isolabel on Unix-like system, run this command in source directory

$ make

This will produce an executable named 'isolabel' in the source directory. Then proceed to the 'Installing' step to install it on your system.

To compile isolabel on Microsoft Windows system (e.g. with Borland C Compiler), run this command in source directory

:\> make -f Makefile.bcc

This will produce an executable named 'isolabel.exe' in the source directory. Then you can manually copy 'isolabel.exe' to your desired installation location. (Skip the 'Installing' step)

Alternatively, in case you didn't have the Make program, you can use your platform's C compiler to compile 'isolabel.c' directly. Then you manually copy the executable to desired location. (Skip the 'Installing' step)

3.3 Installing

If you wanted to install isolabel system-wide on Unix-like system, use this command (as root):

# make install

This will install isolabel binary to /usr/local/bin.

Alternatively, in case you need to install it just for yourself (like ~/bin), prepend PREFIX=... in front of 'install' and it will place the binary in 'bin' subfolder (and manual page to 'share/man' subfolder) of your prefix. Also you didn't need to be root to install it.

This example will install isolabel to your home folder (~/bin):

$ make PREFIX=~ install

3.4 Uninstalling

To uninstall (on Unix-like system), you just need to do the same step as installation, but change 'install' word to 'uninstall'.

4. Running

After you finished installation, you could run this command to see available command line switches:

$ isolabel --help

See ISOLABEL.txt for detailed usage, bugs and catches. If you installed this on Unix-like system, you can view that documentation via system's manual page viewer (e.g. using 'man isolabel').

5. Author

isolabel is written by Nachanon Vetjasit, released as Free Software under GNU GPL.
For legal information, see LICENSE.txt