This section was contributed by Rizwan Mohammed Darwe
(rizwan AT clovertechnologies dot com)

This section assumes that you are familiar with the process and workings of
writing CDs in linux. Consider this to be a quick reference to include the
ability to boot the CD which you will burn. The CD-Writing-HOWTO should give you
an in-depth reference.

For the x86 platform, many BIOS's have begun to support bootable CDs.
The patches for mkisofs is based on the standard called "El Torito".
Simply put, El Torito is a specification that says how a cdrom should
be formatted such that you can directly boot from it.

The "El Torito" spec says that any cdrom drive
should work (SCSI or EIDE) as long as the BIOS supports El Torito. So far
this has only been tested with EIDE drives because none of the SCSI
controllers that has been tested so far appears to support El Torito. The
motherboard definately has to support El Torito. How do you know if your
motherboard supports "El Torito"? Well, the ones that support it let you
choose booting from hard disk, Floppy, Network or CDROM.

The El Torito standard works by making the CD drive appear, through
BIOS calls, to be a normal floppy drive. This way you simply put any floppy
size image (exactly 1440k for a 1.44 meg floppy) somewhere in the ISO
filesystem. In the headers of the ISO fs you place a pointer to this image.
The BIOS will then grab this image from the CD and for all purposes it acts as
if it were booting from the floppy drive. This allows a working LILO boot
disk, for example, to simply be used as is.

Roughly speaking, the first 1.44 (or 2.88 if supported) Mbytes of the
CD-ROM contains a floppy-disk image supplied by you. This image is treated
like a floppy by the BIOS and booted from. (As a consequence, while booting
from this virtual floppy, your original drive A:
(/dev/fd0) may not be accessible, but you can try with
/dev/fd1).

First create a file, say "boot.img", which is an exact image of the bootable
floppy-disk which you want to boot via the CD-ROM. This must be an 1.44 MB
bootable floppy-disk. The command below will do this

dd if=/dev/fd0 of=boot.img bs=10k count=144

assuming the floppy is in the A: drive.

Place this image somewhere in the hierarchy which will be the source
for the iso9660 filesystem. It is a good idea to put all boot related
files in their own directory ("boot/" under the root of the iso9660 fs,
for example).

One caveat -- Your boot floppy must load any initial
ramdisk via LILO, not the kernel ramdisk driver! This is because once the
linux kernel starts up, the BIOS emulation of the CD as a floppy disk is
circumvented and will fail. LILO will load the initial ramdisk using BIOS
disk calls, so the emulation works as designed.

The El Torito specification requires a "boot catalog" to be created as
well. This is a 2048 byte file which is of no interest except it is required.
The patchwork done by the author of mkisofs will cause it to automatically
create the boot catalog, but you must specify where the boot catalog will go
in the iso9660 filesystem. Usually it is a good idea to put it in the same
place as the boot image, and a name like boot.catalog
seems appropriate.

So we have our boot image in the file boot.img,
and we are going to put it in the directory boot/ under the root of the iso9660 filesystem.
We will have the boot catalog go in the same directory with the name
boot.catalog. The command to create the iso9660 fs in
the file bootcd.iso is then:

mkisofs -r -b boot/boot.img -c boot/boot.catalog -o bootcd.iso .

The -b option specifies the boot image to be used (note the
path is relative to the root of the iso9660 disk), and the -c
option is for the boot catalog file. The -r option will make
approptiate file ownerships and modes (see the mkisofs
manpage). The "." in the end says to take the source from the current
directory.

Now burn the CD with the usual cdrecord command and it is ready to boot.

The first step is to get hold of the bootable image used by the source
CD. But you cannot simply mount the CD under linux and dd the first 1440k to
a floppy disk or to a file like boot.img. Instead you
simply boot with the source CD-ROM.

When you boot the Win98 CD you are dropped to A: prompt which is the
actual ramdisk. And D: or Z: is where all the installables are residing. By
using the diskcopy command of dos copy the A: image into the actual floppy
drive which is now B: The command below will do this.

diskcopy A: B:

It works just like dd. You can try booting from this newly created disk to
test if the booting process is similar to that of the source CD. Then the
usual dd of this floppy to a file like boot.img and then rest is as usual.