GRUB consists of several
images: a variety of bootstrap images for starting GRUB in various ways, a
kernel image, and a set of modules which are combined with the kernel image to
form a core image. Here is a short overview of them:
boot.img
On PC BIOS systems, this image is the first part
of GRUB to start. It is written to a master boot record (MBR) or to the boot
sector of a partition. Because a PC boot sector is 512 bytes, the size of this
image is exactly 512 bytes.
The
sole function of boot.img is to read the first sector of the core
image from a local disk and jump to it. Because of the size restriction, boot.img cannot understand
any file system structure, so grub-setuphardcodes the location of the first sector of
the core image into boot.img when installing GRUB.
diskboot.img
This image is used as the first sector of the
core image when booting from a hard disk. It reads the rest of the core image
into memory and starts the kernel. Since file system handling is not yet
available, it encodes the location of the core image using a block list format.
cdboot.img
This image is used as the first sector of the
core image when booting from a CD-ROM drive. It performs a similar function to diskboot.img.
pxeboot.img
This image is used as the start of the core
image when booting from the network using PXE. See Network.
lnxboot.img
This image may be placed at the start of the
core image in order to make GRUB look enough like a Linux kernel that it can be
booted by LILO using an ‘image=’ section.
kernel.img
This image contains GRUB's basic run-time
facilities: frameworks for device and file handling, environment variables, the
rescue mode command-line parser, and so on. It is rarely used directly, but is
built into all core images.
core.img
This is the core image of GRUB. It is built
dynamically from the kernel image and an arbitrary list of modules by the grub-mkimage program. Usually,
it contains enough modules to access /boot/grub, and loads everything else (including menu
handling, the ability to load target operating systems, and so on) from the
file system at run-time. The modular design allows the core image to be kept
small, since the areas of disk where it must be installed are often as small as
32KB.
Initrd.img
initrd (initial ramdisk) is a scheme for loading a temporary file system into memory in the boot
process of the Linux kernel. initrd and initramfs refer
to slightly different methods of achieving this. Both are commonly used to make preparations before the real root file system can be mounted.