                               ISOLINUX

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

		Copyright (C) 1994-2003 H. Peter Anvin

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

YOU MAY WANT TO CONSIDER USING THE DEBUGGING VERSION BY DEFAULT.


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


      ++++ BOOTING DOS (OR OTHER SIMILAR OPERATING SYSTEMS) ++++

WARNING: This feature depends on BIOS functionality which is
apparently broken in a very large number of BIOSes.  Therefore, this
may not work on any particular system.  No workaround is possible; if
you find that it doesn't work please complain to your vendor and
indicate that "BIOS INT 13h AX=4C00h fails."

To boot DOS, or other real-mode operating systems (protected-mode
operating systems may or may not work correctly), using ISOLINUX, you
need to prepare a disk image (usually a floppy image, but a hard disk
image can be used on *most* systems) with the relevant operating
system.  This file should be included on the CD-ROM in the /isolinux
directory, and have a .img extension.  The ".img" extension does not
have to be specified on the command line, but has to be explicitly
specified if used in a "kernel" statement in isolinux.cfg.

For a floppy image, the size of the image should be exactly one of the
following:

	1,228,800 bytes		- For a 1200K floppy image
	1,474,560 bytes		- For a 1440K floppy image
	2,949,120 bytes		- For a 2880K floppy image

Any other size is assumed to be a hard disk image.  In order to work
on as many systems as possible, a hard disk image should have exactly
one partition, marked active, that covers the entire size of the disk
image file.  Even so, hard disk images are not supported on all
BIOSes.
