Most PCs can be booted from a floppy
drive or hard drive; many recently manufactured computers can be
booted from a CD-ROM drive. The first sector of a disk, diskette, or
partition is known as the boot sector
. The boot
sector associated with a disk or diskette (the first sector of the
disk or diskette) is known as the Master Boot
Recor
d (MBR). In order for a diskette
or disk to be bootable, it must contain a boot loader, which can
reside in:
The boot sector of the floppy diskette
The MBR of the first hard disk or the first CD-ROM drive, if the PC supports booting from a CD-ROM
The boot sector of a Linux filesystem partition on the first hard disk
The boot sector of an extended partition on the first hard disk
GRUB is a
sophisticated boot loader that can load Linux, Microsoft Windows
3.x and 9x, and other
popular operating systems. Most users install GRUB
on the MBR of their system’s first hard disk. That
way, when the system is started, it boots GRUB, which can be used to
load Linux, Microsoft Windows, or another operating system.
Unless you direct otherwise, the Red Hat Linux installation procedure automatically installs GRUB. So you don’t need to install GRUB; you just need to configure it.
Similarly, when you boot by using GRUB, you can also boot parameters to control the boot process; you can specify GRUB’s boot parameters by selecting an operating system from GRUB’s menu and pressing e. In response, GRUB displays an editor screen that shows the commands associated with the selected operating system, as shown in Figure C-1.
Commands that can be used in the editor screen are listed in Table C-1.
Table C-1. GRUB Editor Commands
Command |
Meaning |
---|---|
b |
Boot the currently selected operating system. |
e |
Edit the currently selected GRUB command. |
c |
Open a screen for interactively entering and executing GRUB commands. |
o |
Enter a new command after the currently selected command. |
O |
Enter a new command before the currently selected command. |
d |
Delete the currently selected command. |
Esc |
Return to the main GRUB menu. |
The principal GRUB commands are:
chainloader
Used to load a Microsoft operating system, including DOS, Windows 3.x, 9x, NT, or 2000.
initrd
Specifies the file containing an initial RAM disk used in loading Linux. This command is necessary, for instance, when booting Linux from a SCSI drive.
kernel
Specifies the file containing the Linux kernel to be booted.
root
,
rootnoverify
Specifies the partition to be mounted as
the root partition. The root
command causes the
filesystem to be verified before the partition is mounted.
GRUB refers to hard disks using the
syntax
(hd
n
)
,
where n
specifies the device number
assigned by the system BIOS. For example, (hd0)
refers to the first hard drive. Partitions are designated by the
related syntax
(hdn,
m
)
,
where m
is the number of the partition.
For example, (hd1,0)
refers to the first partition
of the second hard drive.
GRUB
can refer to the disk blocks that comprise a file by using a special
syntax known as a blocklist. A blocklist
consists of a comma-separated list of block ranges, each of which
consists of a starting block number, followed by a plus sign
(+
), followed by the number of blocks in the
range. For example, the blocklist 0+1,10+20
refers
to a block range beginning at block 0 and including 1 block and a
block range beginning at block 10 and including 20 blocks.
If the starting block number of a block range is omitted, the block
range is implied to begin with block 0. For example, the block range
+1
begins at block 0 and includes 1 block.
A blocklist can appear after a reference to a partition; if no
partition is identified, the partition identified by the preceding
root
command is implied. For example, in the
entry:
root (hd0,0) chainlist +1
the blocklist +1
is implicitly associated with
(hd0,0)
and is equivalent to the blocklist
(hd0,0)+1
.
A typical GRUB entry for booting Linux resembles the following:
root (hd0,7) kernel /boot/vmlinuz-2.2.17 root=/dev/hda8
This entry boots the specified kernel residing on partition 7 of the
first hard drive, mounting partition 8 as the root partition. Linux
boot parameters, such as those described in Section C.5, can be specified by using the
kernel
command.
If the kernel requires access to special drivers residing on a RAM disk, a RAM disk can be identified as in this entry:
root (hd0,7) kernel /boot/vmlinuz-2.4.9-2 ro root=/dev/hda8 initrd /initrd-2.4.9-2.img
Notice that the name of the RAM
disk file is specified as though the file resides in the root
directory, whereas it actually resides in the
/boot
directory. This is necessary because GRUB
initially mounts the /boot
filesystem, as
specified in the preceding root
command. The
mounted filesystem is treated by GRUB as its root filesystem.
A typical GRUB entry for booting a Microsoft operating system has this form:
rootnoverify (hd0,0) chainloader +1
This entry boots the Microsoft operating system residing on partition
of the first hard drive. The blocklist +1
points
to the first block of the root partition. Microsoft operating systems
place their boot file at this location.
To boot your system, GRUB uses your
system’s BIOS, which may not be able to load a Linux kernel (or
other program) stored beyond cylinder 1023 of your hard drive.
Booting a kernel stored beyond cylinder 1023 requires a motherboard
that supports logical byte addressing
(LBA).
Most motherboards manufactured in the last several years are supposed
to support LBA. Unfortunately, some motherboards that claim to
support LBA do not. If you’re installing Linux on a preexisting
hard drive, you may not be able to place your Linux kernel in an
appropriate location. In that case, you won’t be able to use
GRUB to boot your system.
To learn more about GRUB, see the following resources:
The manpage for GRUB
The GRUB home page, http://www.gnu.org/software/grub
The Multiboot-with-GRUB
mini HOWTO, http://www.redhat.com/mirrors/LDP/HOWTO/mini/Multiboot-with-GRUB.html