~ubuntu-branches/ubuntu/hoary/cdrtools/hoary

« back to all changes in this revision

Viewing changes to mkisofs/README.eltorito

  • Committer: Bazaar Package Importer
  • Author(s): Eduard Bloch
  • Date: 2002-04-09 10:03:06 UTC
  • Revision ID: james.westby@ubuntu.com-20020409100306-t4hagiv7gm0fhggv
Tags: upstream-1.10
ImportĀ upstreamĀ versionĀ 1.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* @(#)README.eltorito  1.2 00/03/18 eric */
 
2
 
 
3
What is El Torito?
 
4
------------------
 
5
Simply put, El Torito is a specification that says how a cdrom should
 
6
be formatted such that you can directly boot from it.
 
7
 
 
8
The "El Torito" spec says that ANY cdrom drive should work (scsi/eide)
 
9
as long as the BIOS supports El Torito. So far this has only been
 
10
tested with EIDE drives because none of the scsi controllers that has
 
11
been tested so far appears to support El Torito. The motherboard
 
12
definately has to support El Torito. The ones that do let you choose
 
13
booting from HD, Floppy, Network or CDROM.
 
14
 
 
15
How To Make Bootable CDs
 
16
------------------------
 
17
 
 
18
For the x86 platform, many BIOS's have begun to support bootable CDs.
 
19
The standard my patches for mkisofs is based on is called "El Torito".
 
20
 
 
21
The "El Torito" standard works by making the CD drive appear, through BIOS
 
22
calls, to be a normal floppy drive. This way you simply put an floppy
 
23
size image (exactly 1440k for a 1.44 meg floppy) somewhere in the
 
24
iso fs. In the headers of the iso fs you place a pointer to this image.
 
25
The BIOS will then grab this image from the CD and for all purposes it
 
26
acts as if it were booting from the floppy drive. This allows a working
 
27
LILO boot disk, for example, to simply be used as is.
 
28
 
 
29
It is simple then to make a bootable CD. First create a file, say "boot.img"
 
30
which is an exact image of the boot floppu currently in use. There is
 
31
at least one HOWTO on making bootable floppies. If you have a bootable
 
32
floppy handy, you can make a boot image with the command
 
33
 
 
34
dd if=/dev/fd0 of=boot.img bs=10k count=144
 
35
 
 
36
assuming the floppy is in the A: drive.
 
37
 
 
38
Place this image somewhere in the hierarchy which will be the source
 
39
for the iso9660 filesystem. It is a good idea to put all boot related
 
40
files in their own directory ("boot/" under the root of the iso9660 fs,
 
41
for example), but this is not necessary.
 
42
 
 
43
One caveat - Your boot floppy MUST load any initial ramdisk via LILO,
 
44
not the kernel ramdisk driver! This is because once the linux kernel
 
45
starts up, the BIOS emulation of the CD as a floppy disk is circumvented
 
46
and will fail miserably. LILO will load the initial ramdisk using BIOS
 
47
disk calls, so the emulation works as designed.
 
48
 
 
49
The "El Torito" specification requires a "boot catalog" to be created as 
 
50
ll.
 
51
This is a 2048 byte file which is of no interest except it is required.
 
52
My patches to mkisofs will cause it to automatically create the
 
53
boot catalog. You must specify where the boot catalog will go in the
 
54
iso9660 filesystem. Usually it is a good idea to put it the same place
 
55
as the boot image, and a name like "boot.catalog" seems appropriate.
 
56
 
 
57
 
 
58
So we have our boot image in the file "boot.image", and we are going to
 
59
put it in the directory "boot/" under the root of the iso9660 filesystem.
 
60
We will have the boot catalog go in the same directory with the name
 
61
"boot.catalog". The command to create the iso9660 fs in the file
 
62
bootcd.iso is then
 
63
 
 
64
mkisofs -b boot/boot.img -c boot/boot.catalog -o bootcd.iso .
 
65
 
 
66
The -b option specifies the boot image to be used (note the path is
 
67
relative to the root of the iso9660 disc), and the -c option is
 
68
for the boot catalog file.
 
69
 
 
70
Now burn the CD and its ready to boot!
 
71
 
 
72
CAVEATS
 
73
-------
 
74
 
 
75
I don't think this will work with multisession CDs.
 
76
 
 
77
If your bootable floppy image needs to access the boot floppy, it has
 
78
to do so through BIOS calls. This is because if your O/S tries to talk to
 
79
the floppy directly it will bypass the "floppy emulation" the El Torito spec
 
80
creates through BIOS. For example, under Linux it is possible to
 
81
have an initial RAM disk loaded when the kernel starts up. If you let the
 
82
kernel try to read in the initial RAM disk from floppy, it will fail
 
83
miserably because Linux is not using BIOS calls to access the floppy drive.
 
84
Instead of seeing the floppy image on the CD, Linux will be looking at
 
85
the actually floppy drive.
 
86
 
 
87
The solution is to have the initial boot loader, called LILO, load your
 
88
initial RAM disk for you.  LILO uses BIOS calls entirely for these
 
89
operations, so it can grab it from the emulated floppy image.
 
90
 
 
91
I don't think making a CD bootable renders it unreadable by non-El Torito
 
92
machines. The El Torito spec uses parts of the iso9660 filesystem which
 
93
were reserved for future use, so no existing code should care what it does.
 
94
 
 
95
Mkisofs currently stores identification records in the iso9660 filesystem
 
96
saying that the system is a x86 system. The El Torito spec also allows
 
97
one to write PowerPC or Mac id's instead. If you look at the code in write.c
 
98
you could figure out how to change what is written.