The following are my notes as to how I think things work, they may be wrong.
For someone with a familiarity with MS-DOS but not (yet) with Linux see DOStoLinux-HOWTO
Sequence of events
MBR either simply loads rest of OS or else loads a secondary loader (called a boot loader) like LILO. Note that this implies a rudimentary file structure/system. At least enough to know what sector/cylinders to load to continue.
If LILO was loaded, it looks at /etc/lilo.config to decide what to do. It
either loads another OS boot (DOS for example) or else loads a kernel and
transfers execution to it.
Assume we are loading Linux from this point on.
Boot Disk and Kernel
The kernel might come from any mass storage source, floppy or hard drive
(or ROM?). We call this source the boot disk. The boot disk may load
the kernel via another boot loader(like LILO). But wherever it comes from,
this boot source has a
kernel on it. The kernel is one
of three essential Linux pieces, the other two being the
file system and the
shell.See
Bootdisk-HOWTO
The kernel uses a pointer to / (root). to know where the file system is.
This pointer could be compiled in or else it might have been set by rdev
or it might have been passed in to the kernel by LILO.
LILO could pass in a command line: linux ah152x=0x340,11,7,1
root=/dev/sda1 (note the spaces between arguments and the commas between
parameters. This example would both set the root pointer as well as pass
some h/w specific information to the kernel. See
BootPrompt-HOWTO and
/usr/doc/HOWTO/mini/LILO).
"rdev zImage /dev/sda1" would set the file syem pointer to the first
partition of a SCSI disk, ("rdev <filename>" will return that
pointer). rdev is able to set the five special values which are stored
in the kernel itself. These are:
Root Disk