A.5. The Linux boot process
For more detail on the Linux boot process, here are some pointers:
The Linux System Administrators' Guide has a section on booting.
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 at 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.