A boot loader for the x86 platform is broken into at least two stages. The first stage is a small machine code binary on the MBR. Its sole job is to locate the second stage boot loader and load the first part of it into memory.
GRUB has the advantage of being able to read ext2 and ext3 
partitions and load its configuration file —
— at boot time. Refer to Section 9.7, “GRUB Menu Configuration File”
for information on how to edit this file.
If upgrading the kernel using the
Red Hat Update Agent
, the boot loader configuration file is updated automatically. More information on Red Hat Network can be found online at the following URL: https://rhn.redhat.com/
Once the second stage boot loader is in memory, it presents the user with a graphical screen showing the different operating systems or kernels it has been configured to boot. On this screen a user can use the arrow keys to choose which operating system or kernel they wish to boot and press
. If no key is pressed, the boot loader loads the default selection after a configurable period of time has passed.
Once the second stage boot loader has determined which kernel to boot, it locates the corresponding kernel binary in the
/boot/ directory. The kernel binary is named using the following format —
corresponds to the kernel version specified in the boot loader's settings).
The boot loader then places one or more appropriate initramfs images into memory. Next, the kernel decompresses these images from memory to
/sysroot/, a RAM-based virtual file system, via
initramfs is used by the kernel to load drivers and modules necessary to boot the system. This is particularly important if SCSI hard drives are present or if the systems use the ext3 file system.
Once the kernel and the
initramfs image(s) are loaded into memory, the boot loader hands control of the boot process to the kernel.
18.104.22.168. Boot Loaders for Other Architectures
Once the kernel loads and hands off the boot process to the
init command, the same sequence of events occurs on every architecture. So the main difference between each architecture's boot process is in the application used to find and load the kernel.
For example, the Itanium architecture uses the ELILO boot loader, the IBM eServer pSeries architecture uses yaboot, and the IBM System z systems use the z/IPL boot loader.