                               ISOLINUX

       A bootloader for Linux using ISO 9660/El Torito CD-ROMs

       Copyright 1994-2008 H. Peter Anvin - All Rights Reserved

This program is provided under the terms of the GNU General Public
License, version 2 or, at your option, any later version.  There is no
warranty, neither expressed nor implied, to the function of this
program.  Please see the included file COPYING for details.

----------------------------------------------------------------------

ISOLINUX is a boot loader for Linux/i386 that operates off ISO 9660/El
Torito CD-ROMs in "no emulation" mode.  This avoids the need to create
an "emulation disk image" with limited space (for "floppy emulation")
or compatibility problems (for "hard disk emulation".)

This documentation isn't here yet, but here is enough that you should
be able to test it out:

Make sure you have a recent enough version of mkisofs.  I recommend
mkisofs 1.13 (distributed with cdrecord 1.9), but 1.12 might work as
well (not tested.)

To create an image, create a directory called "isolinux" (or, if you
prefer, "boot/isolinux") underneath the root directory of your ISO
image master file tree.  Copy isolinux.bin, a config file called
"isolinux.cfg" (see syslinux.txt for details on the configuration
file), and all necessary files (kernels, initrd, display files, etc.)
into this directory, then use the following command to create your ISO
image (add additional options as appropriate, such as -J or -R):

	mkisofs -o <isoimage> \
		-b isolinux/isolinux.bin -c isolinux/boot.cat \
		-no-emul-boot -boot-load-size 4 -boot-info-table \
		<root-of-iso-tree>

(If you named the directory boot/isolinux that should of course be
-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat.)

ISOLINUX resolves pathnames the following way:

- A pathname consists of names separated by slashes, Unix-style.
- A leading / means it searches from the root directory; otherwise the
  search is from the isolinux directory (think of this as the "current
  directory".)
- . and .. in pathname searches are not supported.
- The maximum length of any pathname is 255 characters.

Note that ISOLINUX only uses the "plain" ISO 9660 filenames, i.e. it
does not support Rock Ridge or Joliet filenames.  It can still be used
on a disk which uses Rock Ridge and/or Joliet extensions, of course.
Under Linux, you can verify the plain filenames by mounting with the
"-o norock,nojoliet" option to the mount command.  Note, however, that
ISOLINUX does support "long" (level 2) ISO 9660 plain filenames, so if
compatibility with short-names-only operating systems like MS-DOS is
not an issue, you can use the "-l" or "-iso-level 2" option to mkisofs
to generate long (up to 31 characters) plain filenames.

ISOLINUX does not support discontiguous files, interleaved mode, or
logical block and sector sizes other than 2048.  This should normally
not be a problem.

ISOLINUX is by default built in two versions, one version with extra
debugging messages enabled.  If you are having problems with ISOLINUX,
I would greatly appreciate if you could try out the debugging version
(isolinux-debug.bin) and let me know what it reports.  The debugging
version does not include hybrid mode support (see below.)


      ++++ NOTE ON THE CONFIG FILE DIRECTORY ++++

ISOLINUX will search for the config file directory in the order
/boot/isolinux, /isolinux, /.  The first directory that exists is
used, even if it contains no files.  Therefore, please make sure that
these directories don't exist if you don't want ISOLINUX to use them.


      ++++ HYBRID CD-ROM/HARD DISK MODE ++++

Starting in version 3.72, ISOLINUX supports a "hybrid mode" which can
be booted from either CD-ROM or from a device which BIOS considers a
hard disk or ZIP disk, e.g. a USB key or similar.

To enable this mode, the .iso image should be postprocessed with the
"isohybrid" script from the utils directory:

	isohybrid filename.iso

This script creates the necessary additional information to be able to
boot in hybrid mode.  It also pads out the image to an even multiple
of 1 MB.

This image can then be copied using any raw disk writing tool (on Unix
systems, typically "dd" or "cat") to a USB disk, or written to a
CD-ROM using standard CD burning tools.

The ISO 9660 filesystem is encapsulated in a partition (which starts
at offset zero, which may confuse some systems.)  This makes it
possible for the operating system, once booted, to use the remainder
of the device for persistent storage by creating a second partition.
