GRUB Legacy

GRUB (GRand Unified Bootloader) is the default bootloader on Gentoo. This article discusses GRUB version 1, also known as Grub Legacy. GRUB version 2 is a completely reworked and fundamentally a different bootloader and will not be covered in this article.

Emerge
Install GRUB:

Specifying slot 0 will ensure that GRUB 2 (slot 2) will not get installed on world updates unless it is specifically selected.

Things to consider when using GRUB
When GRUB is booting, the numbering of the hard disks is the one from BIOS. This has to go into.

Instead of installing GRUB in the MBR, it is possible to use from the  package. This is self contained and boots the partition which is activated. Grub then goes into the activated partition.

Because GRUB, when booting, gets the information from the BIOS, it is able to chainload other boot loaders, even if the running Linux can't see them. One example is a BIOS supported software RAID. When the physical drives are set up as 2 logical drives, the second logical drive starts in the middle of the physical drives. Without using or support of dmraid for this, Linux does not see the second logical drive. But GRUB can chainload Windows on it.

If installing Windows and Linux on a computer with two drives, it may be desirable to install each OS on one of the disks. Before installing, change the boot order in the BIOS. After installation, make the Windows disk the second disk and use GRUB to chainload it. This way, by reinstalling Windows, the MBR of the first disk will not get affected and if GRUB can't boot, it is still possible to boot Windows by changing the boot order in the BIOS.

If chainloading Windows with GRUB, the active partition of Windows has to be specified to GRUB. This is not always the same as the partition, which Windows labels the startpartition.

Example of installing GRUB on a USB hard drive
The key to understand GRUB is to remember, in what environment GRUB is running.

Suppose you have 3 internal SATA disks. A Gentoo is running on them and the goal is to install GRUB now on an external USB hard disk to boot a version of Gentoo, which is installed on the second partition of the USB disk.

The Linux system has the following device names:


 * , and : internal drives
 * : USB disk

The configuration of GRUB, which is read while booting, is stored in. in the same directory is a symlink to.

The kernel and the Linux system of the USB drive is installed in. Following the example, now edit, if you mounted the USB partition on.

When GRUB boots from the USB disk, for GRUB itself it is the first hard disk. It should be written in :

In contrast, the kernel sees the USB disk as, the  kernel parameter has to contain.

Here you give GRUB the names, under which Linux sees it now. First chroot into. You fire up GRUB, passing the root of the USB Linux with

Then tell GRUB to install on the MBR of the USB disk with:

Consequence: To boot the USB disk, regardless of how many disks are installed, you have to use an initramfs or something else.

If the  parameter doesn't match the actual configuration, you are not lost. It is possible to edit the lines before booting. How this can be done, is explained in Knowledge Base:Adjusting GRUB settings for a single boot session

To get the USB disk boot without initramfs regardless of the number of installed disks, use a GPT partition table and the  kernel parameter as explained in this external link: Mounting root partition by UUID (no initrd needed)

Since kernel 3.8 and newer it is possible to use MBR 32-bit UUID, so it's possible to use a MBR partition table as well.

In this case PARTUUID refer to an MBR partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-filled hex representation of the 32-bit "NT disk signature", and PP is a zero-filled hex representation of the 1-based partition number.

To get "NT disk signature" one possibility is using fdisk:

The output will be something like, so assuming root partition is , the resulting line will be

More info is available here: Description of PARTUUID feature

To use the  or the   boot parameter, an initramfs is required. An example of using labels (with lilo) can be found here: Install Gentoo on a bootable USB stick