The LILO ``Technical overview'' has the definitive technical, low-level
description of the boot process, up to where the kernel is started.
The source code is the ultimate guide. Below are some
kernel files related to the boot process. If you have the Linux kernel source
code, you can find these under /usr/src/linux on your
machine; alternatively, Shigio Yamaguchi (shigio@tamacom.com) has a very nice
hypertext kernel
browser for reading kernel source files. Here are some relevant
files to look at:
arch/i386/boot/bootsect.S and
setup.S
Contain assembly code for the bootsector itself.
arch/i386/boot/compressed/misc.c
Contains code for uncompressing the kernel.
arch/i386/kernel/
Directory containing kernel initialization code.
setup.c defines the ramdisk word.
drivers/block/rd.c
Contains the ramdisk driver. The procedures
rd_load and rd_load_image load blocks from a device into a
ramdisk. The procedure
identify_ramdisk_image determines what
kind of filesystem is found and whether it is compressed.